opencode 约半数工具调用被拒:参数被当成字符串而非对象
meijin4 · ghdev · 2026-10-12
anomalyco/opencode 的 issue #54792 报告:agent 发出的工具调用中约有一半在执行前被拒绝,报错为 The tool call arguments failed to parse: expected object, received string at the root。同一条调用原样重放却能成功,因此失败看起来是随机的,在长会话中严重影响效率。
环境:opencode 2.0.27,WindowsNT 10.0.26300 (win32 x64),shell 为 cmd.exe(命令经 pwsh 执行),latest 渠道,无插件。
复现:在编辑大量文件的长会话中,发出参数较复杂的工具调用(多行代码含 \n、转义引号 \"、重音字符、${} 模板字面量),可观察到大量调用在解析层被拒且无副作用。
预期:工具调用参数被解析为 JSON 对象并执行。
实际:参数以原始字符串(截断或双重编码的 JSON)形式发出/送达,而非对象。
补充信息:
- 频率:间歇性,单会话约 40–60% 的调用失败(观察到 20+ 次)
- 受影响工具:edit、write、shell、grep、read 以及 Code Mode 的 execute,非单一工具问题,指向工具调用序列化/解析层
- 载荷相关性:长且转义密集的载荷更易失败,但短小简单的调用偶尔也会失败
- 影响:无数据损坏(被拒调用无副作用),但每次都要重放,往返次数翻倍,干扰很大
- 已有临时规避:拆分……(原文截断)
「编程与Agent」频道最新
- Theo 实测三模型修 bug:Opus 直达根因,GPT 写 300 行测试 — shadcn · 2026-10-13
- 一张图讲透 AI Harness:从 Agent Loop 到 Guardrails 的 6 个关键概念 — femke_plantinga · 2026-10-13
- 把规格写成状态机:用 reducer 图谱逐步审问 AI 编码智能体 — DavidKPiano · 2026-10-13
- Unit42 披露 LLM 驱动恶意软件 C2Agent,借受害者 AI 工具发起攻击 — cyb3rops · 2026-10-13
- Aiden Bai:现代编程的本质是写好 eval 与验证器 — aidenybai · 2026-10-13
- Vibe42 更新侧边栏:实时展示各 Agent 工作状态并按 workspace 分组 — yihui_indie · 2026-10-13