Appearance
Q107 · AI Agent 的记忆机制有哪些作用和原理?
一位用户几天前向客服 Agent 说:“X8 相机的镜头无法对焦,请建检测工单。以后尽量用站内消息联系我。”今天他打开新聊天,说:“照片已上传,继续处理上次那单。”如果 Agent 完全忘记前一次接触,就要重新问相机型号、工单号和联系偏好;如果它把旧聊天里“等待照片”当成今天的工单状态,又可能错过刚上传的照片。
记忆机制的作用是让应用能在合适的时刻找回以前交互中仍有用的信息,用于接续任务、减少重复提问、尊重明确偏好,或参考先前解决问题的经验。其原理不是给模型“大脑里永久加一段记忆”,而是应用把选出的信息保存在模型上下文之外,下一次在验证身份、确认相关性之后取回,再放进当前模型输入。LangGraph 记忆概览把同一会话内的状态与跨会话可用的数据区分开;Anthropic 的上下文工程实践也将结构化笔记描述为存于上下文窗口外、以后按需重新载入的信息。

这题关注“为什么记、什么才该记、读取后怎么用”。紧邻的 Q106“如何实现长期记忆能力”更偏向跨会话存储的具体设计与技术方案;理解下面的读写原则后,再谈数据库或向量检索选型才不会把“存起来”误当成“记对了”。
术语与例子约定
| 词或符号 | 在本文中的含义 |
|---|---|
| Agent | 应用依据目标、对话和工具结果决定下一步的系统;语言模型负责理解与生成,存储、权限和业务工具由应用提供。 |
| 模型上下文 / 上下文窗口 | 某一次模型调用实际能看到的消息、工具结果和取回的记忆;窗口容量有限,放进去的东西也可能过时或干扰判断。 |
| 记忆机制 | 应用从过往交互筛选信息,保存、检索、呈现给模型,并在需要时更新或删除的流程。记忆不等于模型权重被训练修改。 |
| 短期记忆 | 当前会话或当前执行过程要接续的消息与状态,例如“正在处理 W12,下一步核对照片”。它通常按会话标识保存。 |
| 长期记忆 | 能跨不同会话再次使用的信息,例如用户明确提出的联系偏好。长期指作用范围跨会话,不等于必须永久保留。 |
| 事实记忆 / 语义记忆 | 对用户、任务或领域的相对稳定事实,例如“U8 希望优先使用站内消息联系”。它也必须注明来源与可更改性。 |
| 经历记忆 / 情节记忆 | 过去发生过什么、采用了什么操作及结果,例如“上次通过请求照片继续排查对焦问题”;不能把经历摘要直接当当前工单状态。 |
| 规则记忆 / 程序性记忆 | 做事所遵守的规则或步骤,例如售后处理准则。生产规则通常由开发者控制版本,用户聊天不能随意把它改写。 |
| 写入 / 读取 / 更新 / 遗忘 | 从交互中挑选并保存、按当前问题找回、用新事实纠正旧记录、删除或停止提供不再适用的记录。 |
| 检索 | 从已保存的信息中按用户、工单、关键词、时间等条件找回相关记录;“找得到”仍要检查归属和是否过期。 |
| 来源与时间 | 一条记忆由谁说出、何时写下及最近何时核实;用于区分“用户自述”与“工具证实”。 |
U8、C1、C2、W12、X8 | 本例虚构的登录用户、第一次会话、几天后的新会话、检测工单、相机型号。 |
例子假设:9 月 20 日,已登录用户 U8 在会话 C1 报告相机 X8 镜头无法对焦,并明确要求今后优先使用站内消息联系;售后系统随后实际创建工单 W12,状态为“等待用户上传照片”。9 月 23 日,他在新会话 C2 上传照片并说“继续处理上次那单”;售后系统此时真实状态是“照片已收到,待人工检测”。所有编号、日期与政策均为教学设定。Agent 不能仅凭用户说“我上传了”就假定业务系统已接收文件。
记忆帮 Agent 解决哪几类问题
第一是任务连续性。同一会话中,“那单”“刚才的照片”是省略说法;当前状态保存 W12 这个工单关联,Agent 才知道用户在指什么。长任务中途暂停或模型输入长度受限时,保存必要的进度、未解决事项和下一步,可以让后续调用继续工作。LangGraph 概览将同一 thread(会话线)内的消息和状态视为短期记忆;Anthropic也讨论了压缩历史与保留结构化笔记来维持长任务连贯性。
第二是跨会话个性化。C2 已是新聊天,但“优先站内消息”仍可能适用。应用可在用户授权的范围内把这条明确偏好放进 U8 的跨会话记忆,下次取回后用它调整沟通方式。不过偏好只是联系方式的提示;真的发送消息还要遵守通知设置、用户同意和实际可用渠道。不能把模型猜测的“用户不喜欢电话”写成永久偏好。
第三是利用经验减少重复试错。如果之前多个已审核案例显示“相机无法对焦时,先确认固件版本和样片,再判断是否送检”,系统可以把这种经过验证的处理经验作为候选步骤。它应标明适用型号、来源和审核版本;旧案例的做法不一定适用于当前的 X8,也不能覆盖今天生效的售后规则。认知架构研究 CoALA把语言 Agent 的记忆与读取、写入等内部动作放在同一框架中讨论;LangGraph 的概念文档则将事实、经历和程序性规则视为记什么的不同维度。LangGraph:Memory overview
这里有两组容易混淆的分类。短期与长期讲的是信息在多长范围内能被取回:C1 的临时步骤只为这个会话服务,而 U8 的联系偏好可跨会话。事实、经历、规则讲的是信息内容:一条用户偏好是事实;上次处理轨迹是经历;售后处理规范是规则。它们并非互相排斥的三种数据库,也不是模型天生会自动生成的三种“脑区”。
一条记忆从写入到再次使用
C1 结束前,应用先判断哪些内容将来还值得保留。相机故障描述和工单进度需要留在 W12 的业务记录或当前任务状态;用户明确提出的联系偏好可成为跨会话记忆。示意记录可以写成“所有者=U8;内容=优先站内消息联系;来源=C1 中 U8 明确提出;写入日=9 月 20 日;状态=有效”。这些字段是为了说明记录如何被核对,并非特定框架强制的数据格式。工单 W12 的实际处理状态则属于售后系统,不能复制一份到记忆里就当成实时真值。
几天后 C2 到来,应用按顺序做四件事:
- 先定身份和范围:服务端确认登录者为
U8,只查询属于U8的记忆与可访问工单。用户口头自称“我是 U8”或报出W12编号,不足以获得别人的记录。 - 按当前问题取回:用户说“上次那单”时,取与
U8当前未结工单有关的最小信息,如W12的引用、上次待上传照片的上下文,以及联系偏好。找到了另一张相机工单,也不能因为文字相似就混进来。 - 重新查会变化的事实:通过售后系统查询
W12,得到“照片已收到,待人工检测”。旧摘要“等待用户上传照片”应让位于这条当前工具结果;如果工具不可用,明确说状态暂时无法核实。 - 组装本次模型输入并回应:把当前用户问题、相关记忆、来源与时间、实时工单结果交给模型。它可以说“W12 的照片已收到,目前待人工检测,后续优先通过站内消息通知”,但不能说“检测已确认相机有缺陷”。
这就是一个完整的筛选 → 写入 → 按身份检索 → 核验 → 用于下一步 → 必要时更新过程。只把所有对话原文一股脑儿塞进每次模型调用,也许暂时让模型看见更多历史,却会增加长度、费用与过期资料干扰;只做摘要又可能丢掉“用户自述”和“工具证实”的区别。Anthropic 建议在有限上下文里选择高信号信息,并用外部笔记在需要时再载入。来源
写入可以发生在当前交互中,让下一轮立刻读到;也可以异步做,减轻当前答复的等待,但会有“刚说过的偏好尚未写入”的时间差。LangGraph 记忆文档明确讨论了当前运行路径写入与后台写入的取舍。来源无论哪种方式,应用都应能区分“写入成功”“待写入”和“写入失败”,不能在保存失败后仍对用户保证“我以后一定记得”。
错记、过期和越界怎样处理
记忆最危险的错误之一是把用户报告写成已核实事实。例如自动摘要错误地生成“W12 已确认镜头硬件故障”,而原始消息只是 U8 说“镜头无法对焦”。如果下次直接相信这条摘要,客服可能提前承诺免费维修。写入时应保留“用户自述”来源;需要检测结论时必须查询售后系统。若记忆与实时系统冲突,以适用的权威业务记录为准,并标记或修正过时记忆。
另一种错误是取错人或取错事。若查询只按“相机无法对焦”做相似度搜索,可能把 U9 的案例返回给 U8。相似度只表示文字相近,不是访问许可。先按服务端身份限定范围,再做相关性检索;返回后还要核对工单归属。权限校验由应用执行,不应让模型用一句“请保护隐私”代替。
信息还会随时间失效。若 U8 后来明确改为“之后可以电话联系”,应更新原偏好并保留必要的变更记录;若用户要求删除非必要的个人记忆,应提供删除或停止使用的路径。旧工单结案后,“等待照片”不该继续被带进未来每次对话。保留时间、可见性与删除策略要依据业务需求和适用隐私要求确定,不能因为存储成本低就无限期保存全部聊天。
最后,记忆并非所有 Agent 都必需。一次性查询当前订单状态,直接查订单系统即可;把状态另写一份“长期记忆”会制造第二个可能过期的版本。只有当跨步骤、跨会话连续性或经验证的偏好确实提升任务效果时,才值得增加记忆写入、检索和纠错链路。可以用同一批客服任务对比有无记忆:看重复提问次数、任务完成率、取错工单率、越权读取次数、旧状态误用率与额外时延,而不是只看回答是否更像“认识你”。
面试时怎么回答
Agent 的记忆机制是应用把以往交互中有用的信息保存到模型上下文之外,并在后续任务里按身份、相关性和时间取回,再作为当前输入的一部分。它主要帮助同一任务接续、跨会话偏好复用和参考过去经验。例如用户在 C1 说以后优先站内消息联系,几天后的 C2 可以取回这条明确偏好;但工单 W12 的照片是否收到、是否检测完成,要重新查售后系统。机制上我会先筛选有价值的内容,记录所有者、来源和时间,写入合适范围;读取时先做权限过滤,再核对新旧事实,发现冲突就更新或停用旧记忆。短期/长期讲可用范围,事实/经历/规则讲内容类型;记忆不是模型自动长出的持久知识,也不能替代业务系统的真值。还要防错记、过期和跨用户泄露,支持用户纠正与删除,并评测它是否真的减少重复提问和错误。
如果追问“把所有聊天都塞给模型不就能记住了吗”,可以回答:单次模型输入有容量与成本限制,长历史含许多过期资料,下一次新会话也未必带得上;筛选和按需读取更可控。若追问“记忆写了工单状态,为什么还要查工具”,回答:记忆记录的是过去曾知道什么,工单工具告诉我们现在实际是什么;可变业务状态以后者为准。
资料依据
- LangGraph / LangChain:Memory overview:会话内与跨会话记忆、事实/经历/规则类型、读写时机与存储范围。
- LangGraph:Memory:短期状态保存和跨会话 Store 的官方实现概览。
- Anthropic:Effective context engineering for AI agents:有限上下文、压缩与上下文外结构化笔记。
- CoALA:Cognitive Architectures for Language Agents:将模块化记忆和内部读取、写入动作纳入语言 Agent 架构的原始论文。