2026年8月12日community
pi 修复:sendCustomMessage 的 triggerTurn: false 不再触发新回合
外部贡献者 cristinaponcela 于 2026-08-12 将 Pull Request #8022 合入 pi 编码代理,修复了 issue #7783 里报告的扩展点缺陷:在 agent_end 钩子中调用 sendCustomMessage({triggerTurn: false})、且 agent 仍标记为 streaming 时,消息仍会触发一轮新的模型回合——直接违反了第三方扩展所依赖的 triggerTurn: false 契约。
根因在 packages/coding-agent/src/core/agent-session.ts 里的路径过载:无论 triggerTurn 标志如何,只要 isStreaming 仍为 true,所有消息都会被路由到流式 agent.steer() 路径上。修复在该分支加上 options?.triggerTurn !== false 守卫——当调用方明确要求不开启新回合时,消息就被当作一次静默的会话注入。合并提交为 47b5119d09f00cb785409d53d74c4950acc7d803。
对扩展作者而言,这意味着 agent_end 钩子现在可以安全地调用 sendCustomMessage({triggerTurn: false}) 来注入系统消息——例如记录会话指标、追加页脚、盖上审计戳——而不会意外触发另一轮消耗 token 与时间的模型回合。作者用 issue #7783 里的复现测试验证了修复,补丁上两个检查均通过。
截至目前还没有新版本发布该修改;仍跑 v0.84.1 的用户看的是修复前的行为,需要等下一个包含此修复的 pi 版本。