工具结果要按调用顺序投影
多工具 Agent 的一个隐蔽可靠性问题是:工具可以并发完成,但结果回到消息历史时,不能按“谁先回来”或数组偶然顺序投影。
Vercel AI SDK ai@7.0.12 修复了 generation output 转 response messages 时按 tool call order 排序 tool results 的问题。这个补丁看起来很小,但它碰到的是 provider contract 和 UI transcript 的交界处:模型发出的 tool call 有明确顺序和 call id,后续 tool result 必须能和原调用稳定配对。否则 trace 看起来像成功,模型读到的上下文却可能已经错位。
在真实产品里,这种错位很难排查。比如一个 Agent 同时查用户权限、拉项目列表、读文件摘要,三个结果都合法,但如果投影顺序错了,UI 可能把 A 工具的结果展示到 B 调用下面,模型也可能把错误证据用于下一步推理。
工程上的原则是:原始事件流可以并发,投影层必须确定。每个 tool call 都要保留 call id、source、原始顺序、完成时间和结果引用;展示给模型、前端、审计系统时,再按各自 contract 投影,而不是复用一个“刚好能显示”的数组。
如果 OPC 以后支持并发工具和多 Agent 汇总,我们的 transcript 应该保存原始事件流,还是只保存投影后的聊天消息?答案会决定后面能不能可靠回放和审计。