2026 年,你和 AI Agent 有一段跨三天的对话。

第一天:你花了 20 分钟,向 Agent 详细解释公司代码库的结构、团队的命名规范、以及某个遗留模块的"潜规则"。Agent 表现得非常理解。

第二天:你问 Agent:「昨天我们说那个遗留模块要怎么接入新服务?」Agent 礼貌地回答:「抱歉,我没有这次对话的上下文。」

第三天:你重新打开对话框,发现 Agent 完全不记得你是谁。

这就是「金鱼问题」(Goldfish Problem)——当前 AI Agent 最大的体验断层。LLM 本身是无状态的,每一次对话都是从零开始。上下文窗口再大,也只是更大的"草稿纸",不是记忆。

记忆持久化,正是解决这个问题的关键技术。


一、为什么 Agent 的记忆是个系统性问题

很多人第一反应是:用 RAG(检索增强生成)不就行了吗?把历史对话向量存入数据库,检索回来做上下文。

这个思路没有错,但远远不够。RAG 解决的是「知识召回」的问题,而 Agent 记忆涉及更复杂的层面:

  • 偏好记忆:用户喜欢简洁回复还是详细解释?
  • 关系记忆:用户 A 和用户 B 是什么关系?
  • 时间线记忆:这件事发生在哪个版本发布之后?
  • 置信度记忆:这条"事实"有多可靠,是否被后续对话推翻过?

这些问题,简单的向量相似度检索解决不了。Agent 需要一套分层记忆架构,模拟人类大脑中不同类型的记忆机制。


二、记忆的四层模型

参考神经科学对人类记忆的分类,AI Agent 的记忆可以划分为四个层次:

2.1 工作记忆(Working Memory)

类比:人脑的短时记忆,类似 RAM。

作用:保存当前对话窗口内的上下文,是 LLM 直接"看到"的内容。

特点

  • 容量受限于上下文窗口大小(8K、128K、1M tokens 不等)
  • 天然具有"最近优先"偏差,早期信息被后续内容稀释
  • 每次新对话开始时清空

Agent 中的问题:迭代 summarization(摘要压缩)虽然能腾出空间,但会引入「上下文崩溃」——多次压缩后,细节信息以非线性方式丢失,且不可逆。

2.2 情景记忆(Episodic Memory)

类比:人脑记录"那天发生了什么",类似日志。

作用:存储完整的对话历史或任务轨迹(trajectory),包括时间戳、事件顺序、决策节点。

特点

  • 完整保留细节,可回溯审计
  • 存储成本高,检索时需要配合时间条件过滤
  • 适合用于合规要求高的场景(如临床试验监控、金融风控)

典型应用:「AI 为什么要推荐这个方案?」→ 查询情景记忆,追溯决策路径。

2.3 语义记忆(Semantic Memory)

类类:人脑的"知识图谱",去掉具体场景的抽象事实。

作用:存储提取后的结构化知识:用户偏好、事实结论、实体关系。

特点

  • 经过压缩和抽象,体积小、检索快
  • 需要从原始对话中"提炼"——这本身就是一个复杂的 Agentic 任务
  • 典型的实现形式:知识图谱 + 向量检索

典型应用:「用户偏好:简洁回答,不需要太多emoji」→ 从多次对话中提取并持续累积。

2.4 程序记忆(Procedural Memory)

类比:人脑的"肌肉记忆",知道"怎么做"。

作用:存储 Agent 的行为模式、工具调用习惯、工作流程。

特点

  • 不是"知道什么",而是"习惯怎么做"
  • 例如:Agent 学会了"每次写代码前先运行测试"这个习惯
  • 通常通过系统提示词(System Prompt)或行为模板实现

三、核心工程方案对比

目前社区最活跃的四个开源方案:Mem0、Letta(MemGPT)、LangMem、Zep。它们代表了不同的设计哲学。

3.1 Mem0 —「插入式记忆层」

定位:即插即用的记忆服务,GitHub ~48K Stars,Apache 2.0 协议,Y Combinator 投资。

