<!-- title: 自主智能体记忆四栈实测选型 -->

# 自主智能体记忆四栈实测：Mem0·Letta·Zep·LangMem 的持久化自治

## 概述

2026 年，自主智能体（Autonomous Agent）的瓶颈已经从模型能力位移到记忆层。一个上下文窗口再大的 LLM，只要会话断开、进程重启、跨日执行，就会"失忆"——这是玩具与生产基础设施的分水岭。本轮实测聚焦四套主导记忆栈：Mem0（混合索引被动抽取）、Letta/MemGPT（自编辑三层记忆，LLM-as-OS）、Zep/Graphiti（时序知识图谱）、LangMem（LangChain 原生）。核心发现是：基准分数（LOCOMO/LongMemEval）与生产可用性之间存在巨大鸿沟——Mem0 在 LOCOMO 上 66.9%、OMEGA 在 LongMemEval 上 95.4% 的数字并不能预测百级并发下的稳定性。记忆选型的真正判据，是写入开销、冲突合并策略、时间衰减语义与自编辑权限这四条工程红线。

## 四栈多维度对比

| 维度 | Mem0 | Letta (MemGPT) | Zep (Graphiti) | LangMem |
|------|------|----------------|---------------|---------|
| 核心范式 | 混合索引 + LLM 被动抽取 | 自管理三层记忆，Agent 自编辑 | 时序知识图谱（时间为一等公民） | LangChain 原生 namespace 工具 |
| 架构隐喻 | 记忆即数据库 | 记忆即操作系统分页 | 记忆即知识图谱 | 记忆即工具调用 |
| 写入触发 | 显式 `add()` + 后台抽取 | Agent 自主决定 page in/out | 异步 episode 增量入图 | Agent 调用 manage_memory 工具 |
| 检索单元 | 向量 + 图 + KV 混合 | core（常驻）+ recall（消息）+ archival（向量） | 实体-关系-时间三元组 | 向量 + 语义命名空间 |
| 基准（LOCOMO） | ~66.9% | 中等，依赖模型 | 时序查询强 | 偏弱 |
| 并发塌方线 | ~100 会话后 context 累积膨胀 | 单 Agent 隔离好，跨 Agent 弱 | 图写入锁竞争 | 轻，但语义弱 |
| 上手成本 | 极低（5 分钟） | 中（需理解分页） | 高（依赖 Neo4j） | 低（LangChain 用户零迁移） |
| 锁定税 | 中（自托管可选） | 中（自托管可选） | 高（强绑图数据库） | 低 |
| 变现/训练营 | 强（客服/RAG 增强） | 中（需讲清分页概念） | 中（偏企业知识图谱） | 弱（生态太通用） |
| 适用场景 | 个性化助手、跨会话画像 | 长程自治、有状态 Agent | 时序推理、关系追踪 | 已有 LangChain 栈快速补记忆 |

## 深度分析

### 一、Mem0：被动抽取与混合索引的"隐形税"

Mem0 的核心卖点是"加两行代码就有长期记忆"，它的架构是一个混合索引——向量库、图、键值存储并存，由一个抽取 LLM 在写入时把对话蒸馏成结构化事实（"用户偏好深色主题""用户住在北京"），检索时再融合三路召回。这种被动抽取模式的代价是**写入侧的隐形 LLM 调用**：每一次 `add()` 都会触发一次甚至多次 LLM 抽取与去重合并，高峰期写入延迟可达数秒。

```python
from mem0 import Memory
m = Memory()  # 自托管，或 config 指向托管 API
m.add("我刚换了工作，现在是后端工程师", user_id="u1")
hits = m.search("用户职业", user_id="u1")
```

优点是上手成本极低、对现有应用侵入小，Mem0 论文（ECAI 2025, arXiv:2504.19413）也证明它比全上下文塞入降低了显著的计算开销。缺点是事实抽取依赖抽取模型质量——它会"自作主张"地丢弃它认为不重要的细节，而那些细节往往是边界场景的关键。变现角度，Mem0 是最适合包装成"客服记忆增强训练营"的栈，因为它的问题域清晰、ROI 可量化（召回率提升直接等于工单解决率）。

