前段时间 Claude 把我封禁了,没办法,不得不找别的路子。光凭 Codex 也满足不了每天的编码需求,需要一些不一样视角的模型来互补。Cursor 又由于莫名其妙的操作,把我这张号的 500 次变成了按消耗计费。Antigravity 之前没怎么用过,虽然把代理问题解决了,总感觉不太聪明。底子比 Codex 和 Claude 的客户端要慢好多个版本。
社交媒体上关于 Pi 的讨论非常多。大半年前就听说前司内部开发还会用 Pi。我就想自己来琢磨一下,从装上到能干活,先把卡住我的问题记下来。
命令行
Pi 是一个命令行工具,简单得不能再简单。装上之后,从 Codex、Claude 的 GUI 过来的人,第一个疑惑往往是:文件怎么看?我也搜过有没有第三方客户端,结论是不用。有人推荐 oh-my-pi,我的想法是从零开始,做一个更高度自定义的,所以没用它。后面都从最基础的 Pi 开始。
安装、卸载不做重复介绍,直接去 pi.dev 下载就行。装完第一件事是登录。一种是走第三方客户端,推个网页认证。我把 Codex、Antigravity 和 Cursor 三个都登上去了。后面两个没有默认预装插件,网上找其他人开发的就行。Cursor 要注意,要装非 backend 的那款,backend 那款鉴权方式不一样。
另一种是直接用 API token,比如 OpenRouter。我想用的是套餐额度,所以第三方 provider 没关注。它原生支持 Llama,条件允许可以用本地部署。这些都不是重点。
常用指令
斜杠指令看起来蛮多,好像有 80 多个,至少我这边是。