核心思路

  • 被动提取(Passive Extraction):不需要 Agent 主动调用记忆工具,Mem0 自动从对话中提取 facts、preferences、relationships
  • 三层存储:User(跨会话)→ Session(单会话)→ Agent(多用户共享)
  • Pro 版本提供 Graph Memory:实体关系图谱,支持多跳推理

优点

  • 集成极简,mem0.add() 三行代码搞定
  • 不绑定 Agent 框架,OpenAI、Claude、本地模型都能用
  • Managed 版本开箱即用,支持 SOC 2/HIPAA

缺点

  • Pro 版本的 Graph Memory 需要 $249/月
  • 自主托管(self-host)版本功能有差异

LongMemEval 基准:49.0%(第三方独立评测)

适用场景:快速为现有 Agent 添加记忆能力,不需要太多定制。

3.2 Letta(MemGPT)—「LLM 即操作系统」

定位:将 LLM 视为操作系统,模型自己管理记忆的分页(paging),GitHub ~21K Stars。

核心思路

  • MemGPT 的原始洞察:让 LLM 自己决定何时将信息从「主上下文」(RAM)写入「归档存储」(磁盘),何时召回
  • 记忆分层:Core Context(主上下文)→ Recall Store(近期记忆缓存)→ Archival Store(外部冷存储)
  • LLM 通过 function calling 来执行记忆的写入和检索——即"让 Agent 自己管理自己的记忆"

重命名说明:MemGPT 已更名为 Letta,但核心技术思想不变。

优点

  • 记忆管理完全由 Agent 自主控制,不需要人工干预提取策略
  • 适合高度自主的长周期 Agent 任务
  • 附带 ADE(Agent Development Environment),有可视化调试界面

缺点

  • 需要围绕 Letta 构建整个 Agent 运行时,框架锁定较重
  • 不适合只想在现有架构上加一层记忆的场景

适用场景:需要 Agent 长时间运行、自主决策、跨多天持续执行复杂任务。

3.3 LangMem —「LangGraph 原生记忆」

定位:LangChain/LangGraph 生态的官方长期记忆解决方案。

核心思路

  • 作为 LangGraph 的 storage 层集成,支持 SemanticMemoryEpisodicMemoryProceduralMemory 三种类型
  • 记忆操作通过显式工具调用(不是被动提取):Agent 自己在合适的时机调用 memory.store()memory.retrieve()
  • 支持 fact-level 和 behavior-level 两种记忆

优点

  • 与 LangGraph 无缝集成,langgraph add memory 即可
  • 行为级记忆(记住"Agent 应该怎么做事")是独特能力

缺点

  • LongMemEval 基准 58.10%,但 p95 检索延迟高达 59.82 秒——对实时交互场景不友好
  • 过度依赖 LangGraph 生态

适用场景:已在使用 LangGraph 的团队,需要离线和批量模式的 Agent。

3.4 Zep —「Enterprise 级记忆」

定位:面向生产环境的记忆服务,提供完整的记忆存储、检索和会话管理。

核心思路

  • 自动从对话中提取实体、关系和摘要
  • 提供 ZepMemory 类,支持 session-level 和 user-level 记忆
  • 内置去重和记忆合并机制,防止同一事实被多次记录

优点

  • 专为生产环境设计,支持高并发
  • 提供记忆重整(memory reconsolidation)功能:随着时间推移合并矛盾记忆

缺点

  • 相比 Mem0,生态系统较小
  • 文档和社区支持相对有限

四、ACE 模式:上下文工程的新范式

2025 年一篇有影响力的 arXiv 论文提出了 Agentic Context Engineering(ACE),解决的是传统 RAG 在 Agent 场景下的两大缺陷:

  • 简洁性偏差:LLM 天生倾向于简短回复,多次迭代后上下文变得支离破碎
  • 上下文崩溃:反复 summarization 导致信息非线性丢失

ACE 的解法是一个三 Agent 循环

Generator(生成)→ Reflector(反思)→ Curator(策展)
  1. Generator:产生初始响应或轨迹
  2. Reflector:评估并精炼,检测错误、补充遗漏的上下文
  3. Curator:将学习成果提取到「上下文剧本」(Context Playbook)中,作为 skills.md 或 memory store

