Agent 记忆层硬选型:Mem0 / Letta / Graphiti / Zep 对比
十个 Agent 记忆层硬对比:Mem0 / Letta(MemGPT)/ Graphiti / Zep / Cognee / Memvid / Memori / Engram / Statewave + Awesome 索引。从轻量 → 图 → 托管,附决策矩阵。直接选型不绕路。
这个 pack 为什么存在
之前的 agent-memory-layer pack 覆盖了三个头部库 —— Mem0 / Zep / Cognee —— 加四个设计模式。有用,但每周都有人在 X 上问「我这个场景该用哪个记忆层」,得到十个互相矛盾的答案。这个 pack 是诚实的取舍指南:十个选项、强意见安装顺序、底部决策矩阵。看一遍、选、上线。
2025 年下半年起这个领域已经碎片化。现在有库形态(Mem0 / Memori)、服务形态(Zep / Statewave)、图形态(Graphiti / Cognee)、有状态运行时(Letta / Engram)、还有怪胎(Memvid 把记忆编码成 MP4 帧)。它们彼此不可替换。选错的代价是埋掉一年工作量。
安装顺序 —— 由轻到重
| # | 资产 | 形态 | 它什么时候赢 |
|---|---|---|---|
| 1 | Mem0 | Python / Node 库 | 单用户 chatbot、周末原型、想一个 import 搞定 |
| 2 | Letta(前身 MemGPT) | 有状态运行时 | 长程自主 agent,需要 working / archival 分层 |
| 3 | Graphiti | 时序图 | 关系重要 + 时间重要(合规、审计) |
| 4 | Zep | 托管服务 | 多租户 SaaS、需要运维支持、审计链 |
| 5 | Cognee | 图 + 向量混合库 | 调研 / 代码库 / 强实体结构的领域 |
| 6 | Memvid | 无服务器 / 文件型 | 边缘 agent、无基础设施、记忆塞进单个 artifact |
| 7 | Memori | Agent-native 基础设施 | 全新 agent 平台、要 primitive 不要 product |
| 8 | Engram | 持久记忆系统 | 自托管、运维轻、单租户 |
| 9 | Statewave | 记忆运行时 + SDK | 多语言(Python + TS + Go)共享同一份记忆 |
| 10 | Awesome Agent Memory | 索引 / 分类 | 想自己评估长尾选项 |
顺序有讲究:先 Mem0,因为出第一条记忆只要五分钟。如果你的 agent 进入自主模式(多步、多小时),升级到 Letta —— 它给你 MemGPT 论文那套显式两层记忆划分。如果你的领域本质是关系型(谁认识谁、什么时候发生了什么),跳过向量库直接上 Graphiti。Zep 是前两者的生产落地。Cognee 是研究密集型工作的赌注。第 5 行往下都是利基选项 —— 采用前要看仔细。
决策矩阵
问自己一个问题:这个用户下个月再来的时候,agent 需要记住什么?
- 「他的偏好和最近几次会话」 → Mem0。不用再读了。
- 「一个多小时的自主任务进度」 → Letta。Working + archival 分层就是为这个生的。
- 「谁在什么时候对谁说了什么」 → Graphiti 或 Zep(Zep 底下跑的就是 Graphiti)。时序图不是可选项。
- 「六个月的决策记录跟实体绑定」 → Cognee 或 Zep。纯向量会丢掉 join。
- 「随便,规模上来再说」 → 今天用 Mem0,规划在 1k 用户时迁 Zep。
- 「我跑不起 server」 → Memvid 或 Mem0 + SQLite 后端。预算够也可以直接上 Zep Cloud。
- 「我的 agent 跑在三种语言里」 → Statewave。SDK 多语言 parity 是护城河。
矩阵不全,但覆盖约 80% 真上线的 agent。如果你的情况不在这里,大概率属于第 10 项 Awesome Agent Memory 里再做评估,而不是凭一时冲动选定。
每一个会在哪里裂
- Mem0 裂在多租户审计。可以加用户命名空间,但没一等公民的审计日志。第一次 SOC2 问询前没事。
- Letta 裂在成本。两层记忆意味着每一步都要做召回往返;高频 agent 的 token 账单是无状态 prompt 的两倍。自主任务值,闲聊不值。
- Graphiti 裂在 schema 漂移。如果你的实体类型在 PMF 阶段每周都变,那你重写 graph schema 的时间会超过出新功能的时间。
- Zep 裂在自托管复杂度。Postgres + 图层 + worker;不是 docker run。没平台团队就用 cloud。
- Cognee 裂在它太有立场。它默认你想要知识图谱;如果你的领域松散(通用聊天),你是在用图的成本买向量的价值。
- Memvid 裂在体积。MP4 帧编码很妙但索引过几个 GB 就难用。仅边缘规模。
- Memori / Engram / Statewave 都裂在社区规模。生态小意味着集成少、Stack Overflow 答案少、bug 多。
TokRepo 一键安装
# 整个 pack
tokrepo install pack/agent-memory-comparison
# 或者头部三件套
tokrepo install mem0 letta graphiti
CLI 把 Claude Code subagent 配置放进 .claude/agents/、Cursor 规则放进 .cursor/rules/、Codex CLI 进 AGENTS.md。pip / npm 安装本身不变 —— TokRepo 只是把 AI 工具配置接好,让你的 agent 知道记忆层存在。
我们故意没放的东西
我们没把对话历史 hack(LangChain ConversationBufferMemory 那一类)放进来。那些不是记忆层 —— 是 prompt 塞料包装。能用到撑爆,失败方式是 context window 静默溢出。如果你正想伸手抓那种工具,装 Mem0 就好。五分钟、同样的形状、规模上来不会炸。
也跳过了纯向量库方案(单独的 Pinecone / Weaviate)。那些是 RAG 基础设施,不是记忆。RAG 从静态语料检索;记忆写新事实并累积。别混。
10 个资产打包就绪
常见问题
我已经在用 agent-memory-layer pack —— 这个是替代品吗?
不,是姊妹版。原 pack 教你什么是记忆层、装三个头部库 + 四个模式。这个 pack 假设你已经懂了,帮你按问题形状在十个里选。新人先看 agent-memory-layer,已经在用 Mem0 想不想换 Letta / Zep 的看这个。
Letta vs MemGPT —— 是一个东西吗?
Letta 是 MemGPT 的产品化继任者(MemGPT 论文提出了两层记忆架构;Letta 是把它实现成可部署运行时的开源框架)。老博客里看到 MemGPT 心里换成 Letta。架构一样:working memory 在上下文里、archival memory 在向量库里,带显式的搬移操作。
Zep 不就是带 UI 的 Graphiti 吗?
时序图那半基本是 —— Zep 底层用 Graphiti 做记忆层,再加托管服务、用户管理、多租户隔离、admin UI。要自托管 + 运维友好就直接跑 Graphiti。要刷卡上线就 Zep Cloud。底下图语义一致。
为什么放 Memvid?把记忆编码成 MP4 听着很癫。
确实癫,但是好癫。Memvid 把记忆编成 MP4 帧,整个记忆库就一个可移植文件。边缘 agent(CLI 工具 / IoT / 端上助手)跑不起 server、又不想要 SQLite 依赖的话,这是合法选项。约束是体积 —— 过几个 GB 索引就难用。我们收它是因为约束形状独特,目前没第二个工具解同样的问题。
选完发现长大了怎么办?
Mem0 → Letta 是一个周末的重构(抽出用户事实模块,指向 Letta 的 archival memory)。Mem0 → Zep 也类似,大半是改配置。Letta → Zep 难一点,因为丢了 Letta 的运行时语义。最危险的迁移是图(Graphiti / Cognee)跟非图之间互转 —— 关系建模迁不过去。形状第一次选对,其他都能迁。