生产 Agent vs 开源记忆库:大矩阵
本文汇总全部已有精读,以矩阵形式呈现差异。各项目详细分析见对应精读文档。
调研元信息
| 项目 | 值 |
|---|---|
| 调研日期 | 2026-06-22 |
| 涉及研究轴 | 矩阵(跨轴汇总) |
| 矩阵维度 | 12 维 × 8 系统 |
| 证据等级 | 均引用已有精读,标注 [已有] |
一句话定位
将 3 个生产 Coding Agent(Claude Code、Codex、OpenClaw)和 5 个开源记忆库/服务(mem0、DB-Agent-Memory、Letta、Graphiti、supermemory)放在同一张 12 维矩阵中对照——揭示”产品内建记忆”和”独立记忆库”的根本差异。
大矩阵
| 维度 | Claude Code | Codex | OpenClaw | mem0 | DB-Agent-Memory | Letta | Graphiti | supermemory |
|---|---|---|---|---|---|---|---|---|
| 定位 | 内建记忆子系统 | 内建记忆 pipeline | 内建 flush+dreaming | 开源记忆 SDK | 开源记忆引擎 | Agent 框架(含记忆 OS) | 时序知识图谱 | 用户产品+MCP |
| 语言 | TypeScript | Rust+TS | TypeScript | Python | TypeScript | Python | Python | TypeScript |
| 记忆组织 | 索引(MEMORY.md)+主题文件 | MEMORY.md+summary+skills | 三层(MEMORY.md/daily/DREAMS.md) | 扁平事实 | 四层金字塔(L0-L3) | Core+Archival Block | 时序知识图谱 | Profile API+Memory Graph |
| 写入触发 | 每次响应后 hook | session 启动批量 | compaction 前 | API 调用 | 对话流自动 | Agent 工具调用 | API 调用 | 多入口(MCP/Web/Extension) |
| 检索方式 | LLM 语义选取(Sonnet) | 全量注入 | 全量+时间窗口 | 向量检索 | BM25+向量 | Agent 工具查询 | 向量+图+Cross-Encoder | BM25+向量+图 |
| 遗忘/淘汰 | 硬截断200行/25KB | 隐式(30天未引用) | Budget compaction 10K字符 | 无 | 无(L0可清理) | Agent 自行删除 | 时序边失效 | Dynamic Dreaming |
| 存储后端 | 文件系统(Markdown) | SQLite+文件系统 | 文件系统(Markdown) | 25+向量后端 | SQLite+sqlite-vec | PostgreSQL | Neo4j | SQLite |
| 外部依赖 | 无(文件即全部) | 无(SQLite内嵌) | 无(文件即全部) | 多(向量DB选配) | 零(SQLite) | PostgreSQL必需 | Neo4j必需 | 较多(Web生态) |
| MCP 支持 | 客户端(调用MCP工具) | 沙箱内客户端 | Host-Adapter | 可通过社区adapter | 原生MCP Adapter | 可通过社区adapter | 可通过社区adapter | 原生MCP Server |
| 多 Agent 共享 | 否(per-project memdir) | 否(全局但单用户) | 否(per-workspace) | 是(多租户) | 是(Host-Adapter解耦) | 否(框架锁定) | 是(图数据库共享) | 是(MCP Server) |
| Prompt 注入优化 | 无特殊优化 | 无特殊优化 | 无特殊优化 | 无 | MMD分区(KV Cache友好) | Core Memory直接在system prompt | 无 | 无 |
| 代码量 | 大(Claude Code整体) | 大(Codex整体) | 大(OpenClaw整体) | ~1673文件 | ~90文件(最小) | ~1155文件 | ~200文件(最精巧) | monorepo |
关键发现
发现 1:写入时机的三种哲学
flowchart LR
subgraph continuous["持续学习(每次响应)"]
CC["Claude Code<br/>extractMemories"]
end
subgraph retrospective["回顾学习(批量)"]
CX["Codex<br/>Phase1 in session start"]
end
subgraph emergency["抢救保存(压缩前)"]
OC["OpenClaw<br/>pre-compaction flush"]
end
continuous -.->|"频率最高<br/>成本最高"| NOTE1[" "]
retrospective -.->|"延迟最大<br/>质量最高"| NOTE2[" "]
emergency -.->|"最聚焦<br/>只在危急时"| NOTE3[" "]
三种生产 Agent 代表了三种截然不同的写入哲学——Claude Code 的”持续学习”意味着每次交互都可能产生记忆,成本最高但覆盖最全;Codex 的”回顾学习”在 session 间隙批量处理,延迟最大但产出质量最高(有 consolidation agent 做整合);OpenClaw 的”抢救保存”只在上下文即将被压缩时才触发,最聚焦但可能遗漏非高频交互中的信息。
发现 2:存储模型的两极
产品内建记忆倾向文件系统(Claude Code 用 Markdown、OpenClaw 用 Markdown、Codex 用 SQLite+文件),开源记忆库倾向数据库(mem0 用向量 DB、Letta 用 PostgreSQL、Graphiti 用 Neo4j)。DB-Agent-Memory 是例外——虽然是独立库但使用零依赖的 SQLite,介于两者之间。
原因推测:产品内建记忆不需要复杂查询(文件 grep 足够),且文件系统方便用户手动查看/编辑(MEMORY.md 就是 Markdown 文件)。开源库需要支持多种检索模式(向量/图/BM25),数据库是更自然的选择。
发现 3:遗忘机制的缺失
8 个系统中只有 3 个有明确的遗忘/淘汰机制(Claude Code 硬截断、Codex 隐式淘汰、Graphiti 时序失效)。大多数系统的记忆只增不减——这在长期运行中必然导致信息过载。DB-Agent-Memory 可以从 Graphiti 借鉴时序失效、从 Codex 借鉴 usage_count 淘汰,这是一个明确的改进方向。
发现 4:MCP 作为桥梁
MCP 正在成为连接两个世界的桥梁——内建记忆不足的 Agent(Cline、旧版 Cursor)通过 MCP 接入开源记忆库获得能力补充;内建记忆完整的 Agent(Claude Code)通过 MCP 获得外部记忆源(浏览器知识、跨 Agent 共享)。DB-Agent-Memory 的 Host-Adapter 架构在这个桥梁中处于最有利位置——它同时支持 MCP 和深度框架集成。
发现 5:DB-Agent-Memory 的独特定位
在矩阵中,DB-Agent-Memory 是唯一一个:零外部依赖 + 四层分层 + Host-Adapter 解耦 + MMD 注入优化 + 代码量最小(~90 文件)。它的每个维度都不是最强的,但组合起来形成了最独特的定位——一个轻量级、可嵌入、框架无关的记忆引擎。
局限性
- Cursor Memories Beta 内部实现未知:未纳入矩阵(信息不足以做公平对比)
[文档]。 - 代码量数字来自不同时间点的统计:可能已过时
[已有]。 - supermemory 和 cognee 的某些维度信息有限:标注”不确定”处需进一步验证。
证据等级汇总
本文所有数据均引用自已有精读文档,证据等级继承原文标注。各精读文档的证据等级见各自的”证据等级汇总”章节。