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默认文本(通常为 "",即继承终端颜色)
thinkingTextThinking 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