快速结论:该报错发生在 n8n 的 AI Agent 以批量模式(Batch Size: 1)处理多个数据项时,LangChain 子节点(如 Qdrant Vector Store)中的 .item 上下文指针始终指向源节点索引 0,导致所有批量迭代都读取第一条数据的上下文。优先排查是否通过降级到 n8n v2.10.3 解决,或改用 Loop 节点手动拆分数据。
适用环境:n8n 2.12.2(Docker 自托管,Proxmox LXC 环境),Node.js 24.13.1,SQLite 数据库,production 模式,enterprise license。
最快修复方案:Issue 评论中明确验证过的方案是降级到 n8n v2.10.3(Docker 镜像 n8nio/n8n:2.10.3),该版本未发现此回归问题。另一个有效的临时方案是在 AI Agent 前使用 Loop 节点将源数组严格限制为每次执行 1 条数据,可优先尝试。
注意事项:v2.10.4 版本经验证仍然存在此问题,不建议使用。降级方案可能影响其他新功能,且该 Issue 已被关闭(等待官方修复),目前没有确认的向前修复版本。改用 Loop 节点是已验证可用的替代方案,但会改变工作流结构。
问题场景
用户在 n8n 工作流中使用 Postgres 节点从数据库获取多条记录(每条记录含唯一的 user_id),将数据传递给配置了 Batch Size: 1 的 AI Agent 节点。AI Agent 连接了一个包含 Qdrant Vector Store 子节点的 Vector Store Tool,在 Qdrant 子节点的 Search Filter (JSON) 中使用表达式 {{$('<SourceNodeName>').item.json.user_id}} 引用当前处理的记录。执行工作流时,Qdrant 子节点无法正确解析批量上下文,对所有迭代都读取源节点索引 0 的 user_id,导致 AI 检索到错误用户的向量数据。此行为在最近一次更新后出现,之前版本工作正常。
报错原文
Bug Report: LangChain Vector Store subnode loses .item context during agent batch execution after recent update
The subnode loses the batch context. For every item processed by the AI Agent (index 1, 2, 3, etc.), the expression in the Qdrant subnode consistently falls back to fetching the user_id of the item at index 0 from the source node. This results in the AI retrieving vector data for the wrong user.
原因分析
可能原因是 n8n 在 AI Agent 的批量循环中,批量迭代器未将当前索引正确传播到嵌套子节点。由于向量存储子节点接收到的上下文是静态的,导致 .item 指针始终指向 item[0],而不是当前正在处理的批量项。这属于批量上下文丢失(batch context loss)回归问题,与 OpenClaw 中报告的多个状态丢失问题模式一致。
环境排查
- n8n 版本:2.12.2(问题触发版本);v2.10.3 为最后一个已知正常版本;v2.10.4 经验证仍存在此问题
- Node.js 版本:24.13.1
- 数据库:SQLite
- 运行平台:Docker(自托管),Proxmox LXC 环境
- 执行模式:regular(默认 main,production)
- 关键节点:AI Agent(Batch Size: 1)、Qdrant Vector Store 子节点、Vector Store Tool
解决步骤
- 方案一(已验证):降级 n8n 到 v2.10.3
- 在使用 Docker Compose 的环境中,修改 n8n 服务镜像版本为
n8nio/n8n:2.10.3。 - 执行
docker compose up -d重新部署。 - 验证工作流中的
.item上下文是否恢复正常。
- 在使用 Docker Compose 的环境中,修改 n8n 服务镜像版本为
- 说明:v2.10.4 已由用户验证无效,不建议尝试该版本。
- 方案二(已验证):改用 Loop 节点手动拆分数据
- 在 AI Agent 节点前插入一个标准 Loop 节点。
- 将源数组每次只传递 1 条数据给 AI Agent 处理。
- 确保每个循环迭代中 Qdrant 子节点的
.item表达式引用的是当前单条数据。
- 方案三(可优先尝试):等待官方修复
- 关注 n8n 官方对该 Issue(GHC-7353)的处理进展。
- 在升级 n8n 前,先检查 Release Notes 是否包含批量上下文修复。
验证方法
执行一个包含至少 3 条不同 user_id 记录的测试工作流,在 Qdrant Vector Store 子节点中检查每次批量迭代实际查询的 user_id。如果每条记录对应的搜索结果都正确匹配当前迭代的 user_id,而不是全部返回索引 0 的数据,则说明问题已解决。也可以在工作流中添加 Debug 节点,输出每个批量迭代中 .item.json.user_id 的实际值进行确认。
参考来源
AI 工具推荐
想把多个 AI 模型放在一个入口?
GamsGo AI 集成 ChatGPT、DeepSeek、Gemini、Claude、Midjourney、Veo 等常用模型,适合写作、绘图、视频和日常 AI 工作流。
推广链接:通过此链接购买,我可能获得佣金,不影响你的价格。
这个方案解决了吗?
可以继续搜索完整报错,或查看同一工具的其他排查指南。


