工具调用解析失败不再直接收工:Claude Code 会先自动重试两次
Claude Code 干活的方式,是让模型发出一个个工具调用:读文件、改文件、跑命令、调 MCP。每个调用都要符合工具的参数格式,Claude Code 才能执行。绝大多数时候这一步毫无存在感,但偶尔模型输出的调用会「坏掉」——参数不完整、结构对不上,程序没法解析。
以前:一次解析失败,这一轮就结束
在旧版本里,碰到这种无法解析的工具调用,这一轮对话往往就以错误收场。交互式使用时你还能看到报错、再说一句「继续」;可如果是挂着跑的长任务,或者在脚本里用 claude -p 批量处理,一次偶发的格式问题就可能让整条流水线停在半路。
现在:先重试,最多两次
CLI 2.1.307 的更新说明写得很直接:改进了对无法解析的工具调用的恢复,Claude Code 现在会重试该调用最多两次,之后才以错误结束这一轮。
换句话说,偶发的格式问题大多会被自动「再来一次」消化掉,你不需要介入。只有连续多次都解析不了,才会真正报错——这时候通常说明不是偶然,值得看一眼是哪个工具、什么参数出了问题。
对你意味着什么
- 长任务更稳:重构、批量改文件这类一跑就是很多轮的任务,被单次偶发错误打断的概率更低;
claude -p和 CI 更省心:无人值守的运行少了一类「莫名其妙中途退出」的情况;- 报错更有信号价值:既然偶发问题已被重试兜住,剩下的报错更可能是真问题,比如某个 MCP 工具的参数定义本身有毛病。
需要注意的是,重试意味着模型会重新生成这次调用,所以极少数情况下这一轮会稍微慢一点、多用一点 token。这是用一点开销换稳定性,大多数人不会察觉。
同版本的几处相关修复
2.1.307 里还有几条和「一轮对话跑得顺不顺」相关的修复,一并记下:
- 读取大量 PDF 页面、图片或其他大型工具结果的回合里,部分「Autocompact is thrashing」错误被修复;
- 有后台任务运行时,某一轮有时拿不到 SDK MCP 服务器最新工具列表的问题被修复;
- 子代理的对话记录在流式响应下会写入占位的 token 用量和空的停止原因,这一点也修好了。
小结
- 2.1.307 起,无法解析的工具调用会先自动重试最多两次,仍失败才结束这一轮;
- 受益最大的是长任务、
claude -p脚本和 CI 这类无人值守场景; - 如果你仍然看到这类报错,说明它多半可以稳定复现,值得排查具体工具。