TL;DR
Flask 作者 Armin Ronacher 发现一个反直觉现象:最新的 Claude Opus 4.8 和 Sonnet 5 在使用自定义编辑工具时,正确率反而不如旧模型。它们会在 tool call 中发明不存在的字段。原因很可能是 RL(强化学习)训练过度优化了 Claude Code 内置工具的行为模式,导致第三方工具"水土不服"。
1. 一个让人困惑的 bug
Armin Ronacher 最近在开发 Pi(一个编程辅助工具)时遇到了一个奇怪的 bug。
"新模型有时会在 Pi 的 edit 工具调用里塞进额外的、不存在的字段。"他写道。具体来说,Opus 4.8 发出的 tool call JSON 里包含了一些 Pi 的 API schema 里根本没有的 key——比如edits[]数组里凭空多出来的属性。编辑本身通常是对的,但参数格式不对,Pi 只能拒绝并让模型重试。
真正让 Armin 警觉的是:这不是小模型才会犯的低级错误。出问题的是 Opus 4.8 和 Sonnet 5——Anthropic 目前最强的两个模型。而更早的模型(Opus 4、Sonnet 3.5)反而没有这个问题。
换句话说,模型越新、越强,在这个特定任务上反而越差。
2. 推测原因:RL 训练的"过拟合"
Armin 给出的解释很有意思:Anthropic 的新模型在 RL(强化学习)训练阶段,被大量训练使用 Claude Code 内置的编辑工具。Claude Code 的 edit 工具用的是 str-replace 机制——old_string+new_string的精确替换。经过大量 RL 优化后,模型学会了高效使用这个特定工具。
但问题是:Pi 的 edit 工具虽然功能类似,但 API schema 不同。新模型在 RL 训练中"背下"了 Claude Code 工具的参数结构,当遇到 Pi 的不同 schema 时,它会不自觉地"补齐"那些在 Claude Code 里存在、但在 Pi 里不存在的字段。
这本质上是一种schema overfitting——模型学会了工具的具体实现细节,而不是工具的抽象语义。
Armin 还指出了一个对称的现象:OpenAI 的 Codex 使用的是apply_patch机制(类似 git diff),OpenAI 同样在训练中优化了模型对这个工具的使用。这意味着 Codex 可能在 Anthropic 风格的 str-replace 工具上也表现不佳。
3. 这会带来什么问题?
第一个问题是工具碎片化。如果每个 AI 公司的模型都被优化去使用自家工具的特定 schema,那么第三方工具开发者就会面临一个两难选择:
- 为每个模型维护一套不同的工具 API(适配 Claude Code 的 str-replace、Codex 的 apply_patch、以及其他变体)
- 或者接受某些模型在自家工具上表现不佳
Armin 写道:“这是否意味着像 Pi 这样的第三方编码工具,应该实现多套编辑工具,只为让用户选择的底层模型能以最佳性能运行?”
第二个问题是评测失真。如果一个模型在标准 benchmark 上表现极好,但在你实际使用的工具链上频繁出错,那个 benchmark 分数对你就没有意义。模型的真实能力高度依赖于它被训练时所使用的工具环境。
第三个问题是模型升级的"倒退风险"。Armin 的经历说明,从旧模型升级到新模型,不一定总是正向的——如果你使用的是非标准工具链,新模型的 RL 优化可能反而让你倒退。
4. 开发者应该怎么做?
对于使用 Claude Code / Codex 等官方工具的开发者:这个问题对你影响不大——新模型的工具调用优化恰恰是为你做的。
对于使用第三方编码工具(Pi、Aider、Continue 等)的开发者:升级模型前先在自己的项目上做一个小范围测试,看工具调用成功率是否下降。Armin 的经验是:不要假设新模型在所有维度上都更好。
对于构建 AI 工具的开发者:考虑实现多套工具 API,或者至少监控不同模型在工具调用上的错误率分布。如果发现某个模型在特定工具上频繁出错,可以考虑在 system prompt 中加入更详细的 schema 说明——但这不一定能完全解决 RL 训练带来的 bias。
5. 更深一层的思考
Armin 这个发现触及了一个更根本的问题:当模型能力越来越强时,它们到底是变得更通用,还是变得更专用?
RL 训练的本质是"做对的事给奖励"。但如果奖励信号只来自特定工具环境下的表现,模型学到的就不是"如何正确调用工具"这个通用能力,而是"如何在某个特定工具的 API 格式下拿到高分"。这不是模型的错——这是训练目标的必然结果。
Simon Willison 在转发这篇文章时评论说:"模型在自家工具上表现出色,但在第三方工具上可能意外退化——这个问题短期内看不到解决方案。"因为 AI 公司没有动力去优化模型在竞争对手工具链上的表现。
对于整个 AI 编码工具生态来说,这可能是比"哪个模型更强"更需要关注的问题。
6. 参考资料
- Armin Ronacher: Better Models: Worse Tools
- Anthropic: Text Editor Tool 文档
- Simon Willison 对此的讨论