声明:本文由 AI 辅助创作,经作者核实与修订。

如果只想记一句话,那就是:0.99 用 Codemode 把 MCP 接了回来,1.0 把这套东西定成稳定版,1.1 只是让日常用起来更顺手。

Pi 的 changelog 很长,但真正改变这个工具性格的只有一件事,就是对 MCP 的态度。其余的更新要么是在为这件事铺路,要么是在给它擦屁股。社区这两周吵得热闹,吵的也不是功能多少,而是 Pi 还算不算那个极简的 Pi。

上个月写 Pi 入门笔记 的时候,它还是一个连 Plan 模式都不给你的终端工具。短短三周,变化不小。

先把时间线理清

日期 版本 一句话
09-29 0.99.0 真正的大版本:Codemode、内置 MCP、延迟加载、虚拟模型、分类器
10-01 1.0.0 定版加固:默认全屏、Codemode 提示成本再降约四成;同日发布实验包 Pi Durable
10-03 至 10-05 1.0.1 至 1.0.4 补丁周,唯一的破坏性变更是 1.0.3 里 Azure provider 改名
10-07 1.1.0 没有破坏性变更:状态上报、工具增减写法、Haiku 5.5、看图分类、llama.cpp 原生接入

有个细节容易被忽略:最激进的改动其实发生在 0.99,而不是 1.0。1.0 的意义更像是一份承诺,告诉大家这套接口以后不会乱动了,可以放心在上面写扩展。

最大的变化:MCP 回来了,但换了个接法

当初为什么拒绝

Pi 过去一年多旗帜鲜明地不支持 MCP,官网上就这么写着。理由不是意识形态,而是一笔账:传统的 MCP 接法会把所有工具的 Schema 一次性塞进上下文。社区里被反复引用的例子是,接三个 MCP 服务器,光工具定义就吃掉约 143k 的上下文(总共 200k),活还没开始干,七成窗口已经没了。

对一个以「系统提示短、上下文干净」为卖点的工具来说,这确实不能接受。

现在怎么接

0.99 的做法是不让模型直接看工具清单。模型拿到的是一个 QuickJS 沙箱,它在里面写一段 JavaScript,通过 searchTools() 按需找到要用的工具,在沙箱里调用、过滤、合并结果,最后只把脚本的输出交回上下文。中间那些又长又没用的原始返回值,模型根本看不到。

这套机制就叫 Codemode。MCP 服务器配置好之后,默认就走这条路,工具不会直接出现在模型的工具声明里。如果你确实想让某个工具直接暴露,也可以把它切到 direct 模式,另外还有 deferred 和 hidden 两档。

1.0 又把 Codemode 自身的提示开销从约 5,300 token 压到约 3,300 token,降了四成左右。

说实话,这个思路不是 Pi 首创的。Cloudflare 去年就写过一篇 Code Mode,核心想法一模一样:与其让模型一个个调工具,不如让它写代码去调。Pi 的贡献在于把它做成了默认行为,并且放进了一个本来就以省上下文出名的工具里。

为什么改口

官方专门写了一篇 You Said No MCP!,标题就是在自嘲。理由大致有三层:

  • MCP 协议本身这一年变了不少,不再是当初那个样子。
  • 为了支持 Codemode 做的底层改动(延迟加载工具、对话中途改系统消息、接入分类器这类非对话模型),对 Pi 本身就有用,MCP 只是顺带吃到了好处。
  • 官方仍然承认 MCP 的可组合性很差,但觉得与其在外面骂,不如用 Codemode 把它变得可用。

Armin Ronacher 在 Hacker News 上补了一个更现实的理由:前沿模型已经被训练成依赖这种写代码调工具的方式,比如 Codex 内部做并行工具调用时就靠类似机制。harness 如果不跟,就等于在跟模型的习惯作对。

这句话后来成了整个讨论里最有争议的一段,后面再说。

社区的主流解读倒是挺宽容:不是 Pi 投降了,而是它一直等到有一种不吃上下文的接法,才肯说 yes。HN 上的「You Said No MCP」帖拿到了 600 多分,很多评论都在说,公开改口本身就值得尊重。

1.0 还顺手做了什么

除了 Codemode,1.0 的官方列表里还有几项,单拿出来不起眼,但都和上面那件事有关:

  • 延迟加载工具:工具不再开机全量加载,用到才拉。这是 Codemode 能省上下文的前提。
  • 对话中途的系统消息:会话进行到一半增减工具、改提示词时,模型能感知到变化,而不是假装什么都没发生。
  • Anthropic 模型的缓存预热:长会话里能少付一些重复的输入费用。
  • 虚拟模型:扩展可以注册一个「模型」,背后其实是自己的逻辑,比如路由或者组合多个模型。
  • 默认全屏和新主题:纯界面改动,但被骂得不少,后面会提到。

另外 1.0 开始支持用 Earendil 自家的 Radius 网关登录。这里顺便澄清一个常见误会:Pi 本身是 MIT 开源,没有订阅费也没有席位费。Radius 是一个按 token 扣费的模型网关,和 OpenRouter 是一类东西,它的价目表不是 Pi 的月费。

Pi Durable:可能才是真正的赌注

和 1.0 同一天发布的还有一个实验包,叫 Pi Durable。HN 上有人管它叫 sleeper release,意思是现在没人在意,以后可能最重要。

它要解决的问题很具体:现在的 coding agent 基本都活在一个终端进程里,进程一挂,会话就没了。如果你想让 agent 跑几个小时甚至几天的后台任务,这就不够用了。

