Agentic AI 系统中的长期记忆
过去一年里,我陆续做过几个 Agent 相关的项目,从简单的对话助手到带工具调用的自动化系统。一个成熟的 Agentic AI 系统当然不只是模型推理能力,它需要工具编排、状态管理、反馈闭环,甚至一定程度的自治能力。但真正跑进生产环境后,我发现一个更底层的问题:如果没有长期记忆,AI Agent 本质上只是无状态的一次性工具。它记不住用户的偏好,记不住过去的决策,更无法从历史结果中学习。在真正可用的 Agentic AI 系统里,长期记忆 (Long Term Memory) 不是锦上添花,而是决定系统是否具备长期能力的基础设施。
1. 为什么 AI Agent 需要长期记忆?
在单轮对话场景下,LLM 的能力已经足够强大。很多时候,我们只需要一个 prompt,就可以完成写作、总结,甚至复杂推理。但当 AI 从一次性的对话工具,演变为持续运行的 Agent 时,问题就完全不同了。
一个真正运行在生产环境里的 Agent,不只是完成任务,它需要在时间维度上持续存在。它要面对同一个用户多次发出的请求,要在不同阶段做出决策,要在反馈中调整行为。
如果没有长期记忆,每一次与 Agent 的交互其实都是重新开始。用户表达过的偏好会被遗忘,过去的决策无法复用,失败的经验也不会转化为系统的改进。所谓的用户个性化 (personalization) 只能停留在当前会话里,无法跨时间跨 session 延续。
没有记忆的 Agent,本质上只是一个无状态工具;有记忆的 Agent,才有可能成为一个长期协作甚至动态演进的系统。
2. 什么是 AI Agent 的记忆?
当我们讨论 Agent 的长期记忆时,首先要搞清楚一个问题:什么是 AI Agent 的长期记忆?
短期记忆 (Short-Term Memory, STM) 很好理解,它是 Agent 在当前任务或当前会话中暂时持有的上下文状态,比如当前的对话信息。但是短期记忆是暂时的 (Ephemeral),在会话结束就会被丢失。
长期记忆 (Long-Term Memory, LTM) 是跨任务、跨会话、可持久化的状态存储,用来保存会在未来影响用户决策的信息。它可以被敷用,并且是实现系统个性化的关键。
它并不只是保存聊天记录,也不是简单地把所有信息丢进向量数据库或者DDB。真正有意义的记忆,是那些会在未来影响决策的信息。
借鉴认知科学的划分,Agent 的长期记忆通常可以分为三种类型:
语义记忆(Semantic Memory)
这是关于事实 (facts) 的记忆。它包括用户的稳定属性、明确表达的偏好,以及长期有效的信息。例如用户的时区、写作风格、业务约束等。这类记忆更新频率不高,但一旦出错,会长期影响系统表现。情景记忆(Episodic Memory)
这是关于过往经历 (past experience) 的记忆。它记录过去发生过的事情,以及当时的上下文和结果,例如一次工具调用的输出、一段关键对话、一次失败的决策或用户反馈。这类记忆数量往往较多,也更容易产生噪声,因此通常需要筛选和摘要。程序记忆(Procedural Memory)
这是关于行为规则 (rules / constraint) 的记忆。它体现为规则、约束和行为策略。在很多 LLM 系统中,它可能存在于 system prompt、工具使用说明或者一些写在系统 markdown 中的 guardrails。程序记忆决定了 Agent 的行为边界,是系统稳定性的核心。
当我们把这三种记忆区分开来,问题其实就变得清晰很多:哪些信息属于长期事实?哪些属于可参考的历史?哪些属于行为规则?
3. 长期记忆库里应该存什么?
当我们决定为 Agent 引入长期记忆之后,一个更关键的问题就出现了:什么信息值得被记住?
AI Agent 和人类一样,更多记忆并不意味着更好表现。如果我们不管三七二十一,把所有信息所有原始对话记录都扔进长期记忆库,记忆中的大量噪声反而会干扰 Agent 的判断并产生很多的幻觉 (hallucination)。这点已有大量研究证明,比如 Lost-in-the-Middle Effect 或者 RAG 中的检索噪声问题。
所有,真正重要的不是存多少记忆,而是选择有效的记忆。
一个更合理的原则是:
只存储那些会在未来影响决策的信息。
从这个角度出发,长期记忆中通常会包含几类内容:
长期有效的用户事实或偏好
例如写作风格、优先级规则、固定业务约束等。这类信息通常比较稳定,一旦确定,就会持续影响后续行为。关键决策及其结果
某种策略是否有效?某次操作是否成功?失败是否暴露了系统限制?这些都属于情景记忆的重要来源。它们的价值不在于事件本身,而在于对未来决策的参考意义。经过多次交互推断出的长期倾向
有些信息并非用户明确表达,而是系统在多次交互中逐渐观察到的,例如用户更偏好简洁回答,或更关注成本而非性能。这类信息通常需要设置信心阈值,避免过早写入。
与此同时,记忆的遗忘同样重要。如果 Agent 把所有对话和行为永久保存,记忆很快就会变成负担。一个成熟的长期记忆系统,往往需要具备筛选、压缩甚至衰减机制,让不再重要的信息逐渐淡出。
设计长期记忆时真正困难的,不是“如何存储”,而是“是否应该存储”。
4. 什么时候读取 / 写入长期记忆?
上一节探讨了长期记忆“存什么”的问题,在真实生产环境中,一个更实际的问题是长期记忆“什么时候用”?
什么时候读取?
通常发生在以下场景:
- 新一轮交互开始时
- 需要做重要决策之前
- 调用关键工具之前
但读取并不意味着加载全部记忆。合理的做法是根据当前任务进行有选择的检索,让相关信息进入上下文,而不是让历史淹没当前决策。
什么时候写入?
在实践中,长期记忆的写入通常有两种机制:
Hot Path(同步写入)
在 Agent 主循环中直接更新记忆。实现简单、一致性强,但会增加服务的延迟,并可能写入未经筛选的低质量信息。Background(异步写入)
主 Agent 只发出“记忆信号”,由后台 (可以是另一个 agent) 进行整理、总结和存储。这种方式可以降低延迟,并对记忆进行质量控制,但系统复杂度更高。
在多数实际系统中,更合理的做法是采用混合模式:
对用户明确表达的长期偏好使用同步写入,对需要总结或推断的信息使用异步机制,同时在写入前进行置信度判断和去重处理。
长期记忆并不是简单的存储组件,而是 Agent 架构中的一个独立层级。它既影响性能,也影响系统稳定性,更决定了 Agent 是否具备长期演化的能力。