现在位置: 首页 > Pi Agent > 正文

Pi Agent 主题定制

Pi Agent 支持自定义终端界面配色。本章介绍如何使用内置主题和创建自定义主题。


主题概述

Pi Agent 使用 JSON 格式的主题文件来定义 TUI 界面的所有颜色。

每个主题需要定义 51 个颜色令牌(Color Token),覆盖核心 UI、消息背景、Markdown 渲染、语法高亮和编辑器边框等各种界面元素的颜色。


内置主题

Pi Agent 内置了两个主题:

主题名适用场景说明
dark深色终端背景(默认)适合绝大多数开发者的深色终端
light浅色终端背景适合浅色主题的终端

首次启动时,Pi Agent 会自动检测你的终端背景颜色并选择 dark 或 light。

切换主题的方式:

# 通过 /settings 交互式切换
/settings

# 在 settings.json 中设置

实例

{
  "theme": "light"
}

创建自定义主题

首先创建主题目录和文件:

$ mkdir -p ~/.pi/agent/themes
$ vim ~/.pi/agent/themes/my-theme.json

然后定义主题文件,以下是一个完整的自定义主题示例:

实例

{
  "name": "my-theme",
  "vars": {
    "blue": "#0066cc",
    "gray": 242,
    "orange": "#ffaa00",
    "green": "#00aa55"
  },
  "colors": {
    "accent": "blue",
    "border": "blue",
    "borderAccent": "#00ffff",
    "borderMuted": "gray",
    "success": "green",
    "error": "#ff0000",
    "warning": "#ffff00",
    "muted": "gray",
    "dim": 240,
    "text": "",
    "thinkingText": "gray",
    "selectedBg": "#2d2d30",
    "userMessageBg": "#2d2d30",
    "userMessageText": "",
    "customMessageBg": "#2d2d30",
    "customMessageText": "",
    "customMessageLabel": "blue",
    "toolPendingBg": "#1e1e2e",
    "toolSuccessBg": "#1e2e1e",
    "toolErrorBg": "#2e1e1e",
    "toolTitle": "blue",
    "toolOutput": "",
    "mdHeading": "orange",
    "mdLink": "blue",
    "mdLinkUrl": "gray",
    "mdCode": "#00ffff",
    "mdCodeBlock": "",
    "mdCodeBlockBorder": "gray",
    "mdQuote": "gray",
    "mdQuoteBorder": "gray",
    "mdHr": "gray",
    "mdListBullet": "#00ffff",
    "toolDiffAdded": "green",
    "toolDiffRemoved": "#ff0000",
    "toolDiffContext": "gray",
    "syntaxComment": "gray",
    "syntaxKeyword": "blue",
    "syntaxFunction": "#00aaff",
    "syntaxVariable": "orange",
    "syntaxString": "green",
    "syntaxNumber": "#ff00ff",
    "syntaxType": "#00aaff",
    "syntaxOperator": "blue",
    "syntaxPunctuation": "gray",
    "thinkingOff": "gray",
    "thinkingMinimal": "blue",
    "thinkingLow": "#00aaff",
    "thinkingMedium": "#00ffff",
    "thinkingHigh": "#ff00ff",
    "thinkingXhigh": "#ff0000",
    "thinkingMax": "#ff0088",
    "bashMode": "orange"
  }
}

然后在 settings.json 中启用你的主题:

实例

{
  "theme": "my-theme"
}

当你编辑当前正在使用的自定义主题文件时,Pi Agent 会自动热重载主题,让你立即看到修改效果,无需任何操作。


主题文件加载位置

位置作用范围
内置dark、light 始终可用
~/.pi/agent/themes/*.json全局主题,所有项目可用
.pi/themes/*.json项目主题,需项目信任后才加载
Pi Packages包中的 themes/ 目录
--theme 路径命令行临时加载

颜色值格式

Pi Agent 支持四种颜色值格式:

格式示例说明
Hex 颜色"#ff0000"6 位十六进制 RGB 颜色
256 色调色板39xterm 256 色调色板索引(0-255)
变量引用"blue"引用 vars 中定义的变量
终端默认色""使用终端的默认前景/背景色

vars 区域用于定义可复用的颜色变量,在 colors 中通过名称引用。这让主题的维护更加方便。


颜色令牌分类

核心 UI(11 个)

令牌用途
accent主色调(Logo、选中项、光标)
border普通边框
borderAccent高亮边框
borderMuted编辑器区域的柔和边框
success成功状态
error错误状态
warning警告状态
muted次要文字
dim三级文字(更不显眼)
text默认文字色(通常留空)
thinkingTextAI 推理过程文字

背景与内容(11 个)

令牌用途
userMessageBg用户消息背景
userMessageText用户消息文字
customMessageBg扩展消息背景
toolPendingBg工具执行中背景
toolSuccessBg工具执行成功背景
toolErrorBg工具执行失败背景

Markdown 渲染(10 个)

令牌用途
mdHeading标题
mdLink链接文字
mdCode行内代码
mdCodeBlock代码块内容
mdQuote引用块文字
mdListBullet列表符号

语法高亮(9 个)

令牌用途
syntaxComment注释
syntaxKeyword关键字
syntaxFunction函数名
syntaxString字符串
syntaxNumber数字
syntaxType类型

推理等级边框(7 个)

令牌对应等级
thinkingOff推理关闭
thinkingMinimal最少推理
thinkingLow低度推理
thinkingMedium中度推理
thinkingHigh高度推理
thinkingXhigh超高度推理
thinkingMax最大推理(可选)

thinkingMax 是可选令牌,如果不定义则回退使用 thinkingXhigh 的颜色。


HTML 导出配色

如果你使用 /export 导出会话为 HTML,可以在主题中为导出页面定义配色:

实例

{
  "export": {
    "pageBg": "#18181e",
    "cardBg": "#1e1e24",
    "infoBg": "#3c3728"
  }
}

如果省略 export 配置,导出页面会从 userMessageBg 自动推导颜色。


主题制作技巧

  • 深色终端:使用明亮、饱和的颜色,对比度要足够高
  • 浅色终端:使用较深、柔和的颜色,对比度可以适当降低
  • 色彩和谐:参考 Nord、Gruvbox、Tokyo Night 等成熟配色方案作为基础
  • 全面测试:确保在不同消息类型、工具状态、Markdown 内容和长文本折行下都能正常显示