## Bug 详情 OpenAI 兼容流在部分工具调用场景下会出现累计参数片段、复用 tool_calls index 或结束原因为 tool_calls 但缺少 tool_use 块,导致后续 TaskUpdate 等工具调用丢失或参数解析失败。 ## 根因 OpenAI stream adapter 直接透传参数片段,无法区分累计快照和增量片段;同一 tool_calls index 被后端复用时也没有重开 tool_use 块。Task 工具参数 JSON 解析失败后统一退回空对象,query 主循环也没有对 stop_reason=tool_use 但无 tool_use 块的响应做恢复。 ## 修复方案 在 OpenAI stream adapter 中去重累计参数并处理工具身份变化;仅对 Task 工具做窄范围参数修复,避免将无效 TaskUpdate 修复成 no-op;query 主循环发现缺失 tool_use 块时追加一次元消息让模型补发工具调用。 ## 变更要点 - 修复 OpenAI 工具流参数快照去重和 tool_calls index 复用处理 - 增加 TaskCreate/TaskGet/TaskList/TaskUpdate 的解析失败窄范围容错 - 阻止无效 TaskUpdate status 或仅 taskId 输入被修复成空更新 - 增加缺失 tool_use 块的一次性 query recovery transition - 补充 stream adapter、Task 参数修复和 query recovery 回归测试 ## 自测 - bun test packages/@ant/model-provider/src/shared/__tests__/openaiStreamAdapter.test.ts src/utils/__tests__/messages.test.ts src/__tests__/queryMissingToolUseRecovery.test.ts - bun run typecheck 当前仍失败,错误位于既有未改动文件。 |
||
|---|---|---|
| .. | ||
| config.ts | ||
| deps.ts | ||
| stopHooks.ts | ||
| tokenBudget.ts | ||
| transitions.ts | ||