Pi 1.0 发布

查看原文 HN 讨论

文章摘要

Pi 是 Mario Zechner 发起、现由 Earendil 公司(Armin Ronacher 也在其中)维护的开源编程智能体”外壳”(agent harness)。2026 年 10 月 1 日,Earendil 以一封”致你”的信件格式宣布 Pi 1.0 正式发布,定位是”一个经过加固、极简、可扩展、可以改造成你自己的东西的智能体外壳”。官方称全球每周有数十万人在用 Pi,很多人提交 issue 和 PR,团队花了几个月时间把这些反馈变成一个稳定、个人和企业都能依赖的版本。

极简是要守住的底线。 公告强调 Pi 以极简著称,团队会坚持这一点。智能体工具每周都在变,但多数变化留不下来;Pi 的做法是等一个东西被证明有用,再权衡它的真实功能和它带来的复杂度,然后才考虑引入。这次 1.0 新增的功能包括:

团队说这些功能都琢磨了好几个月,是”扔到墙上之后粘住了的那些”,掉下来的清单要长得多。加了这些之后用起来像迈了一大步,但”仍然像 Pi 那样简单”。公告附带的演示也很能说明新能力的组合方式:Pi 用 Codemode 写脚本把一周的提交归纳成摘要;然后 Pi 给自己写了一个扩展,造出一个”虚拟模型”,规划阶段用 Claude Opus,实现阶段交给 GPT 6 Luna,由 Jev 判断什么时候切换;最后用 /session 查看各模型的成本和缓存命中。

“你们不是说不要 MCP 吗?” 同一周 Earendil 还发了一篇配套文章《You Said No MCP!》,解释立场为何转变。Pi 过去在官网上骄傲地声明不支持 MCP,Mario 还专门写过文章唱反调。文章说,世界不是静止的,今天的 MCP 已不是一年前的 MCP;更重要的是,为 MCP 做的改动本身就普遍有用,比如同样的改动让 Pi 更容易调用 Jev。说到底,Pi 需要的和 MCP 需要的很像:一个以解释器形式存在的沙箱。他们依然认为 MCP 最大的问题是难以组合,很多 MCP 服务器仍然是为”把工具一股脑塞进上下文”的外壳设计的,为了省 token 返回纯文本。他们心目中的 MCP 应该更接近”带智能工具发现的 OpenAPI”:工具返回结构化数据,可以通过文档和描述被发现。CLI 之所以好用,是因为模型可以用 bash 技巧把东西串起来,MCP 本来也可以做到。

Codemode 是什么。 外壳执行工具通常有两个位置:bash 所在的地方,或者外壳的智能体循环所在的地方,两边的信任级别差别很大。Codemode 运行在外壳这一侧,本质上是一个编排工具调用的沙箱,让智能体用 JavaScript 决定调用顺序、把多个调用组合起来,状态也保存在会话记录里而不是文件系统里。选 JavaScript 是因为精简版 JS 可以打包成 WASM,提供不错的隔离。配置了 MCP 时 Codemode 会自动加载。文章给了一个例子:让 Pi”用 Jev 找出 issue 跟踪器里最沮丧的评论者”,它会写一段脚本,从 Linear 的 MCP 拉取 167 个未关闭 issue 及评论,四路并发交给 Jev 分类器判断情绪,最后得出 156 个中性、11 个轻度不满、没有高度愤怒的结论,整个过程几乎不占用上下文。

Pi Durable:给长时间运行的智能体用的新底座。 公告的后半部分介绍了同日发布的实验性新包 Pi Durable。团队发现 Pi 有些方面不符合很多人想要的用法:Pi 编程智能体是给一个人在终端里驱动的,进程挂了就看看发生了什么再让它继续。而 Earendil 希望把 Pi 的极简理念带到终端和编程之外,需要能从不同界面接入、支持无限长的对话、扛住各种内外部故障、允许多人一起操控同一批智能体。与其把 Pi 改成它不是的样子,他们另起了一个包。Mario 的长文详细介绍了它的设计:整个源码不含测试约 1.5 万行;外壳架在一个存储后端之上,自带内存、SQLite、JSONL 三种存储,可以跑在 Node、Bun 甚至 Cloudflare Durable Object 里;每一步都是一个先存检查点再继续的任务,进程死掉后新进程打开同一份存储就能接着跑,被打断的模型请求会重发,被打断的工具调用只有声明”可安全重放”时才会重跑,否则告诉模型调用被中断;一个外壳可以同时跑很多对话,对话可以从任意位置分叉(比如 Slack 频道是一个对话,某个讨论串是它的分叉);扩展由系统提示片段、工具、钩子和任务组成,任务和对话构成一棵所有权树,取消一个任务会自底向上取消它拥有的一切。至于为什么又用 TypeScript,文章说这是最容易起步的方式,将来不排除移植到 Rust。

