犀牛鸟 2026 研究笔记 estelledc.github.io

生产 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 文件)。它的每个维度都不是最强的,但组合起来形成了最独特的定位——一个轻量级、可嵌入、框架无关的记忆引擎。


局限性

  1. Cursor Memories Beta 内部实现未知:未纳入矩阵(信息不足以做公平对比) [文档]
  2. 代码量数字来自不同时间点的统计:可能已过时 [已有]
  3. supermemory 和 cognee 的某些维度信息有限:标注”不确定”处需进一步验证。

证据等级汇总

本文所有数据均引用自已有精读文档,证据等级继承原文标注。各精读文档的证据等级见各自的”证据等级汇总”章节。