维护咨询 大模型部署 问题解决 技能定制 大模型训练
站长交流微信: aixbwz
n8n 里的 AI Agent 在单次执行里表现正常,但一到第二轮对话就像“重开新号”,通常不是模型突然变笨,而是会话 ID、记忆节点和工作流状态被拆散了。本文把最常见的复现方式、根因判断、修复步骤、验证标准和回滚办法整理成一套可直接照做的排查流程。
适用场景
- WhatsApp、Telegram、网页 Chat Trigger 这类多轮对话 Agent
- 需要跨执行保留上下文的预约、线索收集、客服分流、研究助手
- 你已经能让 Agent 在单轮里工作,但第二轮开始就忘记前文
- 你把 n8n 放在 Docker、自托管服务器或多工作流环境里运行
常见表现
- 同一个用户第二条消息进来后,Agent 又从第一问开始
- 容器重启后,之前能记住的信息全部消失
- 一个用户改完信息,另一个用户的上下文被串进来了
- 你用 Google Sheets 或一个共享表格存状态,偶尔会被并发执行覆盖
- Send Message 节点明明发出去了,但下一轮不是接着上轮继续,而是新开一段
先复现一次,再开始改
你可以用最小流程验证自己是不是遇到同一类问题:
- 建一个最简单的聊天流:
Trigger -> AI Agent -> Send Message。 - 第一轮对用户说“记住我的城市是上海”。
- 第二轮只问“我刚才的城市是什么?”。
- 如果 Agent 回答不出来,或者重新追问城市,就说明跨执行记忆没有接上。
如果你重启 n8n 后再测一次,问题会更明显。很多看似“会记忆”的流程,其实只是在同一次执行里还没结束。
根因通常不止一个
1. 你没有给每个会话一个稳定的 sessionId
对话记忆要能“找到上一轮”,前提是每一轮都带着同一个键回来。WhatsApp、Telegram、聊天网页、邮件回复,这个键通常来自:
- 用户号码
- chat id
- thread id
- 工单 id
- 你自己生成并持久化的会话 id
如果第二轮进来的 sessionId 变了,记忆节点看起来就像第一次见到这个用户。
2. 你把短期记忆放进了不适合生产的节点
基于 n8n 官方文档验证:
Simple Memory虽然能保存聊天历史,但在队列模式下不适合生产工作流。Tools Agent这类 Agent 节点即使接了 memory,也只会在同一个 session 内持续,不会自动帮你跨 session 持久化。Chat Trigger如果要加载上一轮,会要求你把Chat Trigger和Agent都连到同一个 memory sub-node,保持单一事实源。
这也是为什么很多流程在本地单机调试时看起来没问题,放到真实环境就开始“失忆”。
3. 你把“聊天历史”“业务状态”“长期知识”混成了一份记忆
这三类数据最好分开:
- 聊天历史:用户上一句说了什么,适合放
Postgres Chat Memory - 业务状态:当前收集到第几个字段、是否待确认,适合放数据库表、Data Table 或下一次触发载荷
- 长期知识:客户档案、产品知识、历史工单摘要,适合放向量库或可检索表
把三件事都丢给一个 Agent memory,结果通常是难排查、难并发、难回滚。
推荐修法:先把会话历史稳住
步骤 1:给每次对话提取稳定 sessionId
无论你用什么触发器,先在进入 Agent 前做一层标准化:
sessionId = 用户唯一标识
常见做法:
- WhatsApp:用发信号码或
wa_id - Telegram:用
chat.id - Web Chat:用前端自己生成并回传的
threadId - 邮件:用工单号或 conversation id
如果来源字段不统一,可以先用一个 Set 节点整理成统一结构:
{
"sessionId": "同一个用户每轮都不变的值",
"userMessage": "当前消息正文"
}
步骤 2:把聊天历史换到 Postgres Chat Memory
基于 n8n 官方文档验证,Postgres Chat Memory 用 Postgres 存聊天历史,适合需要跨执行保留会话的场景。
如果你还没有 Postgres,可以先起一个最小实例:
services:
postgres:
image: postgres:16
restart: unless-stopped
environment:
POSTGRES_DB: n8n
POSTGRES_USER: n8n
POSTGRES_PASSWORD: change-me
ports:
- "5432:5432"
volumes:
- ./postgres-data:/var/lib/postgresql/data
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END







暂无评论内容