opencode 跨厂商切换现高危 bug:超长工具调用 ID 永久损坏会话

ton618to · ghdev · 2026-10-09

anomalyco/opencode 被曝一个已复现的高危 bug:跨模型/供应商切换或恢复会话时,provider 原生工具调用 ID 被原样保留并直接发给 OpenAI 兼容端点,而后者对 toolcallid 有 40/64 字符限制。

Vertex/Gemini 以及 SAP AI Core 等网关生成的 ID 可能内嵌签名、超过 1000 字符(实测 1262 字符),请求被 HTTP 400 拒绝。更糟的是这些无效数据已持久化进历史,后续每次请求都失败,普通用户只能开新会话或手改存储。

根因:序列化路径完全没有对 tool-call ID 做长度归一化——入站流式响应原样保留 provider ID,出站 openai-chat/openai-responses 等协议也原样透传,无任何截断。

原文链接 →

「编程与Agent」频道最新

更多「编程与Agent」频道 AI 资讯 →