Themes 是定义 TUI 颜色的 JSON 文件,支持热重载。
加载位置
- 内置:
dark、light(首次运行自动检测终端背景选择默认) ~/.pi/agent/themes/*.json— 全局用户主题.pi/themes/*.json— 项目级(需项目信任)pi install安装的包中的themes/目录或pi.themes字段settings.json中的themes数组- CLI
--theme <path>
用 --no-themes 禁用主题发现。
选择主题
通过 /settings 或 settings.json:
{ "theme": "my-theme" }创建主题
mkdir -p ~/.pi/agent/themes
vim ~/.pi/agent/themes/my-theme.json最小结构:
{
"$schema": "https://raw.githubusercontent.com/earendil-works/pi/main/packages/coding-agent/src/modes/interactive/theme/theme-schema.json",
"name": "my-theme",
"vars": {
"blue": "#0066cc",
"gray": 242
},
"colors": {
"accent": "blue",
"muted": "gray",
...
}
}name:必填,全局唯一,不含/vars:可选,定义可复用颜色变量,在colors中通过名称引用colors:必须定义全部 51 个 token,无可选项
$schema 字段启用编辑器自动补全和校验。
热重载:编辑正在激活的主题文件时,pi 立即应用变更,无需重启。
51 个 Color Token
Core UI(11 个)
| Token | 用途 |
|---|---|
accent | 主强调色(logo、选中项、光标) |
border | 普通边框 |
borderAccent | 高亮边框 |
borderMuted | 次要边框(编辑器) |
success | 成功状态 |
error | 错误状态 |
warning | 警告状态 |
muted | 次要文本 |
dim | 第三级文本 |
text | 默认文本(通常为 "",即继承终端颜色) |
thinkingText | Thinking block 文本 |
Backgrounds & Content(11 个)
selectedBg、userMessageBg、userMessageText、customMessageBg、customMessageText、customMessageLabel、toolPendingBg、toolSuccessBg、toolErrorBg、toolTitle、toolOutput
Markdown(10 个)
mdHeading、mdLink、mdLinkUrl、mdCode、mdCodeBlock、mdCodeBlockBorder、mdQuote、mdQuoteBorder、mdHr、mdListBullet
Tool Diffs(3 个)
toolDiffAdded、toolDiffRemoved、toolDiffContext
Syntax Highlighting(10 个)
syntaxComment、syntaxKeyword、syntaxFunction、syntaxVariable、syntaxString、syntaxNumber、syntaxType、syntaxOperator、syntaxPunctuation、bashMode
Thinking Levels(6 个)
thinkingOff、thinkingMinimal、thinkingLow、thinkingMedium、thinkingHigh、thinkingXhigh
颜色值格式
| 格式 | 示例 |
|---|---|
| 十六进制 | "#ff6600" |
| ANSI 256 色数字 | 242 |
vars 中定义的变量名 | "blue" |
| 空字符串 | "" (使用终端默认色) |
分发
通过 pi-packages 打包发布:
{ "pi": { "themes": ["./themes"] } }相关页面:pi-tui | pi-packages