
工具接得越多 Agent 越蠢:Pi 1.0 把工具藏起来,官方称提示词开销少了 40%
挂 MCP 的那天,你是兴奋的。文件系统、数据库、浏览器、看板,一个一个往上接,看起来 Agent 突然什么都能干了。
三天之后事情就不对了。它开始挑错工具,回答越来越啰嗦,账单越来越厚。你没删过任何一个 server,也没改过一句 prompt。
这不是玄学。MCP 的麻烦从来不是接不上,是接多了上下文会爆。
接得越多,蠢得越快
先把这笔账算清楚。每挂上一个 MCP server,进入上下文的不止是”我现在多了什么能力”这一句话:工具清单要进来,每个工具的参数 schema要进来,调用完之后返回的原始结果还要进来。
查一次数据库,回来两百行原始记录;抓一个网页,回来整段 HTML。这些东西不会自己消失,它们原封不动地躺在你下一轮请求里。
于是出现一个荒诞画面:工具越多,模型要在越长的噪声里做选择,注意力被摊薄;上下文越长,命中 prompt 缓存越难,钱烧得越快。你以为在装外挂,其实在给模型加阅读理解题。
想补基础的,先看站内这篇《别再把AI当聊天机器人了!MCP协议完全指南》,里面对 MCP 协议 讲得相当全。今天这篇不重复它,今天讲反转。
那个质疑 MCP 的人,把 MCP 做进了主线
Pi 的作者 Mario Zechner,公开质疑过 MCP 的必要性,认为它引入的复杂度大于收益。这话在社区里传得很广。
然后到了 2026 年 10 月 1 日。Earendil 发布 Pi 1.0,第一个稳定版,MIT 许可,更新清单里赫然写着:Codemode,含原生 MCP 支持。
打脸了吗?恰恰相反。官方那句话值得抄在这儿:
“We wait until something has proven itself, and only then do we consider adopting it; weighing its true functionality against its inherent added complexity.”
说白了:不见兔子不撒鹰。想进 Pi,先证明自己配得上那份复杂度。
背景交代一下。Pi 是终端优先的开源编码 agent,更准确说是 agent harness,TypeScript 写的,仓库在 GitHub 上的 earendil-works/pi,报道时 112,000 star、186 个 open issue,要求 Node.js 22.19 或更高版本。官方称每周有数十万人在用(第一方数字,没有独立验证)。
1.0 这一版一口气加了六件事:Codemode 及其原生 MCP 支持,虚拟模型(virtual models),延迟工具加载(deferred tool loading),Anthropic 缓存预热(专门对付 prompt 缓存 5 分钟 TTL),对话进行中插入 system message(能看到已有 transcript),以及全屏 TUI 成为默认并换了主题。

不让模型看见工具
重点来了:Pi 1.0 对 MCP 的用法,是把通行做法整个反过来。
通行做法是把工具摊在模型面前,让它从里面挑。Codemode 不这么干。它是 harness 侧的一个 JavaScript 沙箱:模型不再盯着一长串工具清单,而是写一段小程序去编排工具调用。这段程序在沙箱里跑,可以并行查询,可以过滤,可以聚合,最后只把压缩后的结果回传给模型自己。
打个比方。以前是把整个工具箱倒在桌上,让模型趴上去挑。现在是打发助手去储藏室,只把它真正要用的那几件递回来。递回来的是结果,是成品,不包括工具箱本身。
顺带一提,Codemode 里能接的不止 MCP server。非 LLM 的模型也能挂到这条链路上,比如决策模型 Jev、比如图像模型。这一条后面要用到。
5300 到 3300,先别急着高潮
厂商最爱甩数字,Pi 也甩了。changelog 里记载:一次 GPT-5.6 请求,prompt 从约 5300 token 降到约 3300 token,约 40% 的 prompt 开销下降。
丑话说前面:这是 Earendil 自家 changelog 的口径,没有独立第三方复现,官方也没公布 Codemode 的基准测试。把它当方向性证据,别当 KPI。
但方向上说得通。省下来的也不只是”少贴了几段工具描述”:延迟工具加载让工具不必一次性全量入场,Anthropic 的缓存预热又专门去解决 prompt 缓存五分钟就失效的问题。这三件事是往同一个方向使劲,那个数字是它们叠出来的结果。