Pi 1.0 和 Pi Durable 都以 MIT 协议发布,代码在 github.com/earendil-works/pi。

HN 评论精华

本帖 1687 分、600 多条评论,是本周最热的帖子之一。讨论主要围绕几件事:Pi 到底怎么用、它还算不算”极简”、TypeScript 的选型之争,以及一段关于托尔金式公司命名的插曲。Pi 的两位核心人物 Armin Ronacher(the_mitsuhiko)和 Mario Zechner(badlogic)都在评论区亲自回应。

“大家到底怎么用 Pi?” wasting_time 的提问拿到 100 多条回复,他自嘲”我还像个穴居人一样在终端里用 Claude Code 和 Codex”。回答五花八门。FacelessJim(得票很高)说他想跑本地模型,Pi 是唯一真正能用的,因为它没有一个”巨大的系统提示词”,不至于在他那台破笔记本上光预填充就要几分钟;nfriedly 也说刚开始不知道 ollama 默认上下文极小,其他外壳的系统提示就把上下文吃光了,只有 Pi 能跑。darklinear 用 ChatGPT 订阅驱动 Pi,觉得比原生 Codex 还好:整个性能分析加重构的会话不到 2 万 token 就跑完了,而 Codex 在你发第一条消息前加载的默认内容就差不多这么多。pettijohn 让 GPT 6.1 Sol 审需求,再派生一个本地 Qwen 子会话干活,Sol 审完让 Qwen 修,一遍下来成功率约 95%,”以更慢的速度拿到旗舰级质量”。ritzaco 在 VPS 上跑 Pi,一个实例监听 WhatsApp 群里的账单,另一个用 DeepSeek 做 OCR 并写进 Django 数据库,他坦白”整个系统怎么运作我也不清楚,因为是智能体搭的”。hermannj314 说他选 Pi 跟功能无关:ChatGPT 桌面版刻意隐藏状态、会话和配置存在哪,Pi 默认就告诉你用了多少上下文、花了多少钱、会话存在哪,”一下子就祛魅了”。crazeddog 在一家 100 多人的公司把 Pi 推成了编程界面,配了对接内部系统的扩展和一个全员可用的 Web 外壳。

也有不少冷水。avazhi 抱怨十个人回复了提问,没一个真正回答,”这个帖子是不是被水军刷了?”;distantsounds 质疑”数十万用户”的说法,Wheen 列出数据反驳:npm 周下载 360 万、GitHub 11 万星、在 OpenRouter 月度 token 榜上排第五(它的分支排第六),加起来接近 Claude Code 的量级。stefan_ 说 Pi 就是”前 AI 时代的 vim 或机械键盘,当时不重要,现在也不重要,但永远能引发无穷的讨论”;nvarsj 和 ropintus 都把它比作 Arch Linux,”为了折腾而折腾”。shpx 讲了一次糟糕体验:同一个 OpenAI 模型、同一个报错,Codex 指出”你可能以为是 X,其实是 Y”,换到 Pi 却给出了错误的 X,他从此再没用过。

Pi 还算极简吗? 这是争议最大的话题。hhh 质疑 Pi 的”被验证”标准不一致:Jev 一类模型火起来还不到一个月就被支持了,MCP 发展了快两年才进核心。Armin 回应说答案”说实话挺让人失望的”:他们看模型在做什么。模型是在各自厂商的外壳上训练的,Pi 不打算对抗模型的行为;Codex 内部用 Codemode 做并行工具调用,所以 Codemode 是必然的;而 pi-ai SDK 早就支持图像生成和分类模型,只是没有扩展就没法用,Codemode 补上了这个缺口,有了 Codemode,现代 MCP 在服务器配合的情况下也能用得不错。Zambyte 补了一句:分类模型已经存在快一百年了,Jev 的新意只在于它是通用分类器,不用再为每个任务训练新模型。

