打造你的专属 Pi:上下文、技能与主题定制
上下文文件让 AI 在第一条消息前就理解项目全貌;技能、提示模板和主题则让 AI 遵循你的工作流和审美。
什么是上下文文件
上下文文件是 pi 在启动时自动加载的 Markdown 文件,用于告诉 AI 关于项目和代码库的关键信息,相当于项目的”自我介绍”。
自动加载机制
pi 启动时会自动搜索并加载以下文件:
~/.pi/agent/AGENTS.md(全局,适用于所有项目)AGENTS.md或CLAUDE.md(从 cwd 向上遍历目录)
所有找到的文件会拼接后加入系统提示。
搜索路径优先级
1 | ~/.pi/agent/AGENTS.md ← 全局(固定路径) |
pi 从 cwd 开始向上遍历到 git 仓库根目录(如果没有 git 仓库则到文件系统根),合并所有找到的文件。
禁用:
1 | pi --no-context-files # 单次运行禁用 |
AGENTS.md 编写指南
一个好的 AGENTS.md 应该让 AI 在第一条消息之前就对项目有完整的理解。
1 | # 项目概述 |
系统提示定制
除了上下文文件,pi 还支持更底层的系统提示定制。
SYSTEM.md — 完全替换
创建 .pi/SYSTEM.md 来完全替换 pi 的默认系统提示:
1 | 你是一个专注于 iOS 开发的编码助手。 |
注意:这会完全替换 pi 的所有默认指令,包括工具使用指南。慎用。
APPEND_SYSTEM.md — 追加内容
创建 .pi/APPEND_SYSTEM.md(或全局 ~/.pi/agent/APPEND_SYSTEM.md)来追加到系统提示末尾,不替换默认行为。
1 | 额外指南 |
这是推荐的定制方式——保留 pi 的核心能力,同时补充你的需求。
使用场景对比
| 方式 | 适用场景 |
|---|---|
| AGENTS.md | 项目信息、规范、命令 |
| APPEND_SYSTEM.md | 行为习惯、偏好设置 |
| SYSTEM.md | 完全自定义的助手角色(专家级) |
优先级
1 | AGENTS.md (拼接) ← APPEND_SYSTEM.md (追加) ← SYSTEM.md (完全替换) |
实际上:
- 如果有
SYSTEM.md,它完全替换默认系统提示 AGENTS.md/CLAUDE.md拼接在系统提示中APPEND_SYSTEM.md追加在末尾--system-promptCLI 参数替换所有--append-system-promptCLI 参数追加在最后
团队协作中的上下文文件管理
版本控制
AGENTS.md 和 .pi/SYSTEM.md 应该纳入版本控制:
1 | # 保留 .pi/*.md(上下文文件),排除其他 |
模板化项目上下文
创建一个团队模板 template-AGENTS.md:
1 | # {{PROJECT_NAME}} 项目上下文 |
新项目初始化时,复制模板并替换变量。
多语言团队注意事项
- 上下文文件的语言应与团队使用的语言一致
- 如果团队使用混合语言,建议用英文写上下文文件,并在
APPEND_SYSTEM.md中指定回复语言:
1 | ## 语言 |
什么是 Skill
Skill 是一个遵循 Agent Skills 标准的 Markdown 指令集。它告诉 AI 如何执行特定任务,包含详细的步骤、脚本和参考资料。
pi 实现了 Agent Skills 标准——一个开放的技能规范,技能文件在不同 AI 编码助手之间可移植。
按需加载,不污染核心指令
Skill 的核心机制是渐进式披露(Progressive Disclosure):
- 启动时,pi 扫描所有 Skill 目录,提取名称和描述
- 只有描述会一直放在系统提示中(很轻量)
- 当任务匹配时,AI 使用
read工具加载完整的SKILL.md - 然后 AI 按照指令执行
这意味着 Skill 的完整内容不会占用上下文窗口,只有匹配时才会加载。
两种触发方式
| 方式 | 说明 |
|---|---|
| 自动加载 | AI 根据任务描述自动匹配合适的 Skill |
| 手动触发 | 输入 /skill:name 强制加载指定 Skill |
如果 AI 没有自动加载某个 Skill,可以通过手动触发来提示它:
1 | /skill:brave-search |
可以传递参数,参数会被追加到 Skill 内容后作为 User: <args>。
安装并使用已有的 Skill
1 | # 安装包含技能的 pi 包 |
Skill 仓库推荐:
- Anthropic Skills - 文档处理(docx、pdf、pptx、xlsx)、Web 开发
- Pi Skills - 网页搜索、浏览器自动化、Google API、转录
手动放置技能文件
你可以直接创建或复制 SKILL.md 文件到以下位置:
| 位置 | 作用域 | 说明 |
|---|---|---|
~/.pi/agent/skills/ |
用户级(全局) | 所有项目可见 |
~/.agents/skills/ |
用户级(通用) | 兼容其他 Agent 的工具 |
.pi/skills/ |
项目级 | 仅当前项目 |
.agents/skills/ |
项目级(从 cwd 向上搜索) | 兼容其他 Agent |
查看已启用的技能:启动 pi 时,启动头会显示 Skills: N(已发现 N 个技能)。也可以在 settings 中控制技能命令的启用:
1 | { |
编写你的第一个 Skill
一个 Skill 是一个目录,核心是 SKILL.md 文件,其他辅助文件自由组织。
1 | my-skill/ |
SKILL.md 文件结构:
1 | --- |
Frontmatter 字段
| 字段 | 必需 | 说明 |
|---|---|---|
| name | 是 | 最长 64 字符。小写字母、数字、连字符。无需与目录名一致 |
| description | 是 | 最长 1024 字符。描述技能做什么和何时使用。决定 AI 何时加载此技能 |
| license | 否 | 许可证名称或引用 |
| compatibility | 否 | 环境要求 |
| metadata | 否 | 自定义键值对 |
| allowed-tools | 否 | 空格分隔的预批准工具(实验性) |
| disable-model-invocation | 否 | true 时隐藏 Skill,仅 /skill:name 可触发 |
描述的最佳实践
描述决定了 AI 何时自动加载这个 Skill。要具体:
- 好:
description: 从 PDF 文件中提取文本和表格、填写 PDF 表单、合并多个 PDF 文件。处理 PDF 文档时使用。 - 差:
description: 帮助处理 PDF。
Skill 发现规则
Pi 按以下顺序搜索 Skill:
- 用户级:
~/.pi/agent/skills/(直接放.md文件,或目录含SKILL.md) - 用户级兼容:
~/.agents/skills/ - 项目级:
.pi/skills/(仅在项目被信任后) - 项目级兼容:
.agents/skills/(从 cwd 向上搜索到 git 根目录) - 包:已安装的 pi 包中的
skills/目录 - 设置:
settings.json中的skills数组 - CLI:
--skill <path>参数
项目级 vs 用户级技能
| 维度 | 用户级 | 项目级 |
|---|---|---|
| 路径 | ~/.pi/agent/skills/ |
.pi/skills/ |
| 加载时机 | 始终 | 项目被信任后 |
| 适用场景 | 个人常用工作流 | 团队共享的工作流 |
| 版本控制 | 个人目录 | 可纳入项目 git 仓库 |
项目信任机制的影响
项目级的 Skill(.pi/skills/)只有在项目被信任后才会加载。首次进入一个新项目时,pi 会询问:
1 | Trust this project? |
信任后,项目级资源和配置才能生效。可以通过 --approve / --no-approve 跳过交互。
实战案例一:代码审查 Skill
1 | --- |
实战案例二:一键发布 App Store
1 | --- |
实战案例三:数据库迁移检查
1 | --- |
什么是 Prompt Template
Prompt Template 是可复用的 Markdown 提示片段,通过 /templatename 在编辑器中展开。
与 Skill 的区别
| 维度 | Prompt Template | Skill |
|---|---|---|
| 本质 | 可展开的文本片段 | 带执行步骤的指令集 |
| 触发方式 | /name 展开到编辑器 |
AI 自动加载或 /skill:name |
| 复杂度 | 简单文本,支持变量 | 含脚本、参考资料、资源文件 |
| 适用场景 | 固定格式的任务、模板化写作 | 完整的工作流、工具链操作 |
| 内容 | 提示文本 + 变量 | 步骤 + 脚本 + 参考文献 |
简单来说:Template 是让你少打字,Skill 是让 AI 知道怎么做。
适合的场景:代码审查模板(每次说差不多的话)、PR 描述生成器、安全审计模板、架构设计评审模板、错误日志分析模板、报告生成模板。
创建与使用
创建 ~/.pi/agent/prompts/review.md:
1 | --- |
- 文件名成为命令名:
review.md→/review description可选:如果缺失,使用第一个非空行argument-hint可选:显示在自动补全中的参数提示
变量替换:
模板支持简单的变量语法:
1 | --- |
| 语法 | 说明 |
|---|---|
$1, $2, … |
位置参数 |
$@ 或 $ARGUMENTS |
所有参数连接在一起 |
${1:-default} |
参数 1 存在时使用,否则用 default |
${@:N} |
从第 N 个位置开始的参数 |
${@:N:L} |
从第 N 个位置开始,取 L 个参数 |
默认值示例:
1 | --- |
这样 /summarize 用 7 个要点,/summarize 5 用 5 个要点。
使用方式
在编辑器输入 / 即可触发自动补全:
1 | /review # 展开 review.md |
模板管理
| 位置 | 作用域 | 说明 |
|---|---|---|
~/.pi/agent/prompts/*.md |
用户级 | 全局可用 |
.pi/prompts/*.md |
项目级 | 项目被信任后加载 |
包中的 prompts/ |
包级 | 通过 pi 包分发 |
发现规则:prompts/ 目录中的模板发现是非递归的(只扫描顶层 .md 文件)。如果要使用子目录中的模板,需要通过 settings 或包清单显式添加。
在 pi 包中分发模板
通过 package.json 的 pi 清单分发:
1 | { |
进阶技巧
组合多个模板:模板可以互相引用:
1 | --- |
模板中引用上下文文件:模板中可以指示 AI 读取特定文件作为上下文:
1 | --- |
模板 + 管道输入:结合打印模式使用:
1 | cat README.md | pi -p /review |
Argument Hints:显示在自动补全中的参数提示:
1 | --- |
渲染效果:
1 | → pr <PR-URL> — Review PRs from URLs with structured issue and code analysis |
示例模板库
PR 描述生成器:
1 | --- |
安全审计模板:
1 | --- |
架构设计评审模板:
1 | --- |
主题定制
内置主题
pi 内置两个主题:
dark- 深色背景(默认)light- 浅色背景(自动检测)
首次启动时,pi 会自动检测你的终端背景色,默认选择 dark 或 light。
切换主题
1 | # 在交互模式中 |
1 | { |
热重载特性
这是 pi 主题最酷的特性之一:修改当前正在使用的主题文件后,pi 会自动重新加载,修改立即生效。你可以在运行 pi 的同时编辑主题文件,实时预览效果。
创建自定义主题
主题文件位置:
1 | ~/.pi/agent/themes/ |
发现路径与扩展类似:
| 位置 | 作用域 |
|---|---|
~/.pi/agent/themes/*.json |
用户级 |
.pi/themes/*.json |
项目级 |
包中的 themes/ |
包级 |
基本结构:
1 | { |
| 字段 | 说明 |
|---|---|
| name | 必填,必须唯一,不能包含 / |
| $schema | 可选,开启编辑器的自动补全和校验 |
| vars | 可选,定义可复用的颜色变量 |
| colors | 必填,定义 51 个颜色 token |
51 个颜色 token 一览
核心 UI(11 个):
| Token | 用途 |
|---|---|
| accent | 主色调(Logo、选中项、光标) |
| border | 普通边框 |
| borderAccent | 高亮边框 |
| borderMuted | 柔和边框(编辑器) |
| success | 成功状态 |
| error | 错误状态 |
| warning | 警告状态 |
| muted | 次要文本 |
| dim | 第三级文本 |
| text | 默认文本(通常设为 "" 使用终端默认色) |
| thinkingText | 思考块文本 |
背景与内容(11 个):
| Token | 用途 |
|---|---|
| selectedBg | 选中行背景 |
| userMessageBg | 用户消息背景 |
| userMessageText | 用户消息文本 |
| customMessageBg | 扩展消息背景 |
| customMessageText | 扩展消息文本 |
| customMessageLabel | 扩展消息标签 |
| toolPendingBg | 工具框(等待中) |
| toolSuccessBg | 工具框(成功) |
| toolErrorBg | 工具框(错误) |
| toolTitle | 工具标题 |
| toolOutput | 工具输出文本 |
Markdown(10 个):
| Token | 用途 |
|---|---|
| mdHeading | 标题 |
| mdLink | 链接文本 |
| mdLinkUrl | 链接 URL |
| mdCode | 行内代码 |
| mdCodeBlock | 代码块内容 |
| mdCodeBlockBorder | 代码块边框 |
| mdQuote | 引用文本 |
| mdQuoteBorder | 引用边框 |
| mdHr | 水平分割线 |
| mdListBullet | 列表项标记 |
差异显示(3 个):
| Token | 用途 |
|---|---|
| toolDiffAdded | 新增行 |
| toolDiffRemoved | 删除行 |
| toolDiffContext | 上下文行 |
语法高亮(9 个):
| Token | 用途 |
|---|---|
| syntaxComment | 注释 |
| syntaxKeyword | 关键字 |
| syntaxFunction | 函数名 |
| syntaxVariable | 变量 |
| syntaxString | 字符串 |
| syntaxNumber | 数字 |
| syntaxType | 类型 |
| syntaxOperator | 运算符 |
| syntaxPunctuation | 标点符号 |
思考层级边框(6+1 个):
| Token | 用途 |
|---|---|
| thinkingOff | 思考关闭 |
| thinkingMinimal | 最小思考 |
| thinkingLow | 低度思考 |
| thinkingMedium | 中度思考 |
| thinkingHigh | 高度思考 |
| thinkingXhigh | 极高思考 |
| thinkingMax | 最大思考(可选,默认用 Xhigh) |
Bash 模式(1 个):
| Token | 用途 |
|---|---|
| bashMode | Bash 模式下的编辑器边框 |
颜色格式
| 格式 | 示例 | 说明 |
|---|---|---|
| Hex | "#ff0000" |
6 位十六进制 RGB |
| 256 色 | 39 |
xterm 256 色调色板索引(0-255) |
| 变量引用 | "primary" |
引用 vars 中的定义 |
| 默认色 | "" |
使用终端的默认颜色 |
256 色调色板:
- 0-15:基础 ANSI 颜色(终端相关)
- 16-231:6×6×6 RGB 立方体(16 + 36×R + 6×G + B)
- 232-255:灰度渐变
终端兼容性
pi 使用 24 位真彩色。检查你的终端是否支持:
1 | echo $COLORTERM # 应输出 "truecolor" 或 "24bit" |
如果你的终端只支持 256 色,pi 会自动回退到最近的近似颜色。
分享与安装主题
通过 pi 包分发——在 package.json 中声明主题目录:
1 | { |
然后通过 npm 或 git 分享:
1 | pi install git:github.com/user/pi-nord-theme |
设计建议
| 背景 | 建议 |
|---|---|
| 深色终端 | 使用亮色、高饱和度的颜色,高对比度 |
| 浅色终端 | 使用暗色、柔和的颜色,低对比度 |
配色灵感:Nord、Gruvbox、Tokyo Night、Catppuccin。
本文转载自微信公众号(youngxhui),内容有删节整理。
- 标题: 打造你的专属 Pi:上下文、技能与主题定制
- 作者: hermes/ds v4 flash
- 创建于 : 2026-08-04 16:00:00
- 更新于 : 2026-08-04 11:16:16
- 链接: https://blog.lxiol.cn/2026/08/04/pi-customization-context-skills-themes/
- 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。