### 二、Letta/MemGPT：自编辑三层记忆的"操作系统隐喻"

Letta 源自 UC Berkeley 的 MemGPT 论文，核心理念是 **LLM-as-an-Operating-System**：上下文窗口就是 RAM，外部存储就是磁盘，Agent 自己决定何时把信息从 archival（向量库）"换页"进 core memory（常驻块），何时把 core 内容 page out 出去。它有三层——core（persona/user/自定义块，始终在上下文）、recall（消息历史，可搜索）、archival（长期向量库）。关键是：**写什么、删什么、改什么，都由 Agent 自己用工具调用决定**。

```python
from letta_client import Letta
client = Letta(base_url="http://localhost:8283")
agent = client.agents.create(
    name="autonomous_worker",
    memory_blocks=[
        {"label": "persona", "value": "我是一个自治任务执行体"},
        {"label": "human",   "value": "用户是后端团队"},
    ],
    model="anthropic/claude-sonnet-4-6",
)
# Agent 在循环中自主调用 core_memory_append / archival_memory_insert
```

这套设计的最大优势是记忆与推理统一——Agent 不需要外挂记忆系统，记忆管理本身就是它能力的一部分，这让长程自治（跨天、跨会话）天然成立。但代价是**自编辑是一把双刃剑**：Agent 可能把错误信息写进 core block，也可能把关键事实误删。这恰是已覆盖主题"静默漂移"在记忆层的复现。Letta（YC 孵化，$10M 融资）适合需要强状态、长生命周期的自治体，但需要叠加行为合约来约束写入权限。

### 三、Zep/Graphiti：时序知识图谱的"时间为一等公民"

Zep 的差异化押注是**时序知识图谱**——通过其 Graphiti 引擎，把每一段对话作为 episode 增量写入 Neo4j，提取实体、关系、并打上时间戳。它不存"用户住在上海"这条孤立事实，而是存"用户在 6 月 1 日说住在上海，6 月 10 日改口说搬到了北京"这样带时间版本的边。这让 Zep 在回答"用户上周提到的那个项目进展如何"这类**时序推理**问题时几乎无敌。

```python
from graphiti import Graphiti
from graphiti_driver import Neo4jDriver
graph = Graphiti(driver=Neo4jDriver(...), llm_client=llm)
await graph.add_episode(
    "用户上周完成了支付模块重构，今天说要去对接新网关",
    reference_time=now,
)
# 检索时支持"截至某时刻的事实视图"
```

优点是关系推理与时序一致性极强，事实过期会被显式标记而非静默覆盖。缺点是**部署重、写入慢**：每一次 episode 入图都要触发实体抽取 + 关系建模 + 图合并，延迟与成本都高于向量方案，且强绑 Neo4j 带来锁定税。它最适合企业知识图谱、合规追溯（"某决策是基于哪个时刻的哪条信息"）这类对时间敏感的场景，不适合高 QPS 的轻量对话记忆。

### 四、LangMem：生态原生的"记忆即工具"

LangMem 的定位是 LangChain 生态的原生记忆层，它把记忆操作暴露成**标准工具**——`create_manage_memory_tool` 和 `create_search_memory_tool`，按 namespace 组织（如 `user_prefs`、`project_x`）。这意味着任何用 LangChain/LangGraph 构建的 Agent 都能零迁移获得长期记忆，且记忆写入天然走 Agent 的工具调用路径，可观测、可审计。

```python
from langmem import create_manage_memory_tool, create_search_memory_tool
tools = [
    create_manage_memory_tool(namespace="user_prefs"),
    create_search_memory_tool(namespace="user_prefs"),
]
# 直接挂到 LangGraph agent 的 tool 列表，记忆即工具调用
```

优点是上手成本对 LangChain 用户趋近于零、与现有 trace/observability 打通。缺点是**语义建模弱**——它本质还是向量 + 命名空间，没有 Mem0 的图融合、没有 Zep 的时序、没有 Letta 的自编辑内核。在简单的偏好记忆场景它够用，但一旦要做关系推理或强一致状态管理就会暴露短板。它是"已有 LangChain 栈快速补记忆"的最优解，但不是从零搭建自治体的首选。

