为什么你的 AI 助手聊了 100 轮,还是像第一天认识你:用 n8n 搭一套真正有用的 Agent 记忆层

你可能也遇到过这种情况:

昨天刚告诉 AI:“以后写产品分析,先给结论,再展开,少一点营销味。”

今天它又一本正经地输出一篇“全面赋能、行业领先、颠覆体验”的稿子。

你继续纠正,下一轮它似乎记住了;再过几轮,又忘了。

很多人会把这个问题归结为:模型不够强,或者上下文窗口不够大。

但真相往往更简单,也更扎心——你给 AI 的只是聊天记录,不是可复用的“记忆”。

会记住你说过什么,不稀奇;会记住你真正偏好什么,才是 Agent 开始变得有用的分水岭。

这篇文章想讲清一件事:Agent 的记忆层,不是“把历史对话全存起来”,而是把用户偏好、任务状态、规则约束结构化注入工作流。

而这件事,用 n8n + 分层 Prompt 就能做出来。

---

为什么很多人把 Agent 记忆层理解错了?

现在不少关于 Agent 的教程,一谈“记忆”,就是两种做法:

  • 把历史消息全塞进 Prompt
  • 把聊天记录存进数据库,调用时再检索回来

这当然不是错,但它只解决了最浅的一层:延续上下文。

问题在于,延续上下文,不等于理解用户。

比如同样是“帮我写一篇科技产品测评”,用户真正稳定关心的,可能是这些:

  • 风格要理性、克制
  • 标题控制在 18 字内
  • 先结论后分析
  • 少空泛形容词,多成本、体验、适用人群
  • 不要臆测没有依据的市场趋势

这些内容,并不需要每次都从几百轮对话里重新“猜”。

它应该被提炼成结构化偏好,在每次任务开始前自动注入。

这里有一个特别容易被拆错的认知:

“对话记录存储”和“用户偏好感知”不是两个独立选题,而是同一主题的两层能力。
  • 对话记录,解决“刚刚发生了什么”
  • 用户偏好,解决“这个人通常想要什么”

如果只做前者,Agent 会显得“有记性但不稳定”;

如果加上后者,它才开始像一个长期协作的助理

从成本上看,差别也很明显。全量塞历史记录,token 消耗会越来越高,而且噪声越来越多。很多经验型测试里,历史消息超过 20~30 轮后,模型输出稳定性往往不升反降,因为无关信息太多。相反,结构化偏好通常只需要几十到几百字,却能持续发挥作用。

---

记忆层到底该记什么?一套适合 n8n 的分层设计

真正可用的记忆,不该“全存”,而该“分层”。

下面这张分层图,建议你直接作为设计 Agent 的认知锚点。

记忆层分层图

用户输入

├─ 短期记忆(Session Memory)

│ 当前会话上下文、刚提到的信息、最近追问

├─ 长期记忆(Preference Memory)

│ 用户偏好、口吻习惯、输出格式、关注重点

├─ 任务记忆(Task State Memory)

│ 当前任务状态、已完成步骤、待确认信息、执行进度

└─ 规则记忆(Rule Memory)

业务规则、合规要求、禁区、风控限制

Prompt 组装后调用模型

1. 短期记忆:解决“当前聊到哪了”

这是最常见的一层。

它通常包括:

  • 当前会话里的关键信息
  • 最近几轮问答
  • 临时补充说明

适合存放在:

  • n8n 执行上下文
  • Redis
  • 会话级数据库表

它的特点是:更新频繁、生命周期短。

2. 长期偏好记忆:解决“这个用户通常喜欢怎样的结果”

这是最有价值、也最容易被忽略的一层。

适合保存:

  • 语气偏好:专业、克制、简洁
  • 格式偏好:先结论后展开、分点、不写长段落
  • 内容偏好:更关注成本、原理、落地性
  • 反感模式:少营销词、少夸张判断、少空泛描述

这部分非常适合存结构化 JSON,而不是原始文本堆叠。

{

"user_id": "u123",

"tone_preference": "专业、克制、少营销感",

"output_format": "先结论后展开,使用小标题,避免长段落",

"content_focus": ["技术原理", "实际成本", "可执行建议"],

"disliked_patterns": ["空泛形容词", "过度夸张", "无依据预测"],

"last_updated": "2025-02-15T10:30:00Z"

}

3. 任务状态记忆:解决“这件事做到哪一步了”

如果你的 Agent 不只是聊天,而是要完成任务,这层就很关键。

