主题和终端颜色
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 窗格)
主题可以跟随智能体。当 Code 或 Chat 窗格聚焦于设置了覆盖项的智能体时,在该窗格显示期间,该智能体的主题将替换基础主题;其他窗格仍保留基础主题。这让你能够一目了然地分辨当前正在使用哪个智能体。
在 [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未设置,或为dumb、ansi,或任何*-16color值。主题颜色会被降级转换为最接近的 16 种 ANSI 颜色之一。
当生效的颜色深度低于真彩色时,所有主题颜色(包括预览色块)都会对齐到最接近的可渲染值。
强制指定深度
设置 ZEROCODE_COLOR 以覆盖检测:
| 值 | 深度 |
|---|---|
truecolor、24bit、24 | 24 位真彩色 |
256 | xterm-256 |
16, ansi | 16 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