下次 Agent 启动时,Playbook 自动注入。实验结果:Agent 基准 +10.6%,领域任务 +8.6%,且无需对 LLM 做任何 fine-tune。

这个模式的本质是:记忆的构建本身也是一个 Agentic 过程,而不是一个简单的 ETL 管道。


五、从零搭建:记忆系统的最小可行架构

不想引入重型依赖?以下是一个基于 Redis + 向量数据库的最小实现:

# 记忆三层架构(简化版)

class AgentMemory:
    def __init__(self):
        # 1. 工作记忆:当前会话的 sliding window
        self.working = SlidingWindowMemory(max_tokens=8192)
        
        # 2. 情景记忆:Redis List,存储完整事件
        self.episodic = RedisList("episodic:{session_id}")
        
        # 3. 语义记忆:向量数据库,存储提取后的 facts
        self.semantic = QdrantCollection("semantic_memory")
    
    def store(self, content: str, memory_type: str):
        if memory_type == "episodic":
            self.episodic.append({"content": content, "ts": time.time()})
        elif memory_type == "semantic":
            vec = embed(content)
            self.semantic.upsert([(content, vec)])
    
    def retrieve(self, query: str, top_k: int = 5):
        # 优先从工作记忆检索,其次语义记忆
        working_results = self.working.search(query)
        semantic_results = self.semantic.search(embed(query), top_k)
        return merge_and_rank(working_results, semantic_results)

真实生产环境建议:

  • Prefetch 策略:Agent 启动时异步加载最可能相关的记忆,避免首次响应延迟
  • 记忆过期:用户的偏好会变,过期记忆要有降级和淘汰机制
  • 写入节流:不要每次对话都写,高频写入会撑爆向量数据库

六、选型决策树

需要快速集成、最小改动?
├─ 是 → Mem0(推荐)
└─ 否 ↓

已有 LangGraph 生态?
├─ 是 → LangMem(注意延迟问题)
└─ 否 ↓

需要 Agent 自主管理记忆、长周期任务?
├─ 是 → Letta
└─ 否 ↓

企业级生产环境、高并发?
└─ Zep

一句话总结

  • Mem0 = 记忆的 Redux,框架无关,集成最快
  • Letta = 记忆的操作系统,Agent 自我管理
  • LangMem = LangGraph 生态的官方配套
  • Zep = 生产级企业方案

七、趋势与展望

记忆持久化正在从「可选特性」变成「生产级 Agent 的必备基础设施」。几个值得关注的趋势:

1. 记忆基准的成熟 LongMemEval 等第三方基准的出现,让记忆系统的评估不再依赖"感觉"。未来选择记忆方案会有更客观的数据支撑。

2. 图谱记忆的崛起 向量检索解决"相似性"问题,图谱记忆解决"关系性"问题。Mem0 Pro、LangMem 都在往这个方向走。实体关系图谱能让 Agent 做多跳推理,而不是单点检索。

3. 记忆与 fine-tuning 的边界模糊 当 Agent 反复经历同一个任务并从中学习时,这本质上是在做轻量 fine-tuning。「记忆系统 + 自适应行为更新」会逐渐变成一个连续体,而不是非此即彼的选择。

4. 隐私与合规 记忆系统天然涉及用户数据。“记忆的右侧遗忘权”(被删除的权利)正在成为企业级 Agent 的合规要求。Mem0 的 HIPAA/SOC2 支持只是个开始。


结语

2026 年的 Agent 开发,一个明显的分界线是:有没有记忆

没有记忆的 Agent,每次启动都是新手。有记忆的 Agent,才能成为真正有生产能力力的数字员工。

金鱼和十年老搭档之间的差距,不是更多上下文窗口,而是持久化的学习与适应能力。

选对记忆架构,是让 Agent 从"工具"变成"伙伴"的第一步。


本文参考了 Mem0、Letta、LangChain LangMem、Zep 官方文档,以及 arXiv:2512.13564《Memory in the Age of AI Agents》、ACE 论文等研究成果。