“把 AI 编程的“飞船”换成皮划艇:pi 极简编码智能体实测”

起因:听说有个工具省 token 省得很邪门

前几天听人说,有个叫 pi 的编码智能体,省 token 省得离谱。我心想又是营销号吧,结果动手一搜——搜不出来。搜 "pi" 出来的是圆周率、是树莓派、是某品牌的手机,唯独搜不到这个工具。

后来才知道,作者是故意的。Mario Zechner——写 libGDX 那位,Java 游戏开发圈的传奇——给自己的新项目起了个"完全没法被搜索引擎收录"的名字,还在博客里自嘲:这样就不会有用户,也就不会有人给我提 issue 了。

但 pi.dev 首页那句标语确实戳人:

There are many agent harnesses, but this one is yours.

(世上有许多 agent 框架,但这一把是你自己的。)

抱着"省 token 能省到哪去"的怀疑,我把它装上真刀真枪跑了一圈。结论先放这里:省 token 是真的,而且省得毫无魔法——但它省的方式,可能让被大厂伺候惯了的人一时不适应。

极简到什么程度:系统提示词不到 1000 token

pi 的系统提示词,全文大意就这么多:

You are an expert coding assistant. You help users with coding tasks
by reading files, executing commands, editing code, and writing new files.

Available tools:
- read:  Read file contents
- bash:  Execute bash commands
- edit:  Make surgical edits to files
- write: Create or overwrite files

Guidelines:
- Be concise in your responses
- Use read to examine files before editing
...

对,就这。加上四个工具的参数定义,全部不到 1000 token。

作为对比,我天天在用的 Claude Code,光系统提示词加工具定义,起步就是一万多 token——每开一个新会话,还没说第一句话,一万 token 已经花出去了。pi 把这个起步成本砍到了一个零头。

Mario 的逻辑很暴论但细想有道理:前沿模型被 RL 训练得足够多了,天生就知道怎么当编码 agent,不需要一万 token 的保姆级说明书。这话他也不是空口说的——他带着 pi 用 Claude Opus 4.5 跑了 Terminal-Bench 2.0,跟 Codex、Cursor、Windsurf 这些重型选手同台,成绩排在前列。

实测:给真活干,看它怎么花钱

光看宣传没用。我给它派了个真实任务:一段有除零 bug 的 JS 代码,要求修复、写测试、跑通验证。

它的整个工作过程:5 次工具调用(read ×1、edit ×1、write ×1、bash ×2),6 轮模型请求,然后交卷:

输入 token: 1,593(非缓存)
输出 token: 1,087
缓存读:    19,520

说实话看到这个账单我愣了一下。这个数字里最值得玩味的是"非缓存输入"那一栏——整个任务真正新烧的输入 token 还不到 1600。pi 的省不是什么黑科技,是结构性的:系统提示词小、工具少、没有背着你塞进上下文的隐藏内容。你看到的就是模型看到的,花出去的每一个 token 都摆在明面上。

顺带一提,它对国产模型的亲和度意外地好。内置 zai 提供商,检测到我环境变量里的 ZAI_API_KEY 就直接认了,GLM-5.3-flash 开箱即用,上下文窗口直接给到 1M。装完第一次跑就成功返回,零配置。

踩坑三连(这部分最值钱)

安装五分钟就完事了,但配置踩了三个坑,全记在这里:

坑一:defaultModel 写了等于没写

我最初在 settings.json 里这样写:

{ "defaultModel": "zai/glm-5.3-flash" }

结果被静默忽略,不报错、不警告,就是不理你。正确姿势是两个键分开写:

{ "defaultProvider": "zai", "defaultModel": "glm-5.3-flash" }

这个格式要求藏在文档一行表格里,踩之前谁能想到。

坑二:一场 403 侦探剧

修好坑一以后依然 403:"Request not allowed"。诡异的是,命令行显式指定 --model 就一切正常,走默认配置就挂。

排查下来发现案中有案:我机器上有一组给 Claude Code 用的环境变量(ANTHROPIC_BASE_URL 指向 bigmodel 的 GLM 接入点)。pi 一看环境:哟,有 Anthropic 凭证,那默认走 Anthropic 家——于是拿着 GLM 的钥匙跑去 bigmodel 门口点名要 claude-opus-4-8,保安当场拦下。

把这组变量从环境里摘掉,立刻正常。教训:装了 pi 就把 defaultProvider 显式钉死,千万别让它自己猜。

坑三:证书报错连击

首次运行时 pi 想现场下载 ripgrep 和 fd 两个搜索工具,在我的网络环境下双双 TLS 证书报错。解法朴素得感人:

scoop install ripgrep fd

装完 pi 自己就在 PATH 里找到了它们,下载逻辑根本不触发。

它的哲学,你敢不敢用

pi 最有争议的不是功能少,而是它把几件事做绝了:

YOLO 模式是唯一模式。 没有权限确认弹窗,没有"允许此命令吗",文件直接改、命令直接跑。Mario 的说法是:一个能写代码又能执行代码的 agent,加那些确认框属于安全剧场——真想搞破坏的路子多了去了。我承认他说得有道理,但第一次看它毫无心理负担地改我文件的时候,还是倒吸了一口凉气。介意的话官方文档给了容器化方案,建议真的用起来。

拒绝 MCP。 理由很"token 感性":Playwright MCP 21 个工具的描述就是 13.7k token,Chrome DevTools MCP 26 个工具 18k token——还没开始干活,上下文先烧掉 7-9%。pi 的替代方案是"CLI 工具 + README":agent 需要时自己去读文档,用不到就不付钱。渐进式披露,这才是对上下文窗口的尊重。

"子代理是计划不足的症状。" 这是全书最暴论的暴论。他的观点:会话中途开子代理去收集上下文,说明你一开始就没规划好;正确姿势是单开一个会话把上下文整理成文档,再带着干净的上下文开工。我同意一半——上下文污染确实是大问题;但大型代码库里"先通读一遍"的成本也不低。这条见仁见智。

没有 todo 列表、没有 plan 模式。 需要就写 TODO.md、PLAN.md,让 agent 自己读写。文件即状态,跨会话可版本管理,比藏在运行时内存里的易失状态实在多了。

结论:适合谁

适合你,如果:你心疼 token、想完全掌控模型上下文、用订阅制模型(Claude Pro/Max、GLM Coding Plan 都能直连)、并且愿意花半小时按自己的口味改造工具——pi 的扩展是 TypeScript 模块,官方哲学就是"缺什么,让 pi 自己给自己写一个"。

不适合你,如果:你要开箱即用的安全护栏、离不开 MCP 生态,或者想到 AI 在工作目录里裸奔就睡不着觉。

至于我:Claude Code 还会继续用,但 pi 已经常驻了。一个是全副武装的飞船,一叶随身的皮划艇——远洋当然飞船稳,但去楼下便利店买瓶水,你真不想发动那台飞船。

想试的从 pi.dev 开始,五分钟能跑起来。记得先把 defaultProvider 钉死。

Views: 0

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

Index