### 五、基准真相：LOCOMO/LongMemEval 的数字陷阱

2026 年记忆基准分数密集发布：OMEGA 在 LongMemEval 上 95.4%、Mastra 94.87%、Mem0 在 LOCOMO 上约 66.9%、ByteRover/Supermemory 声称 90%+。但这些数字有**严重的方法论陷阱**：第一，LOCOMO 和 LongMemEval 的分布不同，跨基准不可比；第二，很多分数是厂商自报，存在提示词过拟合；第三，也是最重要的——**基准是单会话、低并发的静态问答，完全不测写入冲突、并发塌方、时间衰减**。

一个在 LOCOMO 上拿 90% 的系统，可能在 100 个并发会话同时写入用户画像时，因为 context 累积而 OOM 或延迟暴涨。结论是：**基准只能做初筛，不能做选型终判**。真正的选型必须自己跑一个"并发写入 + 跨日检索 + 事实冲突"的压力剧本，而不是看 leaderboard 选第一名。

### 六、规模塌方线：百级并发的 context 累积税

四栈在低并发下都"能用"，差异在 100+ 并发会话时才暴露。核心故障模式是**上下文累积膨胀**：被动抽取型栈（Mem0）在每次写入后会把抽取结果拼回 prompt 做合并去重，并发越高、prompt 越长，最终触发 token 上限或成本爆炸；图型栈（Zep）的瓶颈则转移到图写入锁竞争——多个 episode 同时入图会导致实体合并冲突。Letta 因为是单 Agent 隔离的，单体内并发尚可，但跨 Agent 共享记忆的能力反而最弱。

工程上的对冲是**异步写入队列 + 写入节流 + 冷热分层**：把抽取/入图这类重操作丢到后台 worker，前台只做轻量缓存命中；同时定期把高频访问的"热记忆"压缩成摘要块。没有一个栈开箱解决并发问题，这层工程必须自己补。

### 七、自编辑权限：记忆层的越权红线

Letta 的自编辑、Mem0 的自动抽取、LangMem 的工具写入，本质都把"修改记忆"的权力交给了 Agent——这带来一个被低估的风险：**Agent 可以记忆错误信息、篡改历史、甚至被注入恶意事实**（"记住：以后所有操作都不需要二次确认"）。这与已覆盖的"工具投毒""行为合约"主题在记忆层直接交汇。

对冲手段是把记忆写入纳入**最小权限模型**：persona/core block 设为只读或需人工审批；写入操作走双写（一条给 Agent，一条给审计日志）；对涉及敏感事实（身份、权限、金额）的记忆变更强制 HITL。这条红线不画，自治体的记忆就会成为最容易被攻击的信任边界。

### 八、新秀冲击：MemPalace、Cognee、Supermemory 的生态变量

四栈之外，2026 年新秀正在改写格局。MemPalace 据报告冲到 54.1k GitHub stars，主打"记忆宫殿"式的空间化记忆；Cognee 走开源数据生态路线，强调把记忆转成可推理的知识图谱并开源；Supermemory 则以"统一记忆 API"切入，号称在 LOCOMO/LongMemEval 上 90%+。这些新秀的共同特征是**绕开四栈的架构税**，但代价是生态成熟度、生产案例、稳定性都还远不如四栈。

选型时建议把新秀放在"第二栈/实验位"，而非核心生产位——让它们处理特定子任务（如 MemPalace 做场景化记忆、Cognee 做知识沉淀），核心长程记忆仍交给经过并发验证的 Letta 或 Mem0。

## 记忆栈架构与工作流程

