n8n智能体记忆怎么配置?用 Simple Memory 保留上下文并隔离会话

在 n8n AI Agent 接入 Simple Memory,以 sessionId 保留当前会话上下文;用两段虚构对话验证不会串话,并说明恢复历史、窗口长度和 queue mode 的限制。

n8n 智能体“第二句话不知道第一句话在说什么”,通常要先检查会话记忆,而不是直接换模型。Simple Memory 可以把当前会话的一段历史交给 Agent;能否正确区分不同会话,则取决于 Session Key 和触发器传来的会话标识。

本教程面向已可单轮聊天的 n8n 用户,依据 2026 年 10 月 1 日官方文档编写。测试对话为虚构样本,未在真实 n8n 实例执行。Simple Memory 适合入门验证,不能据此承诺跨进程长期保存、生产备份或多人账号权限。

n8n智能体记忆怎么配置?用 Simple Memory 保留上下文并隔离会话

先区分三件容易混淆的事

能力 解决的问题 本例是否覆盖
会话上下文 同一次对话知道上一轮的条件 覆盖,用 Simple Memory
用户长期资料 新会话还能取回经过授权保存的偏好 不覆盖,需要独立存储与读取规则
知识库检索 从文档查到外部事实并给依据 不覆盖,聊天历史不等于知识库

n8n 的记忆原理文档把 Simple Memory 描述为保存当前会话可配置长度的历史,另提供 Redis、Postgres 等记忆服务节点。给 Agent 加记忆并不会训练模型,也不会自动把聊天中出现的一切保存成可靠事实。

1. 为 Agent 添加 Simple Memory

  1. 打开已有的 Chat Trigger → AI Agent 工作流,确认模型与所需工具仍然有效。
  2. 点击 AI Agent 的 Memory 接口,添加 Simple Memory 子节点。
  3. 在 Chat Trigger 输入或输出数据中找到本次聊天的 sessionId,查看它在同一对话的下一条消息里是否保持一致。
  4. Simple Memory 的 Session ID 选择 Connected Chat Trigger Node,使用直接相连的触发器提供的 sessionId。需要手动映射时,选择 Define below,把 Key 设为 {{ $json.sessionId }},并在表达式预览中确认不是 undefined 或空串。旧版界面可能显示 Session Key 或 Session ID 文本框。
  5. Context Window Length 先设为 5,作为本例的起点;它表示考虑多少次之前的交互,不是 5 个 token,也不是保存永久历史。

字段名称和取值要以你的触发器实际输出为准。若上游字段不叫 sessionId,先在主流程做明确映射,再接入记忆;不要为了消除空值直接把 Session Key 改成全局固定字符串。近期节点的 Session ID、Define below 和 Key 配置可在官方项目字段定义中核对。

Simple Memory 官方说明规定 Session Key 与上下文窗口,并特别指出该节点不适合 queue mode 的生产工作流,因为每次调用不保证落到同一 worker。

2. 需要恢复聊天界面历史时,连接同一个记忆节点

只让 Agent 读取前文,与聊天界面重新显示旧消息不是一件事。若使用 Hosted Chat 并希望载入之前会话,在 Chat Trigger 的 Options 中把 Load Previous Session 设为 From Memory;这时触发器会出现 Memory 接口。

将 Chat Trigger 的 Memory 接口也连接到前面同一个 Simple Memory 节点。官方推荐触发器与 Agent 共用一个记忆节点,避免聊天界面显示的历史和模型读取的历史来自不同来源。若只测试 Agent 的连续对话,可以先保持加载旧会话功能关闭。

有关 Load Previous Session 及共享连接的要求见Chat Trigger 文档。保存后先在测试面板检查,再把已经验证的配置发布到正式入口。

3. 测同一会话能否延续上下文

为免混入已有聊天,开始一段新的测试会话。给 Agent 加一条规则:“回答个人偏好时只使用本会话提供的信息,没有信息就说未提供;不猜测。”然后依次发送:

第一条:这是虚构测试,我的项目代号是松果,我喜欢蓝色。
第二条:我的项目代号和喜欢的颜色是什么?

预期第二条能回答“松果、蓝色”。但只看最后答案还不够:打开两次执行的 Chat Trigger 数据,核对 sessionId 相同;查看 Agent 的记忆相关输入或执行信息,核对包含前一条测试消息。某些界面不展示完整历史时,至少保存触发器标识与响应,继续排查实际传递路径,不能把模型猜中当成记忆验证。

若第二条不知道答案,按顺序看 Memory 连线、Session Key 表达式预览、两次 sessionId 是否一致,再看 Context Window Length 是否太小。不要先把窗口无限调大,更多历史也会增加上下文长度和模型用量。

4. 测另一会话是否真的隔离

新建另一段对话,或用另一个浏览器会话打开聊天入口。先查看 sessionId 是否与第一段不同;若没有变化,就不能当作隔离测试。

在第二段新会话直接问:“我的项目代号和喜欢的颜色是什么?”它应说明当前会话没有提供这些信息,不能回答松果和蓝色。然后在第二段写“项目代号是溪流,喜欢绿色”,回到第一段再询问;第一段应仍对应松果和蓝色。

这组双向测试能发现固定 Session Key 或会话标识复用造成的串话。若串话,先停止把真实用户资料送进该流程,检查是否用了 shared-session 这类固定键、是否把用户 ID 误当作所有对话共用的会话 ID、前端是否每次都发送同一 sessionId。

Session Key 不是身份认证

Session Key 负责把历史归到某段会话,不证明发送者有权访问这段会话。接自建前端时,需要由受信的后端确认登录用户与会话归属;不能允许请求随意填别人的 sessionId 就读取历史。Basic Auth 共享密码也不等于逐用户的数据权限。

同时注意,Simple Memory 是子节点。官方文档指出子节点表达式通常解析第一条输入 item;不要把多个不同用户的消息一次性作为一批 items送进同一个 Agent,就认为记忆会按每条自动隔离。

窗口变小、重启和跨 worker时,怎样理解结果?

  • 窗口变小:较早交互可能不再提供给本次模型上下文,不表示已经完成了所有存储中的删除。需要删除历史时单独设计清理和验证。
  • 重启或进程变化:本例不验证永久保存。需要可靠保存、备份和生命周期管理时,选合适的数据库记忆节点并明确保留策略。
  • queue mode:按官方限制不要将 Simple Memory 用在其活动生产工作流中,改用适合部署结构的外部记忆服务,再复测同会话与跨会话行为。
  • 不同模型接口:如果模型服务本身还配置了持久会话 ID,应检查它是否与 n8n 会话正确对应,避免两套历史各自复用。

完成这篇教程后,你应能证明同一 sessionId 延续上下文、不同 sessionId 不串话,并清楚知道这份验证覆盖的是会话历史。长期记忆、数据删除和身份授权需要各自的实现与验收。

Ai菜鸟网。发布者:AI小管家,转载请注明出处:https://www.alyyhw.com/30192.html

赞 (0)
AI小管家的头像AI小管家
Copilot 里没有 Claude 或无法使用?按模型列表、套餐与组织策略排查
上一篇 1天前
内容推荐怎么做?用 TF-IDF 和余弦相似度推荐相关文章
下一篇 1天前

相关推荐

联系我们

联系我们

1

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信
关注微信
分享本页
返回顶部