让 Opus 规划,让 Jev 掐点,让 Luna 干活
虚拟模型是 1.0 里第二个狠角色,逻辑很朴素:一个任务的不同阶段,本来就不该由同一个模型包办。
官方给的演示是这样的:用 Claude Opus 做规划,用 Jev 去检测”规划已经完成、该进实施阶段”这个转换点,检测到之后把实施交给 GPT-6 Luna。
妙就妙在中间那个角色。阶段切换这种判断,塞给一个大模型去”感觉一下”是最浪费的,它本质上是一道选择题。Jev 决策模型 就是干这个的,站内这篇《闭嘴,只做选择题:Jev 上手指南》讲过它的脾气。
再叠上”对话进行中插入 system message 且能看到已有 transcript”,意味着你不用开一个新会话,就能把上下文掰到新轨道上。
它也不是万能的
坑 1:你看到 40%,就以为自己也能省 40%。现象是照着这个数算预算,上线后发现压根没降那么多。根因上面说过了,单一请求口径、自家 changelog、没有 benchmark。解法很土:拿你自己那个最脏的仓库真实跑一轮,只信自己跑出来的数。
坑 2:把 1.0 当成安全承诺。1.0 是稳定性意义上的成熟,不等于安全边界。仓库自述里有精确版本锁定、lockfile 校验、定期安全审计这几条供应链规则,但那是仓库自称的做法,不是第三方审计结果。你自己的依赖扫描和锁策略,一样都别省。
坑 3:把 Pi Durable 当成官方加强版。它是同期发布的独立实验性包,面向长时运行的 agent 应用:管理多轮对话,用 SQLite 和 JSONL 做持久化存储。Earendil 特意把它和 Pi 本体分开,就是不想让终端 agent 越来越臃肿。官方自己的比喻很到位:Pi 像 Flask,不像 Django。实验性意味着接口随时可能变。
坑 4:把 Codemode 的沙箱当成隔离边界。官方文档并没有讲清这个沙箱到底拦住了什么、没拦住什么。真要当隔离层用,先在可控环境里验证明白。
你到底该装哪个
先说最简单的那种情况。你要的只是一个能干活的编码 agent,那就装 Pi 本体,一行命令的事。
macOS 与 Linux:
curl -fsSL https://pi.dev/install.sh | shWindows PowerShell:
powershell -c "irm https://pi.dev/install.ps1 | iex"macOS 和 Linux 另外还提供了 Nix flake 这条安装路径。
真正要判断的是后面这几种情况:
- 只要一个能干活的编码 agent:装 Pi 本体就够,不用碰别的
- 要跑几天的长时任务:才需要去看 Pi Durable,而且它是实验性的
- 想自建 agent 底座:去啃那 7 个 @earendil-works 作用域的包
这 7 个包包括 pi-ai、pi-agent-core、pi-coding-agent、pi-tui、pi-telemetry,等于把 Pi 拆成了可复用的零件。想横向对比别的自建路线,站内这篇《OpenClaw:跑在你自己机器上的开源 AI 智能体框架》可以对照着读。
真要试长任务,装在 npm 这一侧:
npm install @earendil-works/pi-durable @earendil-works/pi-ai @earendil-works/chord还有一个小开关值得知道:TUI 现在默认走全屏(alternate screen),界面干净了,代价是终端回滚没了。想要回滚就用配置把它改回常规模式(具体字段以 pi.dev 官方文档为准)。
藏工具,藏的是复杂度
回到开头那个画面:你兴冲冲接了一堆 MCP,Agent 却越来越蠢。
Pi 1.0 的回答不是”少接几个”,是换个地方接。工具的复杂度本来就该由 harness 扛着,不该摊在模型的 prompt 里。
所以它的选择是自洽的:延迟工具加载,减少一次性入场;缓存预热,减少重复付费;Codemode,减少回传噪声;虚拟模型,减少用错模型造成的浪费。四件事指向同一个判断:省上下文这件事,比多加一个功能更像架构决策。
至于那 40% 你信几分,得自己跑。至于跑不跑得起来,先装吧,就一行命令。
关注圈圈,持续带你玩转 AI 工具。
暂无评论内容