Pi Durable 的做法是把会话状态持久化到 SQLite 或 JSONL 里,进程崩了能从检查点恢复;同时支持多会话并发和分叉。比较有意思的一点是,它要求工具声明「崩溃后能不能安全重跑」,这样恢复的时候 harness 知道哪些操作可以重放,哪些不能。

官方说得很克制,明确表示它不会取代现在的终端客户端,更像是给想做后台自动化的人准备的底盘。整个包大约 1.5 万行代码(不含测试),还是实验状态,现在拿来跑生产任务为时过早。

1.1 很安静,这是好事

1.1 在社区里几乎没有形成独立话题。没有破坏性变更,没有新叙事,就是一批顺手的改进:

  • 工具增减写法:pi -t +codemode,-write 这样用加减号增删工具,不用把整串工具名重新抄一遍。想临时开沙箱、或者拿掉写权限做只读审查,一行就够。
  • OSC 7501 状态上报:Pi 会把自己的状态(忙、等待输入、结束)上报给终端。多开几个会话并行跑的时候,标签页上一眼就能看出谁卡住了。
  • 模型和分类器:新增 Haiku 5.5;models.classify() 能看图分类,批量筛截图之类的场景能用上;llama.cpp 作为决策模型原生接入,跑本地模型更方便。
  • 另外还有二十来项修复。

大版本之后紧跟一个无聊的小版本,通常说明 1.0 的地基打得还算稳。对用户来说,结论很简单:直接 pi update,不用犹豫。

社区在吵什么

这部分比功能列表更值得看,因为它决定了一个人会不会真的换过来。

极简还算不算极简

这是吵得最凶的一点。Pi 当初靠「什么都不做」赢得了一批死忠:没有子代理,没有 Plan 模式,没有权限弹窗,那份拒绝清单本身就是产品。现在一口气把 MCP、Codemode、工具搜索全塞进了核心,一部分老用户觉得味道变了。

反应激烈到出现了 fork。GitHub 上的 subimpact/e 直接把 MCP、Codemode 和工具搜索从代码里删掉,README 里写得很直白:当年的拒绝清单就是卖点。

支持现在路线的人则认为,极简指的是核心循环小、提示词干净,不是永远拒绝生态接口。而且 Codemode 恰恰是在守「上下文干净」这条线,只是守法换了。

我倾向于后一种看法,但前一种担忧也不是没道理。2026 年 4 月 Earendil 收购了 Pi,原作者 Mario Zechner 加入公司。一个开源工具被公司接手之后开始加功能,大家天然会警惕:这次加了 MCP,下次会不会就是内置子代理、内置计划模式?「默认全屏」被骂,某种程度上也是这种情绪的投射,界面改动本身不大,但它释放的信号是:Pi 开始替你做决定了。

「不跟模型行为对着干」

前面提到 Armin 的那句话。支持者觉得这很务实:模型就是被这么训练的,harness 顺着走效率最高。反对者觉得这等于放弃了 harness 该有的引导责任,模型厂商怎么训,工具就怎么跟,那 harness 还剩什么独立价值?

这个问题没有标准答案,但它其实问到了所有 agent 工具的根上:当模型越来越强,外面这层壳到底该厚还是该薄。

没有权限系统

Pi 默认用启动它的用户权限运行,读写文件、访问网络、碰凭证,都没有内置拦截。老用户会自己套容器或者装审批扩展,新手往往直接裸跑。这是 HN 上被点赞最多的批评之一。

这里有个特别容易混淆的点:Codemode 的沙箱是为了省 token,不是安全边界。 它隔离的是上下文,不是你的文件系统。别因为看到「沙箱」两个字就以为安全了。

一些小事,但影响信任

  • 有人指出自动更新和遥测的关闭方式不一致,觉得像暗模式。fork 项目 e 也把「默认不外发信息」当成卖点之一,说明确实有人在意。
  • 扩展质量参差不齐。Pi 的强项是可扩展,弱项也是可扩展:裸装几乎不干活,好不好用取决于你挑了哪些扩展。有人晒自己写的八九个扩展,也有人吐槽很多扩展像个人练手项目。
  • 名字和体积。Pi 跟树莓派、圆周率重名,每次都得解释;Node 生态的安装体积也被吐槽,有人说容器里拉下来五百兆左右。这类话题技术含量不高,但传播最广。

该不该升级,该不该入坑

已经在用 Pi 的,直接升到 1.1。如果你本来就不用 MCP,Codemode 不会主动打扰你;如果介意,用 -t -codemode 关掉就行,或者去用 e 这个 fork。

还没用过 Pi 的,可以按这几个问题自己判断:

  • 你手里有一堆现成的 MCP 服务器,又嫌别的 agent 一接上就把上下文撑爆,那 1.x 的 Codemode 值得专门试一下。拿一个常用的 MCP 服务器接上去,对比一下上下文占用,几分钟就能看出差别。
  • 你想在终端里用本地模型或者多家模型搭一套自己能完全控制的环境,Pi 依然是最合适的选择之一,轻量的系统提示对小模型尤其友好。
  • 你希望开箱即用,不想挑扩展、不想配权限,那 Claude Code、OpenCode 或者 Cursor 会省心得多。Pi 1.x 变大了一点,但它仍然是一个给你原语、让你自己拼的工具。

至于新手,不管选哪条路,先在容器里跑。

回头看这次更新,最有意思的不是它多了什么功能,而是一个靠拒绝建立信任的工具,在改主意时给出了一份足够认真的解释。社区可以不同意,但至少吵得有理有据。这本身就说明 Pi 的用户群体在乎的东西,和大多数 AI 工具的用户不太一样。

参考