Keyboard shortcuts

Press or to navigate between chapters

Press ? to show this help

Press Esc to hide this help

主题和终端颜色

zerocode 内置了一组命名颜色主题,让每个 agent 在 Code 和 Chat 窗格中可以使用各自的主题,并会根据终端的渲染能力调整其颜色输出。

所有主题设置都保存在 zerocode 自己的配置中,与 zerocode 连接到哪个守护进程无关。

选择主题

打开 Config 窗格,切换到 zerocode 部分,然后选择 Theme 选项卡。使用 /k/j 进行导航;按 Enter 应用。所选项会立即生效,并持久化保存到 zerocode 的配置中。高亮显示的行会内联预览该主题的调色板,即一组色块,分别对应其 canvas、title、heading、body、warn 和 tool 角色,以便你在应用前就能查看这些颜色。

可用主题

其中一个主题直接在 zerocode 中编写,因为它没有注册表条目:

  • terminal:继承终端自身的颜色。每个角色都保留终端默认值,应用不会绘制背景,因此经过调校的 shell 调色板可以原样显示。

真实的调色板是在构建时从仪表盘主题注册表(web/src/contexts/themes.json)生成的,这是 zerocode、React 仪表盘以及本文档共同读取的唯一可信来源。下方列表由 cargo xtask mdbook themes 生成并在构建时引入。它永远不会被提交:

深色: operator_dark, ayu_dark, catppuccin_mocha, cobalt2, code_red, default_dark, icy_blue, dracula, everforest_dark, flexoki_dark, gruvbox_dark, hacker_green, hazard, high_contrast_dark, kanagawa_dragon, kanagawa_wave, material_dark, monokai, night_owl, nord_dark, oled_black, one_dark, rose_pine, rose_pine_moon, solarized_dark, tokyo_night

浅色: operator_light, catppuccin_latte, default_light, everforest_light, flexoki_light, gruvbox_light, high_contrast_white, kanagawa_lotus, material_light, nord_light, one_light, rose_pine_dawn, solarized_light, tokyo_night_day

默认主题在 macOS 上为 terminal,在其他所有平台上为 icy_blue

如果 [theme].name(或下方的某个按代理覆盖的设置)所指定的主题在此构建中不存在、存在拼写错误,或是由更新版本的构建所写入的配置,zerocode 会回退到 terminal 主题,而非拒绝启动。

每个代理的主题(Code 和 Chat 窗格)

主题可以跟随智能体。当 CodeChat 窗格聚焦于设置了覆盖项的智能体时,在该窗格显示期间,该智能体的主题将替换基础主题;其他窗格仍保留基础主题。这让你能够一目了然地分辨当前正在使用哪个智能体。

[theme.agent_override.<alias>] 下配置覆盖项:

从 UI 设置覆盖项

在 Config 窗格的 zerocode 部分中,打开 Agent Themes 选项卡。其中列出了守护进程已启用的代理,并显示每个代理当前的覆盖设置(无覆盖时显示 )。页脚显示了相应的按键。

  • 在 agent 上按 Enter 会以分配模式打开 Theme 列表(标题为 Theme → <agent>);选择一个主题即可将其分配给该 agent。
  • d 清除高亮显示的代理的覆盖设置。

赋值和清除操作实时生效:Code/Chat 窗格会在下一帧重新应用主题,无需重启 zerocode,并且这些更改会持久化到 zerocode 的配置中。指定未知主题的覆盖设置将回退到 terminal 主题,与全局设置的行为相同。

终端颜色深度

zerocode 会检测您的终端能够渲染多少种颜色,并在首次绘制时一次性调整其输出:

  • 真彩色(24 位) 是几乎所有终端的默认设置。zerocode 输出 24 位颜色,现代终端以及为此配置的终端多路复用器可直接渲染。
  • xterm-256 用于 macOS 的 Terminal.app,因为它不支持 24 位色(通过 TERM_PROGRAM=Apple_Terminal 检测)。iTerm2、kitty、WezTerm、Ghostty 以及其他支持真彩色的终端不受影响。
  • ANSI-16 仅用于真正的低色彩终端:TERM 未设置,或为 dumbansi,或任何 *-16color 值。主题颜色会被降级转换为最接近的 16 种 ANSI 颜色之一。

当生效的颜色深度低于真彩色时,所有主题颜色(包括预览色块)都会对齐到最接近的可渲染值。

强制指定深度

设置 ZEROCODE_COLOR 以覆盖检测:

深度
truecolor24bit2424 位真彩色
256xterm-256
16, ansi16 ANSI 色彩

sh

ZEROCODE_COLOR=256 zerocode

任何无法识别的值都将被忽略,并执行正常检测。

tmux:颜色显示错误或发灰

如果你在 tmux 中运行 zerocode(通常是通过 SSH 连接到 Raspberry Pi 或其他远程主机),而调色板渲染效果显得平淡或接近单色,原因几乎总是 tmux 没有为外层终端声明 truecolor(RGB)支持。zerocode 会输出 24 位色彩,但只有当 tmux 知道终端支持 RGB 时,才会将其转发到你的终端。

通过将以下内容添加到远程机器的 ~/.tmux.conf 中,告知 tmux 客户端支持 RGB:

set -as terminal-features ",*:RGB"

然后重启 tmux 服务器以使更改生效:

sh

tmux kill-server

重新连接后,zerocode 的真彩色输出将正确呈现。

作为一种无需更改 tmux 的替代方案,可强制使用不依赖真彩色透传的较低色深:

sh

ZEROCODE_COLOR=256 zerocode