Skip to content

Pi Agent 主题定制 ​

Pi Agent 支持自定义终端界面配色。

本章介绍如何使用内置主题和创建自定义主题。


主题概述 ​

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

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


内置主题 ​

Pi Agent 内置了两个主题:

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

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

交互模式下输入 /settings,在主题选项中直接切换:

bash
/settings

也可以在 settings.json 中写入 theme 字段,把 theme 的值改成主题名即可:

实例 ​

json

{

  "theme": "light"

}

创建自定义主题 ​

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

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

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

实例 ​

bash

{

  "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 中启用你的主题:

实例 ​

json

{

  "theme": "my-theme"

}

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


主题文件加载位置 ​

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 中通过名称引用。

把主色抽成变量后,换配色只需要改一处,主题维护起来更方便。


颜色令牌分类 ​

colors 中每个令牌对应界面上一类元素的颜色。

下面按用途把全部令牌分成六类,方便对照查找。

核心 UI(11 个) ​

这一组控制编辑器、状态栏等基础界面元素的颜色。

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

背景与内容(11 个必填 + 3 个可选) ​

这一组控制选中项、消息气泡和工具输出区域的背景与文字。

令牌用途
selectedBg选中项背景(列表中的当前条目)
userMessageBg用户消息背景
userMessageText用户消息文字
customMessageBg扩展消息背景
customMessageText扩展消息文字
customMessageLabel扩展消息的标题标签色
toolPendingBg工具执行中背景
toolSuccessBg工具执行成功背景
toolErrorBg工具执行失败背景
toolTitle工具卡片标题文字
toolOutput工具输出文字
scrollbarThumb全屏滚动条拇指色(可选,缺省时回退 selectedBg)
searchMatchBg搜索匹配背景(可选,缺省时回退 selectedBg)
searchMatchText搜索匹配文字(可选,缺省时回退 text)

Markdown 渲染(10 个) ​

这一组控制 AI 回复中 Markdown 元素的颜色。

令牌用途
mdHeading标题
mdLink链接文字
mdLinkUrl链接的 URL 地址
mdCode行内代码
mdCodeBlock代码块内容
mdCodeBlockBorder代码块边框
mdQuote引用块文字
mdQuoteBorder引用块边框
mdHr分隔线
mdListBullet列表符号

语法高亮(9 个) ​

这一组控制代码块内的语法高亮配色。

令牌用途
syntaxComment注释
syntaxKeyword关键字
syntaxFunction函数名
syntaxVariable变量名
syntaxString字符串
syntaxNumber数字
syntaxType类型
syntaxOperator运算符
syntaxPunctuation标点符号

推理等级边框(7 个) ​

这一组控制当前推理等级在编辑器边框上的提示色。

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

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

Diff 与 Bash 配色(4 个) ​

这一组控制 diff 高亮和 bash 模式提示色,编辑代码时最常看到它们。

令牌用途
toolDiffAddeddiff 新增行(通常用绿色)
toolDiffRemoveddiff 删除行(通常用红色)
toolDiffContextdiff 上下文行(保持低调)
bashModebash 模式下的提示色

HTML 导出配色 ​

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

实例 ​

json

{

  "export": {

    "pageBg": "#18181e",

    "cardBg": "#1e1e24",

    "infoBg": "#3c3728"

  }

}

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


主题制作技巧 ​

下面几条经验能让自定义主题在不同终端上都表现稳定。

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

AI 思考中...

Pi Agent 键盘快捷键定制

Pi Agent 提示词模板

基于 VitePress 构建,部署于 GitHub Pages