← 返回更新日志

Pi v0.69.0

2026-04-22 · GitHub 原文
### 新功能 - 扩展和 SDK 集成迁移至 TypeBox 1.x,包括 TypeBox 原生的工具参数验证,现在可在 Cloudflare Workers 等受限评估运行时中正常工作。详见 [docs/extensions.md](docs/extensions.md) 和 [docs/sdk.md](docs/sdk.md)。 - 通过 `ctx.ui.addAutocompleteProvider(...)` 支持堆叠扩展自动补全提供者,允许扩展在内置的斜杠和路径补全之上叠加自定义补全逻辑。详见 [docs/extensions.md#autocomplete-providers](docs/extensions.md#autocomplete-providers) 和 [examples/extensions/github-issue-autocomplete.ts](examples/extensions/github-issue-autocomplete.ts)。 - 通过 `terminate: true` 终止工具结果,允许自定义工具在最后一次工具调用后直接结束,无需为自动触发的后续 LLM 轮次付费。详见 [docs/extensions.md](docs/extensions.md) 和 [examples/extensions/structured-output.ts](examples/extensions/structured-output.ts)。 - 在代理流式传输和压缩期间,为支持的终端提供 OSC 9;4 进度指示器。 ### 破坏性变更 - 将官方编码代理代码、SDK/示例/文档及包元数据从 `@sinclair/typebox` 0.34.x 迁移至 `typebox` 1.x。新的扩展、SDK 集成和 pi 包应依赖并导入 `typebox`。旧版扩展加载仍会别名根 `@sinclair/typebox` 包,但 `@sinclair/typebox/compiler` 不再提供 shim。此迁移还采用了新的 `@mariozechner/pi-ai` TypeBox 原生验证器路径,因此工具参数验证现在可在 Cloudflare Workers 等受限评估运行时中正常工作,而不会被跳过([#3112](https://github.com/badlogic/pi-mono/issues/3112)) - 会话替换命令现在会在 `ctx.newSession()`、`ctx.fork()` 和 `ctx.switchSession()` 调用后使捕获的替换前会话绑定扩展对象失效。旧的 `pi` 和命令 `ctx` 引用现在会抛出异常,而不是静默地指向被替换的会话。迁移指南:如果代码需要在上述调用后继续在替换会话中工作,请向同一方法传递 `withSession` 并在那里执行切换后的工作。实际操作中,将切换后的 `pi.sendUserMessage()`、`pi.sendMessage()` 以及命令 ctx/会话管理器访问移入 `withSession`,并仅使用传递给该回调的 `ReplacedSessionContext` 进行会话绑定操作。注意事项:`withSession` 在旧扩展实例已收到 `session_shutdown` 后运行,旧清理逻辑可能已使捕获的状态失效,捕获的旧 `pi` / 旧命令 `ctx` 已过期,以及之前提取的原始对象(如 `const sm = ctx.sessionManager`)仍由调用者负责,切换后不得复用。 ### 新增 - 新增通过 `terminate: true` 终止工具结果的支持,允许自定义工具在不自动触发后续 LLM 调用的情况下结束当前工具批次,并附带 `structured-output.ts` 扩展示例及展示该模式的扩展文档([#3525](https://github.com/badlogic/pi-mono/issues/3525)) - 在代理流式传输和压缩期间新增 OSC 9;4 终端进度指示器,使 iTerm2、WezTerm、Windows Terminal 和 Kitty 等终端能在其选项卡栏中显示活动状态 - 新增 `ctx.ui.addAutocompleteProvider(...)` 以在内置斜杠/路径提供者之上堆叠扩展自动补全提供者,并附带 `github-issue-autocomplete.ts` 示例及扩展文档([#2983](https://github.com/badlogic/pi-mono/issues/2983)) ### 修复 - 修复了导出的会话 HTML,在将其渲染为锚点标签前对 Markdown 链接 URL 进行清理,从而拦截 `javascript:` 风格的恶意载荷,同时保留共享/导出会话中的安全链接([#3532](https://github.com/badlogic/pi-mono/issues/3532)) - 修复了 `before_agent_start` 内的 `ctx.getSystemPrompt()`,使其能反映由早期 `before_agent_start` 处理程序进行的链式系统提示词更改,并澄清了扩展文档中关于提供者载荷重写以及 `ctx.getSystemPrompt()` 报告内容范围的说明([#3539](https://github.com/badlogic/pi-mono/issues/3539)) - 修复了内置 `google-gemini-cli` 模型列表和选择器条目,新增 `gemini-3.1-flash-lite-preview`,使 Cloud Code Assist 用户无需手动指定 `--model` 回退选项即可使用([#3545](https://github.com/badlogic/pi-mono/issues/3545)) - 修复了扩展会话替换流程,确保 `ctx.newSession()`、`ctx.fork()`、`ctx.switchSession()` 及导入会话替换在运行切换后工作前完全重新绑定,新增了带有全新 `ReplacedSessionContext` 辅助方法的 `withSession` 替换回调,并使过期的替换前 `pi` / `ctx` 会话绑定访问抛出异常,而非静默地指向错误的会话([#2860](https://github.com/badlogic/pi-mono/issues/2860)) - 修复了 `models.json` 内置提供者覆盖配置,使其无需 `baseUrl` 即可接受 `headers`,因此仅基于请求头的覆盖配置现在能正确加载并生效([#3538](https://github.com/badlogic/pi-mono/issues/3538))