日常反复用到的,大致就是下面这些。
/model 换模型 /thinking 调推理级别
/tree 从跑偏点分支 /compact 压缩长上下文
/resume 找旧会话 /name 给会话命名
/session 看状态/成本 /reload 重载配置
@file 附文件 !cmd / !!cmd 执行 shell
Enter 纠偏 Alt+Enter 排队后续任务
Esc 中止
我自己最常动的是 /model 和 /thinking。登录之后模型会展开特别多,/thinking 默认偏中,我喜欢调到最大,不然这些 token 怎么消耗得完。/compact 在 Codex 和 Claude 里也有,长了就压缩一下。
清单之外,Codex 里那些 MCP、plan,还有 /goal 那种一口气做完的功能,Pi 核心没有。我个人觉得比较有用的是 sub-agent 和 MCP。Codex 里很多第三方服务是直接用 MCP 接的,比如 Stripe 支付、Resend 邮箱。
Pi 把这些都留给扩展。缺了可以按需补,同一类先装一个。
| 缺少的内建能力 | 可选扩展 | 使用边界 |
|---|---|---|
| MCP | pi-mcp-adapter |
把 MCP 工具接入 Pi;工具一多,优先 proxy/search,避免全部常驻上下文 |
| Subagents | pi-subagents |
单个、并行和链式委派;子代理仍会单独吃上下文和额度 |
| Plan Mode | pi-agent-modes |
提供 ask/plan/build/review/debug 等模式;藏掉 edit/write 不等于沙箱 |
| 权限确认 | pi-permission-system |
allow/ask/deny 规则;这是决策层,不是 OS 沙箱 |
| OS 沙箱 | pi-sandbox |
macOS 用 sandbox-exec,Linux 常用 bubblewrap |
| 后台 Bash | pi-background-bash |
长命令转后台;进程仍继承本机用户权限 |
没必要一开始全下。第三方大多是社区写的,版本升级时有风险。网上都建议锁定版本,避免软件升级后自动更新、注入恶意代码。高频指令记住,缺的能力先放着,可以开第一轮对话了。
打断和回退
第一轮对话里,最先卡住我的是怎么停。Codex 可以直接往下打字,还有 /btw 这种不打断进程、问一句当前进展的指令。Claude 里也有类似的。Pi 目前不支持。我给 /btw 的评价是一般有用:Claude 里有时比较弱智,Codex 里问是不是和预期一致,或者问细节,能答,但没有那么聪明。
真要停,按 Esc,这个和 Codex 一致。不一致的是按两次 Esc。Codex 会回到上次对话,Pi 从我的实践看没有这个反应,两次 Esc 默认打开 /tree。
Esc、Enter、/tree、Git 看起来都像“回去”,处理的状态并不相同。
| 现场 | 先做什么 | 它能恢复什么 | 它不能恢复什么 |
|---|---|---|---|
| 输出明显跑偏,或准备执行危险动作 | 按一次 Esc |
中止当前 run;把排队的 steering/follow-up 恢复到编辑器 | 已经执行的 shell、已经写入或删除的文件 |
| 只是想补一句约束 | 工作中按 Enter |
作为 steering,等当前工具调用结束后尽快交给模型 | 不是硬中断,不能撤销正在执行的副作用 |
| 想回到旧思路重新聊 | /tree |
对话树与后续模型上下文 | 磁盘文件、Git index、未跟踪文件 |
| 想撤回代理造成的文件修改 | 先 git status、git diff,再定点 git restore |
Git 已跟踪文件的工作区或暂存区 | 默认不处理未跟踪文件,也不恢复对话 |
/tree 对用户并不友好,只回退对话,不回退变更。它没有把 Git 整合进去,也没有文件跟踪。官方的意思是文件交给 Git。但你如果让模型自己操作 Git,我的观察是,即使是聪明的 GPT-5.6 sol 也会陷入迷失。所以还是用第三方更友好一点,比如 pi-rewind。
对话能停、能补、能回退之后,下一个问题是怎么把图和文件喂进去。
图片和文件
做前端、看第三方截图的时候,模型得能看见图。我一开始没找到粘贴入口,走了个曲线:先传到图床,把链接丢给模型,让它自己解释。后来才知道,Mac 上是 Ctrl+V,不是习惯的 Command+V。
社区也反馈,有时候模型并不会读这张图片。所以需要留档、后面还要对比的图,我还是上传。不需要留的,Ctrl+V 粘进终端就行。几种入口拿到的东西不一样。
| 方式 | 模型实际拿到什么 | 适用 |
|---|---|---|
Ctrl+V / 拖入终端 / @ |
本地路径,代理还得 read |
本机交互,偶尔发图 |
pi @image.png |
真正的图片附件 | 图片决定对错时 |
| 图床 URL | 一段文本,模型可能去 curl,也可能不去 | 跨机器,或图片本来就要公开 |
scp 到远端再 read |
远端路径 | Pi 跑在远程主机上 |
我这边用的模型基本上都有图片理解能力。没有视觉能力的,比如半年前的 DeepSeek,论坛用户会装 vision-bridge 一类插件。这取决于需求。第三方插件蛮丰富,遇到问题直接搜,基本能解决。经常贴图的话,还有 pi-paster,会把路径换成真正的图片附件。
Pi 跑在远程主机上,读不到你 Mac 的剪贴板。这时把图传到远端再 read。少数情况不建议直接在服务器上改东西,安全第一。敏感截图、未发布设计和含 token 的报错页,也不适合为了喂给 agent 先公开上传。
普通文件也类似,给的是路径。直接 @ 对应文件就可以。终端里拖拽文件进来,在 Pi 里没有那么方便,把路径告诉模型也行。
图和文件能塞了,真开始改项目,坑会换一批。
项目里的坑
我实践下来,Gemini 3.8 Flash 可能对 Git 操作过度微调了,非常喜欢在 Git 树上做微操,反而影响大局。这个时候我会把之前在 Codex、Claude 和 Cursor 里存下来的 agent memory 让它读一遍,写到当前项目里,成为给它的指导意见。
做到一半还发现,它没有把我在其他项目的 skill 导入进来。提醒它帮我软链接过来。注意是软链接。我们所有 skills 都从统一仓库向几处分发,方便管理,而不是每个工具各留一套。这块我在从单 Agent 到跨 Agent 的 Skills 管理里写过。
模型列表是另一个麻烦。尤其是 Cursor,细分类太多。可以用 /scoped-models 做人工筛选。筛的时候我比较清楚 Codex 现在最强的是谁,但不清楚 Grok 在当前的实际水平,种类又太多。本来想自己写个插件,后面发现有人写了,就是 pi-better-models,省了非常多时间。也可以看我做的 TrakToken,上面有不同模型能力的排名。