比如写一篇文章时,任务状态可能包含:

  • 选题是否已确认
  • 大纲是否生成
  • 是否拿到参考资料
  • 初稿是否已输出
  • 用户是否要求二次改写

这类记忆决定了 Agent 不会每次都从头问一遍。

4. 规则记忆:解决“哪些事不能做、必须怎么做”

这一层更像系统护栏。

比如:

  • 客服不能承诺退款结果
  • 内容助手不能编造数据来源
  • 销售 Agent 不能泄露底价规则
  • 涉及隐私和敏感信息默认不存储

它通常来自业务方,而不是用户本人,所以和“用户偏好”必须分开。

---

用 n8n 实现“用户偏好感知”工作流:从 Prompt 到节点编排

说方法论不难,真正难的是:怎么放进工作流里跑。

这里我用一个最容易理解的场景来演示:AI 内容助手

目标是让它长期服务同一个创作者,自动记住其写作偏好。

工作流总流程

用户输入

检索用户偏好(DB / Sheet / Notion / Redis)

读取任务状态

拼装系统 Prompt

调用模型

输出结果

判断是否出现“新偏好”

满足条件则更新偏好库

如果你在 n8n 里搭,通常会用到这些节点:

  • Webhook 或聊天入口节点
  • 数据库查询节点:按 user_id 拉取偏好
  • Function / Code 节点:清洗与合并变量
  • 模型调用节点
  • IF 条件节点:判断是否更新偏好
  • 数据库写入节点:更新长期记忆

第一步:先取偏好,再问模型

很多人把偏好写进系统提示词里,但没有先做检索。

结果就是:所有用户用一个 Prompt,当然不可能“更懂你”。

在 n8n 里,正确顺序应该是:

1. 接收用户输入

2. 根据 user_id 查询长期偏好

3. 查询该任务当前状态

4. 再拼装 Prompt

第二步:Prompt 重点不是文案,而是变量槽位

下面这版模板,你可以直接用:

你是一个为特定用户提供持续服务的 AI 助手。

在回答前,请优先遵守以下用户长期偏好:

{{user_preferences}}

当前任务背景:

{{task_context}}

当前用户输入:

{{user_input}}

请按以下原则输出:

1. 优先符合用户偏好的表达方式

2. 若偏好与任务目标冲突,以任务目标为准

3. 若信息不足,不要臆测,先提出澄清问题

4. 输出格式遵循以下要求:

{{output_rules}}

真正值得学的,不是这几句中文本身,而是它的变量槽位设计

  • {{user_preferences}}:长期偏好
  • {{task_context}}:当前任务态
  • {{user_input}}:本轮输入
  • {{output_rules}}:输出规则与约束

也就是说,Prompt 不是一段静态说明书,而是一个动态拼装接口

第三步:什么时候写入记忆,决定系统会不会越用越歪

很多人做记忆层,最大的问题不是“记不住”,而是“乱记”。

建议你用这几条规则控制写入:

  • 用户明确表达偏好时才写入
  • 同一偏好多次出现后再提升权重
  • 临时要求不要直接覆盖长期偏好
  • 敏感信息默认不存
  • 和任务无关的情绪化表达,不进入长期记忆

比如用户说:

  • “以后都用简洁一点的风格” → 可写入长期偏好
  • “这一次写得活泼点” → 更适合写入临时任务态
  • “我今天心情不好” → 不建议进入偏好库

n8n 里可以先用轻量规则判断,再决定是否更新数据库:

return [

{

json: {

user_id: $json.user_id,

extracted_preference: $json.message.includes("以后都用简洁一点的风格")

? { tone_preference: "简洁" }

: null

}

}

];

这段代码不复杂,但很重要:它说明记忆不是“自动全收”,而是选择性沉淀

---

一个前后对比案例:同样写测评,为什么结果像换了个助手

任务:帮用户生成一篇科技产品测评文章

没有偏好记忆时

模型只能根据当轮指令输出,常见结果是:

  • 开头铺垫很多,迟迟不给结论
  • 喜欢用“惊艳”“颠覆”“全面升级”这类词
  • 结构随机,有时像新闻,有时像广告稿
  • 重点不稳定,忽略成本和适用人群

示例输出片段:

这款产品凭借出色的设计理念和强大的功能配置,为用户带来了前所未有的使用体验,在当前市场中展现出极强的竞争力……

看起来没毛病,但没有“用户味”。

有偏好记忆后

假设系统已保存这位用户的长期偏好:

  • 先结论后分析
  • 理性表达,少营销词
  • 标题不超过 18 字
  • 重点讲技术原理、实际成本、是否值得买