wgd 叹气说 Pi 作为极简 TUI 的日子不多了,Mario 亲自回复:这几天在各个社交平台上看到很多次这种说法,但他加 AGENTS.md、skills、llama.cpp、扩展、备用 TUI 模式、对话中途改系统消息和工具集(为了保住 KV 缓存)、图像模型时,没人这么说。他们跟着模型的训练方向走,GPT 系列现在就是用 Codemode 训练并行工具调用的;MCP 规范最近的大更新让它比过去两年”没那么糟”了,配合 Codemode 已经”过得去”。这些功能都是可选的,唯一能算膨胀的是 QuickJS WASM 多出来的几兆。他很诚恳地问:到底什么让”Pi 很极简”变成了”Pi 不极简”?blahgeek 贴出 Mario 去年那篇明确说”不要 MCP、不要全屏 TUI”的文章,说正是这两点吸引了很多人。shabbyrobe 表示 MCP 和 Codemode 的理由他能接受,但全屏模式让他很反感,他已经有一个他非常依赖的回滚缓冲区,就是终端本身;octoberfranklin 更不客气:”先是 MCP,现在又是全屏,你们是被私募收购了吗?”Mario 回复说全屏默认是因为 Windows Terminal 等终端的用户问题不断,原来的回滚模式在设置里还在,”绝不会移除”。FacelessJim 抱怨的”模型推理时历史记录会跳回开头”的老 bug,几个人指出正是全屏模式修好的;miroljub 解释这个问题是终端回滚机制固有的,自己写过外壳也碰到过,要么跳,要么回滚内容陈旧,只能另起备用屏幕自己实现滚动。

utilize1808 问为什么 Anthropic 缓存预热不做成独立包;ruined 答得干脆:”吃完午饭回来发现新的 5 小时额度蒸发了”可不是一个功能。heavensteeth 指出 Pi 有 45 万行代码、一堆依赖还要 Node;eddieroger 和 ecocentrik 解释 Pi 的”极简”指的是架构,默认只有 read、write、edit、bash 四个工具,其余靠扩展按需加。zmmmmm 的看法比较通透:新工具常以”极简”为借口解释功能少,成熟后功能和复杂度总会爬进来,但无论如何,模块化的设计底子会更好。

为什么又是 TypeScript? semiquaver 自知会被踩,还是问:一个交互和并发要求很高的 CLI 工具,为什么要用”一门靠浏览器走运出名的玩笑语言”?apatheticonion 也希望这些工具都能是一个静态编译的二进制,他用 Rust 和 gpui 重写了 Codex 桌面版,120 帧以上、40MB 内存。反方意见很集中:pezgordo 说外壳大部分时间都在等模型响应;crooked-v 和 bel8 说 TypeScript 能热替换几乎所有代码,Pi 能飞快地修改和扩展自己,这本身就是卖点;sieve 认为 TS 的类型系统是他用过最有表现力的。redrix 提醒 Pi Durable 的文章里已经答了这个问题:TS 最好起步,将来不排除移植。droidjj 调侃:”反正过几个月他们大概会让 Opus 6.5 和 GPT-7 用 Rust 重写一遍。”

插件生态的两面。 ricardobeat 用了几周后离开,因为插件生态变成了”一片垃圾海”,大量 vibe coding 出来的项目根本不能用却有几千星;platinumrad 也说没时间甄别哪些插件安全靠谱。bel8 的做法是让 LLM 把想要的插件功能提取成自己的精简版,并要求它不安装、不运行任何脚本,先扫一遍恶意代码。richardgill88 用了 9 个多月,写了一份极简配置清单,坦言热门扩展很多”臃肿、怪异、一看就是 vibe coding”。不少人推荐”开箱即用”的发行版 oh-my-pi,aliasxneo 和 jszymborski 都说它远胜原版 Pi 和 OpenCode。

其他值得一提的。 julesrms 借楼推荐自己的 GUI 外壳 Juggler(”每次 Pi 登顶我都小声嘀咕:我的也能做这些,还有好看的图形界面”),拿到 113 条回复,引出一场 TUI 与 GUI 两派的争论,jonenst 说大家一窝蜂上 TUI”没有任何理性理由,近乎病态”。nixpulvis 问外壳对模型表现影响有多大,jupp0r 认为很多人归结为 Claude 和 Codex 模型差异的东西其实是外壳差异。capocasa 做过 token 测试:Pi 和他自己的 3code 用的 token 比 Claude Code 少四分之三,OpenCode 少一半。azuanrb 正用 Pi SDK 在 Kubernetes 上搭 Slack 值班机器人,为了让 JSONL 会话扛住 Pod 中断引入了 DBOS,lukebuehler 告诉他 Pi Durable 正是为这个场景做的。最后还有一段命名插曲:好几个人吐槽科技公司滥用《魔戒》名字(Palantir、Anduril 等),dmazin 说把一个开源外壳的作者和 Palantir 归为一类”可笑”,gholap 引了 Armin 的话:”等我老了,我希望人们记得托尔金式命名的公司不只是做武器和监控的。”trvz 说这该叫 3.14 版,Armin 回答他们特意在美东时间 3 点 14 分发布的。