AI Agent: Anthropic thinking replay sends earlier tool calls back as `input: {}`

该报错出现在 AI Agent(Tools Agent)配合 Anthropic Chat Model、模型默认开启 thinking 的情况下:历史工具调用的参数被回放成空对象,导致后续工具调用丢失参数并最终耗尽迭代次数。优先检查执行记录中回放的工具输入是否为 input: {} ,以及 Anth

快速结论:该报错出现在 AI Agent(Tools Agent)配合 Anthropic Chat Model、模型默认开启 thinking 的情况下:历史工具调用的参数被回放成空对象,导致后续工具调用丢失参数并最终耗尽迭代次数。优先检查执行记录中回放的工具输入是否为 input: {},以及 Anthropic 节点的 Thinking Mode 设置。

适用环境:Issue 已确认的环境为 n8n 2.42.2(n8n Cloud,Docker 平台,SQLite 数据库,Node.js 26.7.0);模型为 claude-sonnet-5(默认 thinking),对比验证使用 claude-sonnet-4-6(默认不 thinking)。AI Agent 节点为 Tools Agent 3.1,并连接了两个 Agent Tool 节点,参数通过 $fromAI 传入。操作系统与 Node.js 版本在 n8n Cloud 上不可见。

最快修复方案:暂无确认的一步修复方案。Issue 中报告者验证过的临时规避方式是:将 Anthropic Chat Model 节点的 Thinking Mode 设为 Disabled。官方回复称该问题已修复并将包含在后续版本中,但讨论中未给出具体版本号,因此可优先尝试升级到包含修复的新版本。

注意事项:关闭 Thinking Mode 会同时失去模型的 thinking 能力,属于临时规避而非根因修复;升级后仍需自行验证,因为 Issue 中未标注修复所在的具体版本。报告者提出的代码层修复思路(用完整工具参数构造 input)尚未经过测试。

问题场景

在 n8n 中使用 AI Agent 节点(Tools Agent,版本 3.1),挂接 Anthropic Chat Model 节点并选择 claude-sonnet-5,同时连接多个 Agent Tool 节点,工具参数以 {{ $fromAI('topic', 'The topic to check', 'string') }} 形式传入。当流程需要多步工具调用(先调用工具、读取结果、再调用工具)时,从第二、三步开始,Agent 发出的工具调用不带任何参数,工具因缺少输入而失败,随后 Agent 一路消耗到 maxIterations 上限。

报错原文

AI Agent: Anthropic thinking replay sends earlier tool calls back as `input: {}`

相关代码位置(n8n 2.42.2 与 master 相同):

// packages/@n8n/nodes-langchain/utils/agent-execution/buildSteps.ts, line 115
const toolInputData = toolInput.input;

报告者在执行记录中观察到的具体表现:工具调用失败并返回 No prompt specified,回放的历史工具调用显示为 input: {};关闭 Thinking Mode 后,回放内容变为 args: {"topic": "..."}。

原因分析

可能原因是 buildSteps.ts 在构造 Anthropic 的 thinking 内容块时,从 toolInput.input 读取历史工具调用参数。只有参数恰好存放在名为 input 的键下时才能取到真实内容;而 Agent Tool、$fromAI 字段的参数通常不以 input 为键,因此回放时被替换成空对象 input: {}。与之相对,非 thinking 路径(line 245)直接使用 args: toolInput,保留了真实参数。报告者据此推测,这种空参数回放会让 Claude 在后续步骤中模仿并主动发出空调用。

报告者提供的执行数据:三次 Sonnet 5 运行中,36 个带文本的早期工具调用全部被回放为空;此前一次 claude-sonnet-4-6 运行(默认不 thinking)中,8 个中 0 个出现该情况。该数据来自报告者的实际工作流,非独立最小复现。

环境排查

  • 确认 n8n 版本是否为 2.42.2 或存在该代码路径的其他版本。
  • 确认 AI Agent 节点为 Tools Agent,版本 3.1。
  • 确认 Anthropic Chat Model 使用的模型(claude-sonnet-5 默认开启 thinking)。
  • 确认 Thinking Mode 选项的状态:未设置即采用模型默认值。
  • 确认工具节点及其参数来源:是否使用 Agent Tool、是否通过 $fromAI 传参,以及参数是否位于 input 键之外。
  • 查看执行记录中 Anthropic Chat Model 节点在第二、三步的输入,检查回放的工具调用是否带真实参数。

解决步骤

  1. 打开出问题的执行记录,进入 Anthropic Chat Model 节点第二步的输入,找到回放的历史工具调用,确认是否显示 input: {},而第一步的真实调用带有 {"topic": "..."} 等参数。
  2. 若确认回放为空,先将 Anthropic Chat Model 节点的 Thinking Mode 设为 Disabled,重新运行同一工作流。
  3. 再次检查执行记录,确认回放的工具调用带有 args: {"topic": "..."} 等真实参数,且后续工具调用能正常传入参数、Agent 不再耗尽 maxIterations。
  4. 关注 n8n 后续版本更新:官方回复称修复将包含在即将发布的版本中,可在升级后恢复 Thinking Mode 并重新验证。

验证方法

构造或复用需要连续两次工具调用的流程(例如让 Agent 先查询一个主题、读取结果后再调用另一个工具),运行后检查执行记录:Anthropic Chat Model 节点回放的历史工具调用应保留与首次调用相同的参数,而非 input: {};工具节点不再出现 No prompt specified 一类的缺参失败;Agent 能在 maxIterations 范围内正常完成。若升级后恢复 Thinking Mode 仍复现空参数回放,应在原 Issue 下留言反馈。

参考来源

n8n-io/n8n #40360

GamsGo AI

AI 工具推荐

想把多个 AI 模型放在一个入口?

GamsGo AI 集成 ChatGPT、DeepSeek、Gemini、Claude、Midjourney、Veo 等常用模型,适合写作、绘图、视频和日常 AI 工作流。

了解 GamsGo AI

推广链接:通过此链接购买,我可能获得佣金,不影响你的价格。

这个方案解决了吗?

celebrityanime
celebrityanime
文章: 29340

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注