本文是 Dify 记忆能力实战的上篇,手把手带你用通 Dify 内置的“上下文记忆”和“会话变量”两种开箱即用能力,30 分钟内让你的 AI 告别“金鱼脑”。
AI 智能体最让人抓狂的问题是什么?**“金鱼脑”**——上一秒刚说完“我喜欢简洁的回答”,下一秒就给你甩出一篇小作文。
笔者基于本地部署的 Dify 平台,从 3 个阶段构建由简入繁的 Agent 记忆能力,分别是会话**上下文记忆**、**会话变量记忆**和**外部记忆**。前两者是 Dify 平台开箱即用的功能,本文先讲这两个。至于真正跨会话、永久化的外部记忆能力,将在下篇展开。
此外,如果你想了解 Dify 部署、MCP、代码沙箱、Agent 上网、Skill 调用、知识库等实操内容,欢迎关注本公众号并查看往期文章🙏🏻。
* * *
1.**入门基础- 上下文记忆**
一句话定义:上下文记忆让 AI 在 单次对话 中记住“刚刚聊过什么”,是流畅多轮对话的基石。
上下文记忆是 Dify 最基础的记忆功能,开箱即用,无需任何额外配置。它的底层采用**TokenBufferMemory 策略。简单来说,它的核心机制是:当对话内容超过窗口上限时,优先保留最新对话、无条件保护系统指令,同时确保用户消息和 AI 回复成对出现,避免逻辑断裂。**
不过需要注意一个边界情况:**如果单轮输入的消息本身已经接近或超过 Token 上限,历史信息可能被全部剔除**。这也是为什么在构建长上下文 Agent 时,需要合理控制单次输入长度。
🌰 实例 01 电影推荐**— 验证上下文记忆**
构建一个简单的 Chatflow,默认 3 个节点。在 LLM 节点中编辑提示词:
你是一个影评人,精通国内武侠电影的发展历史,能够根据用户需要给出电影推荐建议。
然后在 LLM 节点中 开启记忆功能,默认窗口为 10 轮。

点击【预览】进行测试:
第一轮:让 AI 推荐 3 部武侠电影。AI 给出了《新龙门客栈》《卧虎藏龙》《侠女》。
第二轮:追问“请告诉我第 2 部电影的获奖情况”。AI 准确识别出第 2 部是《卧虎藏龙》,并给出了获奖信息。

✅证明 AI 实现了上下文记忆——它记住了自己刚才推荐了哪些电影。
反之,如果关闭记忆功能,AI 就会“断片”,面对同样的问题答非所问。

**💡 上下文记忆,就是 AI 的“瞬时记忆”——刚说完的话它还记得,但如果你不主动强调,重点就滑走了**。
#### 2.**短期记忆—— 会话变量**
如果说上下文记忆是 AI 的“瞬时记忆”,那**会话变量就是 AI 手边的“便签本”**。
一句话定义:会话变量是 AI 在**单次会话期间**精确记住你指定内容的工具。你亲手把要点写在便签上,AI 随时能看,非常靠谱。
**关键特性:**
* **精确指定:**你要 AI 记住什么,它就记住什么(如“用户名叫张三”)。
* **全程可读写:**在对话的任何环节,你都可以读取、修改、追加变量值。
* **会话结束即消失:**刷新页面、超过超时时间、调用 API 结束会话,变量随之销毁。
对比来看:
💡 上下文记忆让 AI“不健忘”,会话变量让 AI“有重点”。一个靠自动回放,一个靠手动标记,双剑合璧,才是 Dify 内置记忆的完整面貌。
🌰 实例02**旅行指南— 会话变量完整实战**
这个案例的目标是:通过多轮对话,让 AI 像人类导游一样,逐步收集并记住你的旅行偏好,最终生成个性化行程建议。
**Chatflow 构建步骤**(关注公众号,后台【私信】发送“手抄报”,可获取案例 DSL):

(1)会话变量配置
点击画布右上角【会话变量】图标,创建 5 个变量:
**变量名****类型****用途**
destination String 记录目的地
travel_days Number 记录旅行天数
travel_style String 记录风格偏好
accommodation String 记录住宿偏好
collected_info String 汇总所有信息供 LLM读取

(2)参数提取节点
在“输入节点”之后创建**参数提取器节点**,在【提取参数】中添加 4 个变量,用于从用户会话中提取关键信息。

提示词填写如下:
`你是一个信息提取助手,负责从用户的旅行咨询中提取关键信息。“你需要提取以下字段:“- destination: 用户想要去的目的地(城市或地区名称)“- travel_days: 计划旅行的天数(数字)“- travel_style: 偏好的旅行风格,如自然风光、城市人文、美食之旅、历史文化等“- accommodation: 偏好的住宿类型,如特色民宿、星级酒店、青年旅舍等“如果用户没有提到某个字段的信息,请将该字段留空,不要猜测或编造。“用户输入:{{#sys.query#}}`
💡 关键配置:在【高级设置】中,建议**打开【记忆窗口】**。因为用户的旅行偏好(天数、风格等)往往是通过多轮对话逐步透露的,开启记忆能确保信息被完整、准确地捕捉。

(3)模板转换节点
参数提取后,需要把分散的关键信息聚合成一个结构化变量,方便后续 LLM 一次性读取。通过模板转换节点实现:在【设置】中添加 4 个变量,分别指向“参数提取器节点”识别出的对应字段。
{“目的地”:{{destination}},”旅行天数”:{{travel_days}},”旅行风格”:{{travel_style}},”住宿风格”:{{ accommodation}}}
(4)变量赋值节点
会话变量通过**变量赋值节点**进行赋值,将 5 个会话变量对齐参数提取器及模板转换的输出变量。

💡 调试技巧:在“变量赋值节点”后接入一个“输出节点”直接打印聚合变量,可以快速验证会话变量是否有效赋值。

(5)LLM 节点——最终生成
完成会话变量赋值,即捕捉到用户旅行的关键信息,通过“LLM 节点”实现内容生成。提示词如下:
你是一个友好的旅行规划助手。根据以下已知的用户偏好,进行回复。如果信息还不完整(例如,缺少天数或风格),请自然地引导用户补充。如果所有信息都已收集齐全,则生成一份完整的、个性化的旅行建议。当前已知的用户偏好:{{#conversation.collected_info#}} 用户的最新问题是:{{#sys.query#}}**⚠️ 同样建议开启【记忆】功能**,让大模型理解信息缺失情况,在多轮对话中自然引导用户补充信息。最后加上**回复节点**,整个 Chatflow 搭建完成。
### **(6)功能演示效果**
**第 1 轮交互:**只输入旅行地点,助手自动引导用户补充天数、风格等信息。此时会话变量仅记录到目的地。

**第 2 轮交互:**输入旅行天数、风格和住宿要求后,助手捕捉到完整信息,生成了详细的每日行程规划。此时会话变量全部填充完毕。

(此处省略中间截图 1M)

至此,我们完整掌握了 Dify 内置的两种记忆能力:**上下文记忆**解决“即时回忆”,**会话变量**解决“精准记录”。但两者都有一个共同局限——**记忆止步于单次会话,会话结束即清零。**