/scoped-models 管候选范围,pi-better-models 帮你看清模型,不会替你自动选。
会话名称也不帮我压缩。我希望它能像 Codex、Claude 那样缩一下,回头才知道不同会话做了什么。这部分应该也会有插件。
输入方式
对话过程中怎么给它输入,需要分清 steering 和 follow-up。
Steering 是这次先做完,下一句再补约束,按 Enter。想让它把当前这件事情做完,先不往过程里塞新内容,按 Alt+Enter。做得快错了,用 Esc 终止。
其余快捷键,我自己常用的是这些。
| 快捷键 | 作用 |
|---|---|
| Ctrl+L | 选模型 |
| Ctrl+P | 循环模型 |
| Shift+Tab | 循环 thinking |
| Ctrl+O | 展开/收起工具输出 |
| Ctrl+T | 展开/收起 thinking |
| Ctrl+X | 复制最后消息 |
| Esc Esc | 默认打开 /tree |
| /hotkeys | 查看其余全部 |
按键会了,Git 习惯和 skill 也写进项目了。这些文件进模型的顺序是固定的。
载入顺序
Pi 的 system 提示词,按下面这个顺序拼。
默认或自定义 SYSTEM
→ APPEND_SYSTEM
→ AGENTS.md / CLAUDE.md 项目上下文
→ Skills 目录
→ 当前工作目录
它们进 Pi 的位置不同,约束力度也不同。
| 机制 | 作用 | 是否常驻上下文 | 适合放什么 |
|---|---|---|---|
AGENTS.md / CLAUDE.md |
项目规则,按全局、父目录、cwd 叠加 | 是 | 项目特有约束、验证命令、Git 规则 |
.pi/APPEND_SYSTEM.md |
在 system prompt 后追加 | 是 | 少量高优先、跨任务规则 |
.pi/SYSTEM.md |
替换默认 system prompt | 是 | 完全定制代理;只想加几条规则时别动它 |
| Prompt Template | /名称 展开成用户消息 |
只在调用时进入 | 重复提示 |
| Skill | 先暴露名称和描述,匹配后再读正文 | 描述常驻,正文按需 | 专门工作流 |
| Extension | TypeScript:工具、命令、钩子、UI | 作为代码运行 | 确定性门禁、审批、自动化 |
规则能加载,成本也想看清。我在 Claude 里面会看不同占比的 token 数。Pi 里面应该也有这个插件,回头找找能不能装上去。
使用感受
从装上到能改项目,Pi 刚开始并没有那么友好。反应速度可以,也能把不同模型的能力集合在一起,但肯定还是各家自己的客户端调教会更好。Pi 提供的是更高的可玩性。如果你不是在做 Agent 开发研究,这个可玩性不用过度纠结。手上有 Claude、Codex 和 Cursor,用它们把日常工作做好就行。Pi 更适合灵活度更高的活。或者这件事简单,手里还有多余的模型额度,不必上 Claude 那种通用模型,用第二梯队的模型试一试也行。
我一开始就用它改 GitHub Actions 的统一调度,花了一两个小时,效果还算满意。用的是 Gemini 3.8 Flash。偶尔用 Claude 帮我诊断一下方案。
网上大部分话集中在:先用起来,别急着装网友推荐。遇到问题,先定位清楚,再去找对应的参考。我会看 Codex、Claude 里类似功能是怎么做的,再搜有没有现成的第三方。确认好用、自己也需要,再加回来。
同一会话里快速换模型确实爽。爽归爽,我们之前在提效 20% 的 Claude Code Session 优化方法里讲过,换模型缓存会全部失效。目的和成本要自己权衡。可玩性不是这件事的根本。根本是提高生产力,把手上的资源有效利用起来。
能力表里有沙箱,这块我研究不算多。Pi 默认没有权限弹窗,也没有 OS 隔离,继承的是当前用户的文件、网络和凭证。敏感操作不适合直接在裸机上做,未来可能会把沙箱装回来。
Pi 更新迭代实在太快。从 2026 年 5 月迁到 @earendil-works 之后,到 v0.85.1 已经走了很多版。之前的教程可能就没那么有效。
参考资料
官方与文档
- Pi Coding Agent - 官网与安装入口
- Pi Usage - 斜杠命令、
@文件与图片入口 - Pi Sessions -
/tree、/fork、/clone - Pi Keybindings - 90 个可绑定 action
- earendil-works/pi - v0.85.1 源码与发版
文中提到的插件
- can1357/oh-my-pi - 高度封装的 Pi fork,本文没有采用
- arpagon/pi-rewind - 回退对话的同时回退文件变更
- ktappdev/pi-better-models - 按编码能力筛选模型
- beowulf11/pi-paster - 把粘贴的图片路径转成真正附件
- pi-mcp-adapter - MCP 接入
- pi-subagents - 子代理
- pi-agent-modes - ask、plan、build 等工作模式
- pi-permission-system - 工具权限规则
- pi-sandbox - OS 级隔离
- pi-background-bash - 后台命令与完成通知