10 月 1 日,工具 Earendil 发布 Pi 1.0——一个「加固过的、极简的、可扩展的智能体外壳(agent harness)」。官方称 Pi 每周有数十万人使用,本次 1.0 是在数月的 issue 与 PR 反馈基础上打磨出的稳定版本,目标是「个人和企业都能依赖」。同期还发布了一个实验性新包 Pi Durable,面向长时间运行的智能体应用。

新进入 1.0 的功能

官方把这次纳入 Pi 的内容列为七项:

  • Codemode:原生支持 MCP,以及 Jev、图像模型等非 LLM 模型
  • 虚拟模型的扩展支持
  • 延迟工具加载(deferred tool loading)
  • Anthropic 模型的缓存预热(cache warming)
  • 对话中的系统消息(mid-conversation system messages,可按 transcript 变更提示词与工具)
  • 新的 TUI 主题
  • 默认全屏模式

其中 Codemode 值得单独说明。按 Earendil 本周另一篇文章的说法,Codemode 是运行在智能体外壳一侧(而非 bash 那一侧)的沙箱,用来编排和组合工具调用:模型可以决定调用顺序,用 JavaScript 把多次调用拼成一段逻辑,其状态随会话 transcript 一起保存而不是落在文件系统。Pi 在配置了 MCP 时会自动加载 Codemode。

这与 Earendil 对 MCP 的态度转变直接相关。该团队曾在官网明确声明 Pi 不支持 MCP,也在播客里多次表达过保留意见;9 月 29 日发布的《You Said No MCP!》一文解释了原因——他们认为今天的 MCP 与一年前已不同,且「让它进核心所需的改动本身是普遍有用的」,这些改动顺带让 Jev 在 Pi 内更易使用。文中也坦承 MCP 最大的问题仍然是难组合,理想的 MCP 应更接近「带智能工具发现的 OpenAPI」,工具应返回结构化数据、靠文档与描述被发现。

一条「等它证明自己」的采纳节奏

Earendil 强调 Pi 的口碑建立在极简上,因此会守住这条线:智能体工具每周都在变,但很多变化活不下来;Pi 的做法是等某项能力被证明之后再考虑吸收,并把它的实际收益与随之而来的复杂度放在一起权衡。

按官方措辞,上述七项「有些已经想了好几个月」,是「贴到墙上没掉下来」的那一批,而「掉下来的那批要长得多」。他们自评:用上这些新功能后感觉是一次大步,但用起来「依然简单,还是 Pi 的味道」。

Pi Durable:把极简与可塑性带出终端

官方也承认,Pi 的形态并不贴合一部分人的用法。Earendil 想把 Pi 的极简与「在编码智能体之外、终端之外驾驭 AI」的方式带出去,让工具能从不同入口触达,并支持更长的对话与任务——按他们的说法,「简言之,Pi 必须变得更 durable」。

他们没有让 Pi 偏离极简的根,而是把这块工作合进一个新实验包Pi Durable:一个用于构建长时间运行智能体应用的底层(substrate),让这类应用的开发者和使用者都能以极高的灵活度操控底层智能。它与 Pi 共享两条关键原则——极简与超强可塑性,但把它们延伸到了新的维度。

配套的 Pi Durable 一文给出了更具体的边界:Pi 作为编码智能体是跑在你(或远端)机器的终端里、由一个人驱动的,进程挂了你看着日志让它继续,Pi 1.0 专注的正是这一点且不会改变;而 Pi Durable 要的是一个能跑在任何地方(目前指有 JavaScript 运行时的地方)、能从不同入口触达、支持无限长对话、能扛住严重的内外部故障、且允许多人共同操控同一智能体的外壳。它不取代 Pi 编码智能体,而是构建任意智能体应用(包括编码智能体)的框架,与 Pi 共享代码(如 pi-ai)也共享原则。

