Agent记忆系统:如何让AI不再失忆

每次对话都从零开始,是当前AI Agent最大的体验断裂点。你花了20分钟教会它项目背景,关掉窗口再打开——它什么都不记得了。记忆系统,是Agent从"工具"进化为"助手"的关键基础设施。

三种记忆类型

借鉴认知科学的分类,Agent的记忆可以分为三层:

短期记忆(Short-term Memory):就是上下文窗口。Claude的200K、GPT-4o的128K,本质上都是"一次对话能塞多少内容"。优点是零成本、即时可用;缺点是有硬上限,而且会话结束就蒸发。

工作记忆(Working Memory):当前任务的临时状态。比如Agent在执行多步骤任务时,需要记住"我已经完成了第2步,第3步需要用到第1步的输出"。这通常由Agent框架的状态管理机制承担,LangGraph的State、AutoGen的对话历史都属于这一层。

长期记忆(Long-term Memory):跨会话持久化的知识。用户的偏好、项目的上下文、历史决策记录。这是最难做好的部分,也是各框架竞争的焦点。

长期记忆:向量数据库 vs 文件系统

主流方案分两派:

维度向量数据库(Pinecone/Chroma/Weaviate)文件系统(Markdown/JSON)
检索方式语义相似度搜索关键词/路径/全文搜索
适合场景海量非结构化知识结构化、可人工编辑的记忆
可解释性低(向量距离难以直观理解)高(打开文件就能看)
维护成本需要额外基础设施几乎为零
精确度语义匹配可能漂移精确但缺乏模糊匹配

实际上,2026年越来越多的项目在走混合路线:结构化的元数据用文件存,大量历史对话和文档用向量库索引。

RAG在Agent中的角色

检索增强生成(RAG)不是新概念,但在Agent场景中有了新的意义。传统RAG是"用户问→检索→生成回答"的单次流程。Agent RAG是多轮的、主动的:Agent在规划阶段就会主动检索相关记忆,在执行过程中根据中间结果再次检索,甚至在反思阶段检索历史错误来避免重蹈覆辙。

关键区别:Agent决定何时检索、检索什么,而不是被动等用户触发。

框架实测对比

Mem0:专用记忆层,自动从对话中提取事实并存储。API设计简洁(add/search/get_all),支持用户级和Agent级记忆隔离。适合需要"记住用户偏好"的产品场景。缺点是额外依赖,且提取的事实有时不够精确。

Zep:专注对话记忆,自动做对话摘要和实体提取。亮点是时间感知——它知道"用户三天前说过想吃川菜",能处理时间衰减。适合长期对话助手场景。

LangChain Memory:提供ConversationBufferMemoryConversationSummaryMemory等多种策略,灵活但需要自己组装。2026年已经与LangGraph深度整合,通过Checkpointer实现状态持久化。

LlamaIndex:强项在文档索引和检索,做知识库型记忆最成熟。但更像"外部知识系统"而非"个人记忆",适合企业知识管理场景。

我的观点:朴素记忆最实用

用了一圈下来,我发现最朴素的方案反而最好用——一个MEMORY.md文件

OpenClaw的做法是维护一个Markdown文件作为长期记忆,每次会话开始时读取,重要信息随时写入。没有向量数据库,没有复杂的检索管线,就是纯文本。好处是:

  1. 完全透明:用户可以直接编辑记忆,删除不想被记住的东西
  2. 零基础设施:不需要任何额外服务
  3. 可调试:出了问题打开文件就知道Agent"记住"了什么

当然,这在记忆量大了之后会遇到上下文窗口的限制。但对于个人助手场景,几千行的MEMORY.md配合200K的上下文窗口,已经够用了。

技术上最优雅的方案不一定是最好的方案。够用、可控、可理解,才是记忆系统的第一优先级。

参考资料