🏖️ OSS 周末休息中
问题追踪器(Issue tracker)将于 2026 年 3 月 30 日(星期一)重新开放。
OSS 周末时间为 2026 年 3 月 22 日(星期日)至 2026 年 3 月 30 日(星期一)。在此期间提交的新 Issue 将被自动关闭。如需支持,请加入 Discord。
Pi 是一个极简的终端编码辅助工具(Coding Harness)。让 Pi 适应你的工作流,而不是让你去适应它,且无需分叉(Fork)或修改 Pi 的内部代码。你可以通过 TypeScript 扩展 (Extensions)、技能 (Skills)、提示词模板 (Prompt Templates) 和 主题 (Themes) 来增强它。将你的扩展、技能、模板和主题放入 Pi 包 (Pi Packages) 中,即可通过 npm 或 git 与他人分享。
Pi 内置了强大的默认功能,但去掉了诸如“子智能体(Sub agents)”和“计划模式(Plan mode)”之类的复杂功能。相反,你可以要求 Pi 构建你想要的功能,或者安装符合你工作流的第三方 Pi 包。
Pi 以四种模式运行:交互模式、打印或 JSON 模式、用于进程集成的 RPC 模式,以及用于嵌入你自己应用的 SDK。有关真实的 SDK 集成案例,请参阅 openclaw/openclaw。
快速开始
code Bash
downloadcontent_copy
expand_less
npm install -g @mariozechner/pi-coding-agent
使用 API 密钥进行身份验证:
code Bash
downloadcontent_copy
expand_less
export ANTHROPIC_API_KEY=sk-ant-...
pi
或者使用你现有的订阅:
code Bash
downloadcontent_copy
expand_less
pi
/login # 然后选择供应商
接着只需与 Pi 对话即可。默认情况下,Pi 为模型提供四个工具:read(读取)、write(写入)、edit(编辑)和 bash(终端命令)。模型使用这些工具来完成你的请求。你可以通过技能、提示词模板、扩展或 Pi 包来增加能力。
平台说明: Windows | Termux (Android) | tmux | 终端设置 | Shell 别名
供应商与模型
对于每个内置供应商,Pi 都会维护一份支持工具调用的模型列表,并在每次发布时更新。你可以通过订阅(/login)或 API 密钥进行身份验证,然后通过 /model(或 Ctrl+L)选择该供应商的任何模型。
支持订阅的供应商:
- Anthropic Claude Pro/Max
- OpenAI ChatGPT Plus/Pro (Codex)
- GitHub Copilot
- Google Gemini CLI
- Google Antigravity
支持 API 密钥的供应商:
- Anthropic, OpenAI, Azure OpenAI, Google Gemini, Google Vertex, Amazon Bedrock
- Mistral, Groq, Cerebras, xAI, OpenRouter
- Vercel AI Gateway, ZAI, OpenCode Zen, OpenCode Go, Hugging Face
- Kimi For Coding, MiniMax
详细设置说明请参阅 docs/providers.md。
自定义供应商与模型: 如果第三方供应商支持标准的 API(OpenAI、Anthropic、Google),可以通过 ~/.pi/agent/models.json 添加。对于自定义 API 或 OAuth,请使用扩展。参见 docs/models.md 和 docs/custom-provider.md。
交互模式
界面从上到下依次为:
- 启动页眉 - 显示快捷键(输入 /hotkeys 查看全部)、加载的 AGENTS.md 文件、提示词模板、技能和扩展。
- 消息区 - 你的消息、助手回复、工具调用及结果、通知、错误和扩展 UI。
- 编辑器 - 输入区域;边框颜色表示当前的“思考等级(Thinking level)”。
- 页脚 - 工作目录、会话名称、总 Token/缓存使用量、成本、上下文占用率、当前模型。
编辑器可以临时被其他 UI 替换,例如内置的 /settings 或来自扩展的自定义 UI(例如让用户以结构化格式回答模型问题的 Q&A 工具)。扩展 还可以替换编辑器、在编辑器上方/下方添加小部件、状态栏、自定义页脚或叠加层。
编辑器
| 功能 | 操作方式 |
|---|---|
| 文件引用 | 输入 @ 模糊搜索项目文件 |
| 路径补全 | 按 Tab 键补全路径 |
| 多行输入 | Shift+Enter (Windows Terminal 上为 Ctrl+Enter) |
| 图片 | Ctrl+V 粘贴 (Windows 为 Alt+V),或拖入终端 |
| Bash 命令 | !command 运行并发送输出给 LLM,!!command 仅运行不发送 |
标准编辑快捷键(如删除单词、撤销等)均适用。参见 docs/keybindings.md。
命令
在编辑器中输入 / 触发命令。扩展 可以注册自定义命令,技能 可通过 /skill:name 使用,提示词模板 通过 /模板名 展开。
| 命令 | 描述 |
|---|---|
| /login, /logout | OAuth 身份验证 |
| /model | 切换模型 |
| /scoped-models | 启用/禁用用于 Ctrl+P 循环切换的模型 |
| /settings | 思考等级、主题、消息传递方式、传输协议 |
| /resume | 从之前的会话中选择继续 |
| /new | 开始新会话 |
| /name | 设置会话显示名称 |
| /session | 显示会话信息(路径、Token、成本) |
| /tree | 跳转到会话中的任何一点并从那里继续 |
| /fork | 从当前分支创建一个新会话 |
| /compact [prompt] | 手动压缩上下文,可选自定义指令 |
| /copy | 复制助手的最后一条消息到剪贴板 |
| /export [file] | 导出会话为 HTML 文件 |
| /share | 上传为私有 GitHub Gist 并生成可分享的 HTML 链接 |
| /reload | 重新加载按键绑定、扩展、技能、提示词和上下文文件 |
| /hotkeys | 显示所有快捷键 |
| /quit, /exit | 退出 Pi |
快捷键
输入 /hotkeys 查看完整列表。可通过 ~/.pi/agent/keybindings.json 自定义。
常用快捷键:
| 按键 | 动作 |
|---|---|
| Ctrl+C | 清空编辑器 |
| Ctrl+C 两次 | 退出 |
| Escape | 取消/中止 |
| Escape 两次 | 打开 /tree |
| Ctrl+L | 打开模型选择器 |
| Ctrl+P / Shift+Ctrl+P | 向前/向后循环切换已选模型 |
| Shift+Tab | 切换思考等级 (Thinking level) |
| Ctrl+O | 折叠/展开工具输出 |
| Ctrl+T | 折叠/展开思考块 (Thinking blocks) |
消息队列
在智能体工作时提交消息:
- Enter: 排队一条 指导 (steering) 消息,在当前助手回合执行完工具调用后立即发送。
- Alt+Enter: 排队一条 后续 (follow-up) 消息,仅在智能体完成所有工作后发送。
- Escape: 中止运行并将排队的消息恢复到编辑器。
- Alt+Up: 将排队的消息取回编辑器。
会话管理
会话存储为具有树状结构的 JSONL 文件。每个条目都有 id 和 parentId,支持在原地分支而无需创建新文件。参见 docs/session.md。
管理
会话自动保存到 ~/.pi/agent/sessions/,按工作目录组织。
code Bash
downloadcontent_copy
expand_less
pi -c # 继续最近的会话
pi -r # 浏览并选择过去的会话
pi --no-session # 临时模式(不保存)
pi --session <path> # 使用特定的会话文件或 ID
分支
/tree - 在原地导航会话树。选择之前的任何一点继续,并在不同分支间切换。所有历史记录保存在一个文件中。
- 通过输入进行搜索,使用 Ctrl+←/→ 折叠/展开和跳转分支。
- 过滤模式 (Ctrl+O): 默认 → 无工具 → 仅用户 → 仅标记 → 全部。
- 按 l 将条目标记为书签。
压缩 (Compaction)
长会话会耗尽上下文窗口。压缩会总结旧消息,同时保留最近的消息。
手动: /compact 或 /compact <自定义指令>
自动: 默认开启。在上下文溢出或接近限制时触发。
自定义
提示词模板 (Prompt Templates)
作为 Markdown 文件的可重用提示词。输入 /名称 即可展开。
code Markdown
downloadcontent_copy
expand_less
<!-- ~/.pi/agent/prompts/review.md -->
检查此代码是否存在错误、安全问题和性能问题。
关注点:{{focus}}
技能 (Skills)
遵循 Agent Skills 标准 的按需能力包。通过 /skill:名称 调用或让智能体自动加载。参见 docs/skills.md。
扩展 (Extensions)
TypeScript 模块,用于通过自定义工具、命令、快捷键、事件处理器和 UI 组件扩展 Pi。
code TypeScript
downloadcontent_copy
expand_less
export default function (pi: ExtensionAPI) {
pi.registerTool({ name: "deploy", ... });
pi.registerCommand("stats", { ... });
pi.on("tool_call", async (event, ctx) => { ... });
}
可能实现的场景:
- 自定义工具(或替换内置工具)
- 子智能体和计划模式
- 自定义压缩和总结逻辑
- 权限门控和路径保护
- Git 检查点和自动提交
- MCP 服务器集成
- 甚至在等待时玩 Doom 游戏
Pi 包 (Pi Packages)
通过 npm 或 git 捆绑并分享扩展、技能、提示词和主题。
安全提示: Pi 包运行时具有完整的系统访问权限。在安装第三方包之前,请务必检查源代码。
code Bash
downloadcontent_copy
expand_less
pi install npm:@foo/pi-tools # 安装
pi list # 列出
pi update # 更新
哲学
Pi 具有极强的可扩展性,因此它不必规定你的工作流程。
没有 MCP。 使用 README 构建 CLI 工具(参见技能),或者构建一个添加 MCP 支持的扩展。为什么?
没有子智能体。 这种实现方式有很多。可以通过 tmux 启动 Pi 实例,或者用扩展构建你自己的。
没有权限弹窗。 在容器中运行,或者用扩展构建你自己的确认流程。
没有计划模式。 将计划写入文件,或通过扩展实现。
没有背景 Bash。 使用 tmux。它提供完全的可观察性和直接交互。
CLI 参考 (部分)
| 标志 | 描述 |
|---|---|
| (默认) | 交互模式 |
| -p, --print | 打印响应并退出 |
| --mode json | 以 JSON 行形式输出所有事件 |
| --mode rpc | 进程集成的 RPC 模式 |
| --model | 指定模型(支持 provider/model:thinking 格式) |
| --thinking | 设置思考等级 (off 到 xhigh) |
| -e, --extension | 从路径、npm 或 git 加载扩展 |
示例:
code Bash
downloadcontent_copy
expand_less
# 带有初始提示词的交互模式
pi "列出 src/ 下的所有 .ts 文件"
# 非交互模式
pi -p "总结这个代码库"
# 管道输入
cat README.md | pi -p "总结这段文本"
# 使用特定的高强度推理模型
pi --model sonnet:high "解决这个复杂问题"
许可证
MIT