AREX Feed Article
Pi 发布 1.0 稳定版,同步推出长时智能体框架 Pi Durable
10 月 1 日 19:15(UTC),Pi 官方 X 账号 发帖宣布:「People of Pi:我们已发布 Pi 1.0,并随之推出 Pi Durable。去把它们变成自己的(Go make them yours)。」推文指向 :Pi 1.0 被描述为「一个经过强化的、极简且可扩展的智能体 harness」——harness(agent harness)即运行大模型对话与工具调用的软件框架;Pi Durable 则是用于构建长时运行智能体应用的实验性新包。
两个发布当天即可使用:Pi 1.0 的安装命令是 curl -fsSL https://pi.dev/install.sh | sh(Windows 上为 PowerShell 脚本),文档在 ;Pi Durable 以 npm 包形式发布,两者均采用 MIT 许可,源码放在 。截至 10 月 6 日,这条推文在 X 上获得 772,646 次浏览、4,667 个点赞和 486 次转发。
数月打磨:官方称 Pi 已是「人们和企业可以依靠的软件」
公告署名 Earendil,这家公司自述的使命是「打造增强人类能动性(human agency)的软件与开放协议」。文中称,全世界每周有数十万人使用 Pi,其中许多人提交 issue 和 pull request;团队用数个月的这类反馈去改进、强化 Pi,把它变成了他们口中「人们和企业可以依靠的稳定软件」。
极简仍是 Pi 刻意守住的一条线。公告写道,智能体工具每周都在变,但许多改动并不持久:「我们等到某样东西证明了自己,才考虑采用它」,并把它的真实功能与固有的复杂度放在一起权衡。对于这次进入 1.0 的功能,官方的原话是:「它们被扔到墙上,粘住了。从墙上掉下来的清单要长得多。」这个账号的简介同样写着:「世上的 agent harness 很多,但这个是你的」(There are many agent harnesses, but this one is yours)。
进入 1.0 的七项能力:从 MCP 到默认全屏
公告列出了这次并入 Pi 的功能:Codemode——对 MCP(Model Context Protocol,模型上下文协议)的原生支持,以及对 Jev 等非大语言模型(non-LLM)和图像模型的支持;扩展支持虚拟模型;延迟工具加载(deferred tool loading);为 Anthropic 模型做缓存预热(cache warming);会话中途系统消息(mid-conversation system messages,即感知转录历史的提示词与工具变更);一套新的 TUI(终端界面)主题;以及默认进入全屏模式。
公告里的演示图注给出了具体用法:Pi 给自己写了一个扩展——一个虚拟模型,用 Claude Opus 做规划、用 GPT 做实现,由 Jev 决定何时切换(演示中切换目标写作 GPT 6 Luna);Codemode 能把一周的提交记录浓缩成一份简短摘要;/session 命令则按模型和缓存用量拆分成本。官方对成品的感受是「像一次大步向前,但依然感觉简单,像 Pi」。
Codemode 的前史:从拒绝 MCP 到装进核心
Codemode 的加入有一段官方自述的前史。9 月 29 日,也就是 Pi 1.0 发布前两天,Earendil Engineering 发文复盘了立场转变:过去的 pi.dev 页面上骄傲地写着 Pi 不支持 MCP,他们在播客里也不止一次表达过对 MCP 的不屑;而现在升级到 Pi,MCP 已是受支持的功能。此前 MCP 在 Pi 里一直以扩展形式存在,比如社区开发者 nicobailon 维护的 。
转变的理由有两层:一是 MCP 本身在这一年里改进了;二是为接入 MCP 所做的改动——延迟工具加载、会话中系统消息、推理等级变更——本身就普遍有用,也让 Jev 这类模型更容易在 Pi 里使用。文中把 Codemode 解释为运行在 harness 一侧的 JavaScript 沙箱:智能体用它灵活编排和组合工具调用,状态保存在会话转录里而非文件系统。文中的示例让 Pi 通过 Linear 的 MCP 拉取 issue 跟踪器上的 167 个开放 issue,再用经 Cloudflare Workers AI 调用的 typesafe/jev 分类模型给每条 issue 下的评论打情绪分:156 条中立,11 条轻度沮丧,没有一条高度愤怒。给这次拥抱的理由,文章只写了一句话:「我们相信,对一件事物施加正面影响的最好方式是拥抱它。」
Pi Durable 的机制:从检查点续跑,多人可掌舵
Pi Durable 不取代 Pi 编码智能体。配套发布的把它定位为一个框架:用来构建任何智能体应用,编码智能体也在内;它与 Pi 编码智能体共享代码(如 pi-ai 库),也共享原则——极简与可塑。按文中给出的定义,harness 是「存储加上并行运行一个或多个大语言模型对话所需的机制」,它提供模型调用的工具,以及工具运行的执行环境。
官方列出的目标是让智能体「随处运行、能从不同界面触达、支持无限长的对话、在灾难性的内外部故障中存活,并让多个人类掌舵同一个智能体」。落到机制上:运行的每一步都是一个任务,推进前先落一个检查点;进程死掉后,新进程打开同一份存储,找到没做完的任务,从上个检查点继续——被切断的模型请求会重发,半截答案留在转录里并标记为中止;工具调用只有在声明「可安全重放」时才会重跑,文中的 deploy(部署)工具就是一个永不重放的例子;带 requestId 的提交则保证恰好执行一次。
存储后端内置 memory、SQLite 和 JSONL 三种,附一致性测试套件和基准测试;SQLite 与 JSONL 的代码不依赖 Node API,配上小适配器就能跑在 Bun 或 Cloudflare Durable Object 上,同一时刻只有一个进程拥有存储,其他客户端附着到该进程。一个 harness 可以并发运行任意多个对话,对话能在转录的任意一点 fork(分叉出新对话),引用父对话到此为止的历史而不复制——文中的例子是:Slack 频道是一个对话,别人开的线程是它的 fork,两者互不阻塞。压缩(compaction)也被做成后台任务:接近上下文上限时总结旧消息,摘要放到下一个回合边界,对话只在下一个请求放不下时才等待,旧消息永远留在存储里可查。任何数量的客户端都能附着到同一个对话:先拿到当前视图——转录、正在流式输出的回答、运行中的工具、排队消息——之后只接收增量;后来者和断线重连者从当前视图出发,任何客户端都能掌舵运行中的对话或排队追加消息。
15,000 行源码、热替换与 TypeScript 的取舍
官方称 Pi Durable 不含测试的全部源码约 15,000 行,最坏情况下通读全部源码对 GPT 约需 150,000 tokens(词元)、对 Claude 约需 250,000 tokens;在其上构建通常用不着全部,仅存储后端就占约 3,000 行、常常可以跳过——让智能体自己读懂 Pi Durable,被明确写进了设计意图。
扩展可以边跑边换:往注册表里安装一个同名扩展即一步完成替换,正在执行的工具调用用启动时的代码跑完,下一次调用换用新代码;对话只存扩展和工具的名字、不存代码,重启后自然接上新进程安装的版本。上手即装:npm install @earendil-works/pi-durable @earendil-works/pi-ai @earendil-works/chord。仓库里已经备好 30 多个示例、一个构建在 Pi Durable 上的小型编码智能体,还有一个约 1,300 行 TypeScript 的度假规划智能体(大部分行数花在 TUI 上);演示图注显示,一个子智能体把三次搜索作为持久任务并行运行,主进程死亡、重启之后,只有标记为可安全重放的 search 被重新执行。
文末的 FAQ 回答了「为什么又是 TypeScript」:因为这是最容易起步的方式;移植到 Rust「并不排除」,但当下专注 TypeScript。官方预告,未来几周会展示他们用 Pi Durable 为自己构建的内部工具,比如一个 Slack 机器人和一个 GitHub 分诊机器人。边界同样写在明处:Pi Durable 目前是实验性包,API 仍可能变动。