主题
主题是定义 TUI 颜色的 JSON 文件。
加载位置
Pi 从以下位置加载主题:
- 内置:
dark、light - 全局:
~/.pi/agent/themes/*.json - 项目:
.pi/themes/*.json - 包:
themes/目录或package.json中的pi.themes条目 - 设置:
themes数组,包含文件或目录 - CLI:
--theme <path>(可重复)
使用 --no-themes 禁用发现。
选择主题
通过 /settings 或在 settings.json 中选择主题:
首次运行时,Pi 检测终端背景并默认选择 dark 或 light。
创建自定义主题
- 创建主题文件:
- 定义主题,包含所有必需颜色(见颜色标记):
- 通过
/settings选择主题。
热重载: 编辑当前活跃的自定义主题文件时,Pi 会自动重新加载,提供即时的视觉反馈。
主题结构
name是必需的,且必须唯一。vars是可选的。在此定义可复用的颜色,然后在colors中引用。colors必须定义全部 51 个必需标记。
$schema 字段启用编辑器自动补全和验证。
颜色标记
每个主题必须定义全部 51 个颜色标记。没有可选颜色。
核心 UI(11 个颜色)
背景与内容(11 个颜色)
Markdown(10 个颜色)
工具 Diff(3 个颜色)
语法高亮(9 个颜色)
思考级别边框(6 个颜色)
编辑器边框颜色指示思考级别(从柔和到醒目的视觉层次):
Bash 模式(1 个颜色)
HTML 导出(可选)
export 部分控制 /export HTML 输出的颜色。如果省略,颜色从 userMessageBg 派生。
颜色格式
支持四种格式:
256 色调色板
0-15:基本 ANSI 颜色(取决于终端)16-231:6x6x6 RGB 立方体(16 + 36xR + 6xG + B,其中 R、G、B 为 0-5)232-255:灰度渐变
终端兼容性
Pi 使用 24 位 RGB 颜色。大多数现代终端都支持(iTerm2、Kitty、WezTerm、Windows Terminal、VS Code)。对于仅支持 256 色的旧终端,Pi 会回退到最接近的近似值。
检查 truecolor 支持:
提示
深色终端: 使用明亮、饱和的颜色,提高对比度。
浅色终端: 使用较深、柔和的颜色,降低对比度。
色彩和谐: 从基础调色板开始(Nord、Gruvbox、Tokyo Night),在 vars 中定义,并一致引用。
测试: 使用不同的消息类型、工具状态、Markdown 内容和长换行文本检查你的主题。
VS Code: 将 terminal.integrated.minimumContrastRatio 设为 1 以获得准确的颜色。