piagent_
← /资讯
2026年9月8日community

pi 运行时依赖刷新:修复 Google GenAI 工具调用超限与 mermaid 类指派渲染

mitsuhiko 于 2026-09-08 将 Pull Request #9341 合入 pi 编码代理。标题写的是运行时依赖更新,但摘要里随版本升级一起带着两个用户可见的修复:处理 Google GenAI 新的 TOO_MANY_TOOL_CALLS 结束原因(finish reason),以及让使用类指派(class assignment)语法的 mermaid 图表正常渲染。

大头正是标题所述的例行维护:minimatch 10.2.6、undici 8.10.2、typebox 1.3.27、semver 7.8.5、ignore 7.0.8、esbuild 0.28.2、chalk 6.0.0,提供方一侧还有 @anthropic-ai/sdk 0.124.0 与 @aws-sdk/client-bedrock-runtime 3.1127.0。diff、openai 与 highlight.js 的版本刻意保持不动。根 lockfile、coding-agent shrinkwrap 与安装器锁全部重新生成,并在生成的锁里保留工作区嵌套的代理依赖版本。打包脚本还把 kerberos 加入可选原生模块白名单用于代理认证,缺失时由调用方提示安装。

更关键的是 @google/genai 从 1.52.0 跳到 2.21.0——一次 major 升级,其类型里出现了新的 TOO_MANY_TOOL_CALLS 结束原因。packages/ai 里的 mapStopReason 是一个穷尽式 switch,default 分支会对未知值直接抛错,因此新值需要显式分支:现在它与 MALFORMED_FUNCTION_CALL、UNEXPECTED_TOOL_CALL 同组,映射为 error 停止原因(stop reason),而不再落入抛错路径。

第二个修复把 grok-mermaid 从 0.2.2 升到 0.2.3,并围绕它改写了 mermaid 测试。形如 A[Foo]:::highlight --> B[Bar] 的类指派行此前会被判为非法并报 “dropped, expected a link”,整张图随之回退为代码块并附 “Mermaid diagram not rendered” 提示。0.2.3 之后,带类指派的节点照常渲染;回退只在真正的非法语法上触发,回归测试也改用 A[Foo] invalid 示例来固定这一行为。

这些改动尚未随任何版本发布——整批改动停在 main 上,将进入 v0.85.1 之后的下一个发布;#9341 的完整 diff(含依赖清单与两处修复)可在 GitHub 查看。

source: https://github.com/earendil-works/pi/pull/9341