Pi 0.87.1 之后:追赶到 1.2.0

October 14, 2026 • 共 866 字 • 阅读约 4 分钟

DAC 的 Pi 门面钉在 0.87.1(见基线文)。自那以后,Pi 又发了十版, 如今是 1.2.0。我们还没移钉版。本文分组梳理这些变化,让你知道后面有什么,并标出升级时 门面会被牵动的地方。

在 npm 上,Pi 跳过了 0.88 到 0.98,于 2026-09-29 从 0.87.1 直接跳到 0.99.0,两天后再到 1.0.0。这十版依次是 0.99.0、0.99.1、0.99.2、1.0.0、1.0.1、1.0.2、1.0.3、1.0.4、1.1.0、 1.2.0。

codemode 与 MCP 落地(0.99.x)

这段差距里最大的变化。Pi 长出了一个 codemode 工具,在 QuickJS 沙箱里跑模型写的 JavaScript,脚本可以并行调用 Pi 的工具;还有一等公民的 MCP 支持,走 stdio 或 streamable HTTP,带 OAuth,由 /mcp 和 pi mcp 管理。随之而来的是工具暴露模型 (direct、model-only、codemode、deferred、hidden)、继承终端配色的 system 主题、Sign in with ChatGPT,以及虚拟模型与分类器模型。构建转到 TypeScript 7.0、目标 ES2024。0.99.1 把 Codex 默认改成 GPT-6.1 Sol。0.99.2 让 MCP 服务器不再挡住首个 prompt,并补了更多鉴权选项。

Pi 1.0(1.0.0)

1.0 这一版是把 0.99 的地基夯实,而不是继续堆功能。TUI 默认全屏;想保留终端回滚就设 tuiMode: "regular"。codemode 的 prompt 瘦了约 40%,报错还会告诉你怎么恢复。codemode 能生成图像。/login 增加了 Radius,以及给无头机器用的 Anthropic 复制码登录。MCP OAuth 做了加固:RFC 9207 的 iss 校验、按服务器存凭据、保留已授予 scope 的 step-up。启动 可以只留 header。

1.0.x 的精修

1.0.1 加了 Nix flake、经 .pi/mcp.json 的按项目 MCP 覆盖、给尚未注册工具用的渲染器, 以及 Cloudflare Clef 分类器;它为一个安全公告钉住了 brace-expansion,并从包里移除了 npm-shrinkwrap.json。1.0.2 加了按 thinking level 的采样参数。1.0.3 把 Azure 提供方从 azure-openai-responses 改名为 azure,并加了 Foundry Chat Completions。1.0.4 给 --tools 和 --exclude-tools 加了 * 通配,以及 --no-mcp 开关。

1.1.0 与 1.2.0

1.1.0 加了经 OSC 7501 的程序状态上报,终端和面板据此能看到 working、blocked、done、 failed;还带来 Claude Haiku 5.5、用 +name 和 -name 调整默认工具集、作为分类器的 GPT-6 Luna,以及原生 llama.cpp 决策模型。当前版 1.2.0 加了按 key 的 OpenRouter 模型表、 为 settings/models/keybindings/themes 发布的 JSON schema、经 OSC 52 的远程会话剪贴板, 以及对扩展触发 run 生效的 before_agent_start;同时移除了尚未发布的实验性 server/client/plugin 栈。

升级会牵动什么

门面嵌入的是 Pi 的 SDK,所以真正要紧的是那些动到 SDK 或事件语义的条目。

  • 1.2.0 把 before_agent_start 变成按 messageType 判别的 union,让它对 triggerTurn run 也触发,并让会话在 run 启动期即算 busy,于是 ctx.isIdle() 为假、 pi.sendMessage() 入队而不是再起一个 run。它还改了 pi mcp list --json 的形状。
  • 0.99.0 把 bash 和 powershell 的结构化结果改成最多容纳 1 MiB 输出并带 truncated 与 full_output_path,还把内建扩展和工具改名为 builtin:<name>。
  • 1.0.1 移除了 npm-shrinkwrap.json,于是 npm 安装不再钉传递依赖;可复现安装改走 pi.dev installer。
  • 1.0.3 给 Azure 提供方改名,属于配置层的破坏。

门面为它依赖的每条上游行为都留了一张事实卡,规矩是移钉版前逐条复验、跑一遍全链 smoke。升到 1.2.0 就是这一整套动作,所以我们刻意排期,而不是顺手就升。

状态

DAC 生产上仍跑 Pi 0.87.1。本文是这次最终升级的地图。等门面移到新钉版,那一版会在本 系列里单独成文。