Claude Opus 4.8 和 Sonnet 5 工具调用反而不如旧模型,原因何在
Flask/Sentry 工程师 @mitsuhiko 发现,Claude Opus 4.8 与 Sonnet 5 在调用 Pi 的嵌套 edits[] 工具时,会在 edit 对象末尾产生 requireUnique、type、id 等虚构字段,导致 schema 校验失败。此问题在单轮 prompt 下不出现,在长 agentic 历史中复现率约 20%。去掉历史中的 thinking 块后失败率减半,开启 strict 模式后问题消失。作者推测根因是 Anthropic 的 RL 后训练在 Claude Code 的 forgiving harness 中进行,该 harness 接受参数别名和未知键,导致模型学到“edit 操作可多带可选字段”的先验。相比之下,OpenAI 的 harmony 路线在 prompt 中显式标记 JSON 边界并支持约束采样,未出现此回归。