几个可核对的工程数字与设计点:

  • 体量:不含测试的整个源码约 15,000 行,用 GPT 折合约 150,000 token、用 Claude 约 250,000 token——这是最坏情况;构建时智能体很少需要全部,仅存储后端就有约 3,000 行通常可以跳过。官方称整个 Pi 系列都是「构建得能让智能体自己读懂」的。
  • 存储:harness 打开在一个存储后端之上,内置内存、SQLite、JSONL 三种存储,并为自备后端提供一致性测试套件与基准;SQLite 与 JSONL 的实现不用 Node API,加一个小适配器即可跑在 Bun 或 Cloudflare Durable Object 上。同一时刻只有一个进程持有某份存储,其他客户端挂到该进程上。
  • 崩溃恢复:运行的每一步都存检查点;进程死后新进程打开同一份存储,从中断处继续——被截断的模型请求会重发(部分回答留在 transcript 里并标记为中止),被截断的工具调用在「安全」时重跑、否则告知模型它被打断了。工具用 replay 语义声明自己能否重跑:只读的 search_issues 标为 replay: "safe",而部署类的 deploy 不加 replay,崩溃后绝不重复执行。提交用 requestId 保证恰好一次。
  • 并发与分叉:一个 harness 可同时跑任意多段对话,互不阻塞;对话可在任意位置分叉,直接看到父对话此前的历史而无需复制。文中举例:Slack 频道是一段对话,帖子里的回复是从该消息处 fork 出的另一段,两者并行。
  • 扩展:扩展是「系统提示词片段 + 工具 + 钩子 + 任务」的具名集合;系统提示词在每次请求前按当前扩展重建,改动会被记进 transcript 的对应位置,重启或分叉时看到的就是模型当时看到的,在支持中途变更的模型上只发增量、保住提示词缓存。钩子(hooks)可改写请求、拦截或改写工具调用、替换结果,崩溃后会重跑的钩子要把决策存进 memo(首次写入生效)。
  • 子智能体:Pi Durable 不内置子智能体,官方称几行代码即可实现——一个工具创建自己拥有的对话、换更小的模型、等它回答;子智能体是一段普通对话,因此同样能从崩溃中恢复、独立核算成本。
  • 压缩:压缩本身也是一个任务,且在对话继续进行时后台执行;上下文接近上限时后台总结旧消息,只有在下一个请求确实装不下时对话才会等待。旧消息始终保留在存储中。
  • 应用状态:todo、计划、工单这类应用状态存在文档(documents)里——类型化 JSON 与 transcript 并排存放、在同一次原子提交里变更,因此状态不会和产生它的 transcript 出现分歧。

安装与授权

curl -fsSL https://pi.dev/install.sh | sh

Windows:

powershell -c "irm https://pi.dev/install.ps1 | iex"

Pi Durable 以实验包形式提供:

npm install @earendil-works/pi-durable @earendil-works/pi-ai @earendil-works/chord

两者均为 MIT 许可证。文档在 pi.dev,代码托管在 GitHub 的 earendil-works/pi。Earendil 给出的公司宗旨是「打造强化人类能动性的软件与开放协议」。

核心总结

  • 发布:Pi 1.0 稳定版 + 实验包 Pi Durable,两者均 MIT 许可,每周数十万人在用 Pi
  • 七项新功能:Codemode(含 MCP 与非 LLM 模型)、虚拟模型扩展、延迟工具加载、Anthropic 缓存预热、对话中系统消息、新 TUI 主题、默认全屏
  • 采纳原则:先等能力被证明,再权衡实际收益与新增复杂度;MCP 从「明确不支持」转向进核心即是这个节奏的产物
  • Pi Durable 定位:不替代 Pi 编码智能体,而是可在任意 JS 运行时上跑、支持超长对话与崩溃恢复、允许多人操控的智能体应用框架
  • 工程细节:约 15,000 行源码;内存/SQLite/JSONL 存储可换后端;按步骤存检查点、工具 replay 语义、提交 requestId 恰好一次;压缩在后台跑;应用状态用文档与 transcript 同事务写入
  • 官方演示:用 Codemode 让 Claude Opus 规划、GPT 实现、Jev 决定何时切换的虚拟模型,/session 可按模型与缓存拆解成本

原文:Pi 1.0(Earendil,2026-10-01);另见 Pi Durable、You Said No MCP!(Earendil,2026-10-01 / 2026-09-29)