这时输出会明显不同:

结论:如果你更看重稳定性和长期使用成本,它值得买;如果你只追求参数表上的极致性能,这款并不是最优解。
接下来分三部分看:性能是否过剩、真实使用成本高不高、它适合哪类人。

区别就在这里:

前者像“会写”;后者像“懂你以后再写”。

---

成本、效果和维护:哪种记忆方案更适合长期用?

下面这个表,基本可以概括三种常见方案的优劣。

| 方案 | 输出稳定性 | 个性化程度 | Token 成本 | 维护难度 | |---|---|---:|---:|---:| | 只喂历史聊天记录 | 中 | 低 | 高 | 低 | | 结构化偏好记忆 | 高 | 高 | 中 | 中 | | 全量记忆全塞 Prompt | 低 | 中 | 很高 | 高 |

为什么“结构化偏好记忆”最值得做?

  • 它比全量历史更省 token
  • 它比纯上下文更稳定
  • 它可被工作流复用,不依赖某一轮聊天
  • 它适合和任务状态、规则约束一起协作

如果你在 n8n 里做自动化,这一点尤其关键。因为工作流系统真正追求的不是“偶尔灵感爆发”,而是每次都大差不差地交付对的结果

---

这套 Prompt 思路为什么值得学?它不只是 n8n 技巧

很多人学 Prompt,只学“怎么问模型”。

但成熟的 Agent 设计,关注的是三件事:

1. 输入前拿到什么信息

2. 模型中遵守什么规则

3. 输出后沉淀什么记忆

一旦你按这个框架理解 Prompt,很多场景都能迁移:

  • 销售跟进:记住客户关注价格还是交付周期
  • 知识库问答:记住提问者的专业程度和偏好深度
  • 内容创作:记住作者风格、栏目结构、禁用表达
  • 内部流程自动化:记住审批节点与字段要求
  • 跨渠道客服:记住同一用户在不同入口的历史偏好

换句话说,这不是一个 n8n 小技巧,而是一种Agent 设计模式

---

如果你想自己搭,这样开始最省时间

如果你也想把这套“偏好记忆 + Prompt 拼装 + 工作流自动更新”的思路真正跑起来,建议先别一上来就追求最复杂的架构,而是先跑通最小闭环:

1. 用 n8n 接一个用户输入入口

2. 建一个最简单的偏好表,至少有 user_idtone_preferenceoutput_format

3. 做一次“读取偏好 → 拼 Prompt → 输出结果”

4. 再补上“识别新偏好 → 条件写回”的逻辑

模型接入层,尽量选稳定、方便实验的方式,这样你可以把精力放在工作流设计本身。

如果你准备自己做这类 Agent 工作流测试,可以用 api.884819.xyz

  • 用户名 + 密码即可注册,不需要邮箱验证
  • 注册即送 5 元体验额度
  • 国产模型如 Deepseek R1/V3、通义千问 Qwen3、Kimi K2.5、GLM-5 完全免费
  • 没有月租、没有订阅,按量付费
  • 平台内置 AI 对话功能,注册后直接能用

如果你要在 n8n 里做不同 Prompt 结构和记忆策略的对比实验,这种低门槛环境会省掉很多前期折腾。

---

结尾:未来 Agent 的分水岭,不只是模型强不强

接下来一两年,大家还会继续讨论模型参数、上下文长度、RAG 效果。

这些都重要,但真正会拉开差距的,可能是另一件更“朴素”的事:

你的 Agent,能不能长期稳定地理解一个具体用户,并把这种理解持续用在流程里。

模型再强,如果每次都像第一次认识你,它就始终停留在“会回复”。

只有当它开始稳定调用你的偏好、约束、任务习惯,它才进入“会做事”的阶段。

会记住你说过什么,不稀奇;会记住你真正偏好什么,才是 Agent 开始变得有用的分水岭。
即日起新注册用户系统自动送50万token,想要更多可以通过工单联系客服申请,再手动赠送200万token。

下一篇我们接着讲:Agent 有了记忆还不够,怎么让它“记得住、用得对、不会乱改”?我们会拆一套适合 n8n 的记忆更新策略,重点解决“错误偏好被写进长期记忆”这个最常见的坑。

本文由8848AI原创,转载请注明出处。关注8848AI,带你从零开始学AI。

#AI教程 #n8n #Agent #Prompt技巧 #工作流自动化 #8848AI #人工智能 #AI应用