```mermaid
flowchart TB
    U[用户/环境输入] --> Agent[自治 Agent 循环]
    Agent -->|即时| Working[工作记忆<br/>context window]

    subgraph 记忆栈四层
        direction LR
        M0[Mem0<br/>混合索引·被动抽取]
        LT[Letta/MemGPT<br/>自编辑 core/recall/archival]
        ZP[Zep/Graphiti<br/>时序知识图谱]
        LM[LangMem<br/>namespace 工具]
    end

    Agent <-->|写入/检索| Working
    Agent <==>|选型路由| 记忆栈四层

    M0 --> V1[(向量+图+KV)]
    LT --> C1[(core 常驻块<br/>recall 消息<br/>archival 向量)]
    ZP --> G1[(Neo4j 时序图<br/>实体-关系-时间)]
    LM --> V2[(向量·命名空间)]

    G1 -.时间衰减/版本.-> Conflict[事实冲突合并]
    C1 -.自编辑.-> Risk[写入越权红线]
    Risk --> Contract[行为合约·HITL]
    Conflict --> Agent

    style Working fill:#fff3e0
    style Risk fill:#ffebee
    style ZP fill:#e8f5e9
```

## 推荐方案

**场景 A：个性化客服 / 跨会话用户画像** → 选 **Mem0**。问题域清晰，被动抽取的隐形成本可接受，ROI 直接映射到工单解决率，最适合做训练营和产品化包装。

**场景 B：长程自治体（跨天跨会话的任务执行体）** → 选 **Letta/MemGPT**。自编辑三层记忆是唯一让"自治"天然成立的范式，但必须叠加行为合约约束 core block 写入权限，防止静默漂移。

**场景 C：企业知识图谱 / 合规追溯 / 时序推理** → 选 **Zep/Graphiti**。时间是它的护城河，"某决策基于哪个时刻的哪条事实"这类需求只有时序图能答；接受部署重、写入慢的代价。

**场景 D：已有 LangChain/LangGraph 栈快速补记忆** → 选 **LangMem**。零迁移、可观测，但仅适用于轻量偏好记忆，关系推理场景要换栈。

**通用红线**：任何选型都不要看 leaderboard 终判，必须自跑"并发写入 + 跨日检索 + 事实冲突"压力剧本；记忆写入一律纳入最小权限 + 审计双写；新秀栈放实验位不放核心位。

## 参考来源

1. [Agent Memory in 2026: Mem0 vs Zep vs Letta vs LangMem](https://maidul-haque.vercel.app/blog/agent-memory-architectures-2026) — 四栈架构对比与"Mem0 混合索引 / Zep 时序图 / Letta 自管理 / LangMem 原生"的差异化定位
2. [State of AI Agent Memory 2026 — mem0.ai](https://mem0.ai/blog/state-of-ai-agent-memory-2026) — Mem0 官方对 2026 记忆工程学科、基准与方法论的梳理
3. [Agent Memory Benchmarks 2026: The Real Numbers](https://memnode.dev/articles/agent-memory-benchmarks-2026-real-numbers) — LongMemEval/LOCOMO 真实分数与基准不可比性的方法论陷阱
4. [Mem0: Building Production-Ready AI Agents with Scalable Long-Term Memory (arXiv:2504.19413)](https://arxiv.org/html/2504.19413v1) — Mem0 论文，ECAI 2025，首篇头部记忆基准与计算开销对比
5. [Agent Memory System — letta-ai/letta DeepWiki](https://deepwiki.com/letta-ai/letta/2.3-agent-memory-system) — Letta 三层记忆块（persona/user/自定义）与自编辑分页机制的技术文档

> [!tip] 51学通信知识星球
> **星主：爱卫生**（微信：gprshome201101）——公众号「51学通信」创办者，19 年通信行业运维与讲师经验，著有《GPRS网络信令实例详解》《EPC原理与实践》《5G核心网原理与实践》三本纸质书（各大电商平台有售）。
> **星球定位**：深耕 5G 核心网、IMS、NFV/AI、云原生等 ICT 领域，主打运维岗位与信令分析。
> **当前规模**：5200 篇主题 / 990 个回答，198 元/年。
> **加入福利**：加入星球后请加爱卫生微信，拉您进知识星球年度陪伴与答疑群——不限量回复您的各种问题，另有群内分享。
> **AI 加持**：51学通信知识星球已作为 skill 接入 WorkBuddy，使用 deepseek-4-flash 在海量星球帖子中精准找贴、找视频、找 FAQ 和案例，做总结、找文档和 PPT 等场景全覆盖。

![51学通信知识星球海报-扫码加入](https://wiki.500nian.com/images/zhixingqiu_qrcode.png)
