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

AI Memory 赛道 — 深度对比研究

调研时间:2026-06-22 基于 TencentDB-Agent-Memory / mem0 / Letta / Graphiti / cognee / supermemory / MemOS 源码阅读 目的:深入理解各项目的设计哲学、核心创新和竞争位置,为犀牛鸟候选项目选型提供决策依据


一、逐项目深度解读


1. TencentDB-Agent-Memory — 四层语义金字塔 + 零外部依赖

一句话定位:腾讯开源的 Agent 记忆系统,用四层语义金字塔(L0→L3)把对话提炼为用户画像,同时做到零外部 API 依赖——只需要 Node.js + SQLite。

设计哲学上最精彩的地方

DB-Agent-Memory 的核心洞察是:记忆不是”存了什么”,而是”提炼到什么程度”。它用一个四层金字塔来表达提炼层次:

L3  用户画像(Profile)     ← 最抽象,变化最慢
L2  场景块(Scenario)      ← 中间层,按主题聚合
L1  原子事实(Atomic Fact)  ← 细粒度事实
L0  原始对话(Raw Dialog)   ← 最具体,变化最快

日常类比:想象你是一个秘书,记录老板的会议内容。L0 是逐字速记,L1 是提取出”老板说下周三去上海”这样的原子事实,L2 是把多个事实归纳成”Q3 出差计划”场景块,L3 是提炼出”老板偏好高铁出行、住五星酒店”这样的画像级认知。

这种逐层提炼在其他项目中是看不到的。mem0 只做到了 L1(原子事实),letta 只分了 core/archival 两层,graphiti 把事实放在图谱里但没有显式的层级关系。

核心技术创新点

Host-Adapter 架构

DB-Agent-Memory 把记忆系统拆成两个角色:Host(宿主,负责管理记忆生命周期)和 Adapter(适配器,负责对接不同的 Agent 框架)。这意味着同一套记忆可以同时被 OpenClaw、Hermes、MCP Server 等不同框架调用,记忆数据不锁死在某个 Agent 框架上。

OpenClaw Agent ──→ Adapter ──→ ┌──────────────────┐
Hermes Agent  ──→ Adapter ──→ │   Host (Memory)   │ ──→ SQLite + sqlite-vec
MCP Server    ──→ Adapter ──→ └──────────────────┘

这个设计在 7 个项目里是独一无二的。mem0 和 letta 都是”记忆系统内嵌在 Agent 框架里”,迁移到另一个框架时记忆数据需要重新导入。

MMD(Memory Meta Description)注入

MMD 是 DB-Agent-Memory 最巧妙的工程设计之一。它把记忆以一种 prompt cache 友好的方式注入 LLM 的上下文。核心思路是把记忆分为两个区域:

[System Prompt]                   ← 极少变化
[Stable: L3 画像 + L2 场景块]     ← 低频变化 → KV Cache 命中
[Dynamic: L1 事实 + L0 近期对话]   ← 高频变化 → 每次重新计算
[User Message]                     ← 每次不同

这个设计直接减少了 LLM 推理的 token 消耗——Cache 命中的部分不需要重新计算 KV,推理延迟和成本都下降。在其他 6 个项目中,没有任何一个在”记忆注入方式”这个层面做过优化,大多数是简单地把检索到的记忆拼接到 prompt 里。

零外部依赖的代价与收益

DB-Agent-Memory 只依赖 SQLite + sqlite-vec(SQLite 的向量扩展),不需要 Qdrant、Neo4j、Milvus 等外部服务。这是一个极端的设计选择:

收益:部署成本为零,一个 npm install 就能跑;没有网络调用,检索延迟完全可控;数据全在本地文件,备份和迁移就是复制一个 .db 文件。

代价:向量检索的性能上限受限于 sqlite-vec(和 FAISS/Milvus 不是一个量级);没有图数据库,不能做复杂的关系推理;L2/L3 的提炼完全靠 LLM 而非图遍历,LLM 提取质量就是记忆质量的天花板。

竞争格局中的位置

DB-Agent-Memory 是 7 个项目里代码量最小的(~90 个 TypeScript 文件),通读成本最低。它的设计哲学和 mem0 形成了最鲜明的对比:mem0 追求”接最多的后端”,DB-Agent-Memory 追求”不接任何外部后端”。在犀牛鸟参与的视角下,它的代码可读性和学习曲线是最友好的。


2. mem0 — 扁平事实提取 + 向量后端大满贯

一句话定位:AI 记忆赛道的”标杆”项目(~25K star),用最简单的模型——扁平事实提取——做到了最广泛的后端兼容。

设计哲学上最精彩的地方

mem0 的核心 API 只有三个:add()search()update()。一个对话进来,LLM 提取出离散事实(”用户喜欢咖啡”、”用户住在北京”),每个事实存为一条向量记录。没有层级、没有金字塔、没有知识图谱。

这种”扁平”设计的好处是认知负担极低。开发者不需要理解 L0-L3 的语义区分,不需要配置图数据库,不需要学习任何自定义概念。add() 一段对话,search() 一个问题,返回最相关的记忆。

核心技术特征

25+ 向量后端

mem0 支持的向量数据库数量在所有项目中遥遥领先:Qdrant、Chroma、Pinecone、Weaviate、Milvus、pgvector、Azure AI Search、Supabase……几乎涵盖了市面上所有主流向量数据库。这不是技术创新,而是工程覆盖——每个后端都是一个 adapter class,实现 insert()search()delete() 等接口。

这种”大满贯”策略的市场效果很好:无论用户已经在用哪个向量数据库,mem0 都能直接接入,零迁移成本。但从架构角度看,这也意味着 mem0 的”记忆能力”被限制在了”向量检索能力”的范围内——你能检索到什么,取决于你用的向量数据库。

事实去重与冲突检测

mem0 的 add() 流程不是简单的”提取事实 → 存入”。它会先在已有记忆中搜索相似事实,如果找到,就用 LLM 判断是”更新”还是”新增”。这个去重逻辑是 mem0 的核心价值之一——没有它,记忆库会快速膨胀为充满矛盾的事实集合。

但这个去重完全依赖 LLM 判断,没有结构化的时间戳或版本机制。当两个事实冲突时(”用户住在北京” vs “用户住在上海”),mem0 让 LLM 决定保留哪个——这在简单场景下有效,但在复杂场景(多轮对话、多 Agent 并发写入)下会出现不可预测的结果。

竞争格局中的位置

mem0 是”最容易上手”的 AI 记忆方案,也是”能力上限最低”的。它适合”给 Agent 加一个简单的记忆层”这个场景,不适合”需要深度个性化或复杂推理”的场景。它的 25K star 更多来自”先发优势 + API 简洁”,而非技术深度。


3. Letta/MemGPT — Agent 自管理记忆的虚拟内存模型

一句话定位:源自 MemGPT 论文的 Agent 框架,核心创新是让 Agent 自己决定”记什么、忘什么、什么时候翻旧账”——借鉴了操作系统虚拟内存的 page in/out 机制。

设计哲学上最精彩的地方

Letta 的核心思想是:记忆管理不应该是系统的职责,而是 Agent 自己的能力。就像操作系统通过 page fault 自动管理内存一样,Letta 让 Agent 通过工具调用来管理自己的记忆。

日常类比:其他记忆系统像一个帮你整理书架的图书管理员——你说了什么,它自动归档。Letta 更像是给你自己一套整理工具(标签、文件夹、搜索引擎),让你决定怎么整理。好处是更灵活,坏处是你需要学会怎么整理。

核心技术创新点

Block-based Core Memory

Letta 的核心记忆(core memory)不是一个大数据库,而是几个有字符限制的”文本块”(block):

core_memory:
  human:    "用户叫小明,是后端工程师..."    [limit: 2000 chars]
  persona:  "我是一个友好的助手..."           [limit: 2000 chars]

这些 block 每次对话都会完整注入 system prompt。Agent 可以通过 core_memory_append()core_memory_replace() 等工具修改这些 block——但要注意字符限制,满了就需要先删除一些内容。

这个设计直接映射了 LLM 的 context window 限制:core memory 就是”始终在 context 里的信息”,字符限制 = context window 的预算分配。

Archival Storage 与 Recall Memory

当 core memory 满了,Agent 可以用 archival_memory_insert() 把信息”换出”到归档存储。归档存储没有大小限制,但检索需要主动调用 archival_memory_search()。这就是”虚拟内存”的类比——core memory 是 RAM(快但小),archival memory 是硬盘(慢但大)。

Letta 底层用 PostgreSQL 或 SQLite 存储 archival memory,并支持向量检索。但关键区别是:搜索是 Agent 主动发起的,不是系统自动触发的。Agent 需要”意识到”自己缺少某个信息,然后主动去 archival 里搜——这要求 Agent 有足够好的”元认知”能力。

Recall memory 则是对话历史的自动检索层——系统自动从历史对话中检索相关片段,不需要 Agent 主动触发。这和 archival 形成互补:recall 是”被动回忆”,archival 是”主动搜索”。

Agent 自管理的代价

这个设计的核心假设是”LLM 有足够好的判断力来管理自己的记忆”。在 GPT-4 级别的模型上,这个假设大致成立;但在更弱的模型上,Agent 可能会犯低级错误——比如覆盖掉重要信息、忘记搜索归档、把无关信息塞满 core memory。

这也是 Letta 和 DB-Agent-Memory 的核心分歧:Letta 信任 Agent 的自主性,DB-Agent-Memory 用系统级的分层管道来保证记忆质量,不依赖 Agent 的判断。

竞争格局中的位置

Letta 不仅仅是一个记忆系统——它是一个完整的 Agent 框架,记忆只是其中一个模块。这意味着它的记忆能力和 Agent 框架深度绑定,很难”只用记忆模块”而不用整个框架。代码量也大(~1155 files),学习曲线陡峭。对于只需要”给已有 Agent 加记忆”的场景,Letta 太重了。


4. Graphiti — 时序知识图谱 + 跨编码器重排

一句话定位:Zep 团队开源的时序知识图谱引擎,核心创新是给每条边加上”生效时间”和”失效时间”,让图谱能自动处理信息随时间变化的问题。

设计哲学上最精彩的地方

Graphiti 的核心洞察是:记忆不是静态的快照,而是随时间演化的流。当用户说”我住在北京”,三个月后说”我搬到上海了”,传统向量检索会返回两条矛盾的记忆。Graphiti 的时序边可以自动标记”住在北京”这条边为”已失效”,而不是删除它——因为过去住在北京本身仍然是一个有价值的历史信息。

日常类比:传统记忆系统像一块白板,新信息直接擦掉旧信息。Graphiti 像一本日记——旧的信息不擦,而是在旁边标注”已更新为…“。

核心技术创新点

双时间轴模型(Bi-temporal)

每条边有两个时间维度:

这种区分在处理”回忆性描述”时至关重要。用户在 6 月的对话中说”我去年 3 月搬到了北京”——created_at 是 6 月,valid_at 是去年 3 月。如果不区分这两个时间,时序推理就会出错。

Cross-Encoder Reranking

Graphiti 的检索不是简单的向量 cosine 相似度排序。它先用向量检索拿到候选集,再用 cross-encoder 模型对候选集做精排。Cross-encoder 和 bi-encoder 的区别在于:bi-encoder 分别编码查询和候选,cross-encoder 把查询和候选拼在一起编码,能捕捉更细粒度的语义匹配。

代价是 cross-encoder 的推理速度比 bi-encoder 慢一个数量级(需要对每个候选单独推理),所以只能在候选集较小时使用。Graphiti 的做法是先用向量检索缩小范围,再用 cross-encoder 精排——这是信息检索领域的经典两阶段架构。

Neo4j + 向量混合检索

Graphiti 默认使用 Neo4j 作为图存储后端,利用 Neo4j 内建的向量索引做语义检索,同时用 Cypher 查询做图遍历。这意味着一次检索可以同时利用”语义相似性”和”图结构关系”:

查询:"小明的同事喜欢什么?"

向量检索 → 找到与"喜欢"语义相关的边
图遍历  → 从"小明"节点出发,经过"同事"关系,到达目标节点
两者交集 → 最终结果

竞争格局中的位置

Graphiti 的代码量很小(~200 文件),设计精巧。但它对 Neo4j 的强依赖是一个限制——Neo4j 是一个重量级的图数据库,部署和维护成本远高于 SQLite。如果你的 Agent 只需要简单的记忆,用 Graphiti 就像用大炮打蚊子;但如果你需要复杂的关系推理和时序演化,Graphiti 是唯一一个在这个方向做到深度的项目。


5. cognee — ECL 管线 + 本体驱动的知识组织

一句话定位:把非结构化数据转化为可推理知识网络的 ETL 管线,强调”认知”(Cognify)而非简单”记忆”——Extract-Cognify-Load 三步曲。

设计哲学上最精彩的地方

cognee 的名字来自”cognition”(认知),它的目标不仅仅是”记住”信息,而是”理解”信息之间的关系。它用 Ontology(本体论)来组织知识——先定义领域中的概念和关系类型,再把非结构化文本映射到这个结构上。

日常类比:mem0 是往笔记本上记事实,cognee 是画一张概念地图——不仅记录”A 是什么”,还记录”A 和 B 是什么关系”、”A 属于哪个类别”。

核心技术创新点

三步 BaseRetriever 管线

cognee 的检索不是单步向量查询,而是一个三步管线:

  1. Retrieve:从向量/图数据库中获取候选结果
  2. Rerank:对候选结果重排(可接入 cross-encoder 或 LLM 重排)
  3. Filter:根据置信度、相关性阈值过滤

每一步都是可插拔的——你可以替换 retriever(换图数据库)、替换 reranker(换排序模型)、调整 filter 阈值。这种管线式设计在 7 个项目中是最工程化的。

多图后端支持

cognee 同时支持 Kuzu(嵌入式图数据库)、Neo4j(企业级图数据库)和 FalkorDB(Redis 兼容图数据库)作为图存储后端。但这个”同时支持”背后隐藏着巨大的工程挑战——三个图数据库的查询语言、数据模型、事务语义都不同。

最典型的问题是 Kuzu 的 RelatesToNode_ 前缀约定:Kuzu 作为强类型图数据库,每种关系类型都需要固定的源/目标节点类型。当 cognee 的 ontology 定义了一个新的关系类型时,Kuzu 需要创建对应的表,而 Neo4j 不需要——这就导致了大量的后端特化代码。

Ontology-based 知识组织

cognee 允许用户定义领域本体(Ontology),然后用 LLM 把文本映射到本体的概念和关系上。比如定义了”人-works_at-公司”这个关系类型后,cognee 会自动从文本中提取所有这类关系实例。

这比 mem0 的”自由提取事实”更结构化,但也更脆弱——如果本体定义不完整,会漏掉重要信息;如果定义过于宽泛,提取质量会下降。

竞争格局中的位置

cognee 的代码量最大(~2290 files),复杂度最高。它更像一个”知识工程框架”而非”记忆系统”,适合需要深度知识组织的企业场景,对个人 Agent 来说太重了。


6. supermemory — 轻量级 Profile API + MCP 集成

一句话定位:面向终端用户的”让 AI 记住你”产品,核心是 Profile API + Browser Extension,走的是产品化而非技术深度的路线。

设计哲学上最精彩的地方

supermemory 的目标不是给 Agent 开发者用,而是给普通用户用。它的核心场景是:你在浏览器里看到一篇文章、一段对话、一个灵感,一键保存到 supermemory,然后你的 AI 助手就能记住这些信息。

它和其他项目的根本区别在于:其他 6 个项目都是”开发者工具”,supermemory 是”用户产品”。这决定了它的设计重心不在存储架构或检索算法上,而在”捕获体验”和”集成便利性”上。

核心技术特征

Profile API

supermemory 的 Profile API 把用户的记忆组织为一个结构化的 profile——不是”一堆事实的集合”,而是”一个人的画像”。这和 DB-Agent-Memory 的 L3 用户画像有相似之处,但 supermemory 是用户手动 curate(整理),DB-Agent-Memory 是系统自动提炼。

MCP Server 集成

supermemory 提供了 MCP(Model Context Protocol)Server,这意味着任何支持 MCP 的 AI 工具(Claude、Cursor 等)都可以直接调用 supermemory 的记忆。这个集成路径在当前生态中很有价值——MCP 正在成为 AI 工具互联的事实标准。

Browser Extension

浏览器扩展是 supermemory 的”数据入口”。用户在浏览网页时一键保存,supermemory 自动提取关键信息。这解决了其他项目都没解决的问题——记忆的来源不只是对话,还有阅读、浏览、搜索等日常活动。

竞争格局中的位置

supermemory 是 TypeScript 项目,和 DB-Agent-Memory 在语言生态上直接竞争。但它的设计重心不在技术深度——如果你需要复杂的记忆管理能力(分层、时序、图谱),supermemory 提供不了。它更适合”轻量级个人记忆”场景。


7. MemOS — 记忆操作系统的抽象

一句话定位:把”记忆”类比为操作系统中的”进程/文件/设备”来管理,用 MemCube 做容器化、MemScheduler 做调度、Dream Pipeline 做后台整理。

设计哲学上最精彩的地方

MemOS 的野心最大——它不是要做一个记忆库,而是要做一个”记忆操作系统”。就像 Linux 管理文件(VFS)、进程(scheduler)、设备(driver),MemOS 管理不同类型的记忆:

┌──────────────────────────────────┐
│           MemScheduler           │  ← 调度层:决定什么时候读/写/整理记忆
├──────────────────────────────────┤
│  MemCube   MemCube   MemCube     │  ← 容器层:每个 Agent 一个 MemCube
├──────────────────────────────────┤
│  Episodic │ Semantic │Procedural │Profile│  ← 记忆类型
├──────────────────────────────────┤
│        Storage Backend           │  ← 存储层
└──────────────────────────────────┘

核心技术创新点

MemCube — 四种记忆类型

MemCube 把记忆分为四种类型,对应认知科学中的记忆分类:

这四种分类比 DB-Agent-Memory 的 L0-L3 更接近认知科学的理论模型,但也更抽象——开发者需要决定一条信息属于”情景”还是”语义”,这个判断本身就是模糊的。

MemScheduler — 记忆操作调度

MemScheduler 负责协调记忆的读写操作,包括优先级排序、并发控制、资源分配。这在多 Agent 并发访问同一个 MemCube 时特别重要——两个 Agent 同时写入可能导致冲突。

Dream Pipeline — 后台记忆整理

这是 MemOS 最有趣的设计之一。Dream Pipeline 在 Agent 空闲时(类比人类做梦时的记忆巩固过程)自动执行记忆整理:去重、关联发现、衰减过期记忆、将 episodic 记忆提炼为 semantic 记忆。

这个设计直接对标了认知科学中的”记忆巩固”理论——睡眠时大脑会重放白天的经历,把短期记忆转化为长期记忆。MemOS 试图在 Agent 系统中复现这个过程。

竞争格局中的位置

MemOS 的抽象层次最高,但代码量也大(~1796 files)。它的”操作系统”类比很优雅,但在实际使用中可能过度抽象——大多数 Agent 不需要区分”情景记忆”和”程序记忆”,一个简单的 key-value 或向量检索就够了。MemOS 更适合学术研究或需要精细记忆管理的复杂 Agent 系统。


二、全景对比矩阵

存储模型对比

项目 存储后端 记忆组织模型 是否需要外部服务 单文件部署
DB-Agent-Memory SQLite + sqlite-vec 4 层金字塔
mem0 25+ 向量 DB 扁平事实
Letta PostgreSQL/SQLite Block(core/archival) 可选 部分
Graphiti Neo4j 时序知识图谱 是(Neo4j)
cognee SQLite + 多图 DB Ontology + 知识网络 可选
supermemory SQLite Profile + Memory Graph 可选 部分
MemOS SQLite + Milvus 等 MemCube 4 类型 可选

检索策略对比

项目 BM25 向量语义 图遍历 Cross-Encoder 混合检索方式
DB-Agent-Memory BM25 + 向量融合
mem0 可选 向量为主
Letta 向量为主
Graphiti 核心 图 + 向量 + 精排
cognee 可选 三步管线
supermemory 三流融合
MemOS 向量为主

写入模式对比

项目 写入触发 去重机制 冲突处理 层级提炼
DB-Agent-Memory 系统自动 批量 dedup LLM 判断 L0→L1→L2→L3
mem0 系统自动 相似搜索 + LLM LLM 二选一
Letta Agent 主动 Agent 自行判断 Agent 自行处理 无(Agent 自决)
Graphiti 系统自动 实体解析 时序边失效 无(图扁平)
cognee 系统自动 Ontology 约束 Ontology 合并 无(图扁平)
supermemory 用户手动 去重算法 用户手动
MemOS 系统自动 MemScheduler Dream Pipeline 情景→语义

三、6 个跨项目洞察

洞察 1:层级深度 vs 检索延迟的倒 U 曲线

观察 7 个项目的层级设计,可以看到一个清晰的光谱:

mem0(0 层) → Letta(2 层) → Graphiti(图,扁平但关系丰富) → DB-Agent-Memory(4 层) → MemOS(4 类型 + 调度)

层级越深,记忆的”信噪比”越高(L3 画像比 L0 原始对话更精炼),但检索也更复杂——你需要决定”这次查询应该查哪一层”。DB-Agent-Memory 用 MMD 的稳定/动态分区来解决这个问题,但如果查询的答案跨层(需要同时参考 L1 事实和 L3 画像),检索策略就变得更加复杂。

这形成了一个倒 U 曲线:层级太浅(mem0),信噪比低,检索结果充斥无关事实;层级太深(MemOS 4 类型),分类成本高,误分类导致检索遗漏。DB-Agent-Memory 的 4 层金字塔可能接近最优点,但这个”最优”高度依赖使用场景。

洞察 2:Agent 自主管理 vs 系统自动管理的分歧

这是 7 个项目中最根本的设计分歧:

这个分歧的本质是”谁来承担记忆管理的认知负担”——Agent、系统还是用户?目前没有共识。随着 LLM 能力提升,Agent 自主管理的可靠性会提高,但”系统兜底 + Agent 微调”的混合模式可能是最终方向。

洞察 3:Prompt Cache 友好性是一个被忽视的竞争维度

在 7 个项目中,只有 DB-Agent-Memory 明确在架构层面考虑了 prompt cache 友好性(MMD 的稳定/动态分区)。其他项目在注入记忆时,通常是把检索结果直接拼接到 prompt 里——每次检索结果不同,prompt 的前缀就变了,KV Cache 全部失效。

这在成本和延迟上是巨大的浪费。假设一个 Agent 的 system prompt + 记忆注入有 4K tokens,如果每次对话这 4K tokens 都需要重新计算 KV,推理成本就高了 4K tokens 的量。DB-Agent-Memory 把高频变化的记忆放在后面,低频变化的放在前面,让 LLM 的 KV Cache 尽量命中前缀——这是一个非常工程化但极其实用的优化。

随着 LLM 推理成本持续下降,这个优化的绝对价值会减小;但作为一种”系统思维”,它展示了记忆系统不应该只关注”存什么”和”怎么检索”,还应该关注”怎么注入”。

洞察 4:图数据库正在成为 AI 记忆的引力中心

7 个项目中有 4 个使用了图数据库或图结构:Graphiti(Neo4j 核心)、cognee(Kuzu/Neo4j/FalkorDB)、supermemory(内建 Memory Graph)、mem0(Neo4j 可选)。唯一完全不用图的是 DB-Agent-Memory、Letta 和 MemOS(但 MemOS 的 Dream Pipeline 本质上在做图发现)。

这个趋势的驱动力是:向量检索只能回答”什么和这个最像”,图遍历能回答”A 和 B 之间有什么关系”。当 Agent 需要做多跳推理(”小明的同事的公司在哪个城市”)时,向量检索力不从心,图遍历是天然解法。

但图数据库的代价也很明显:部署复杂、查询语言学习曲线陡峭、数据迁移困难。DB-Agent-Memory 选择不用图的原因可能就是为了保持零依赖——这是一个有意识的取舍,不是能力缺失。

洞察 5:超时容忍度决定了架构选择

记忆检索的延迟预算直接决定了你能用什么技术栈:

DB-Agent-Memory 的 Promise.race 超时机制(在代码中可见的检索超时保护)确保了即使 sqlite-vec 查询变慢,也不会阻塞主流程。而 Graphiti 的 Neo4j + cross-encoder 组合可能在复杂图谱上消耗数百毫秒——对于交互式 Agent 来说,这个延迟可能是不可接受的。

洞察 6:记忆模型正在从”向量中心”向”混合存储”右移

画一条时间线,AI 记忆系统的主流架构在不断向右移动:

2023: 纯向量检索(early mem0)
2024: 向量 + KV 缓存(mem0 v2)→ 向量 + 图(Graphiti / cognee)
2025: 分层金字塔(DB-Agent-Memory)→ 记忆 OS(MemOS)

这个趋势的驱动力是:纯向量检索的能力上限(无法处理关系推理、时序演化、层级抽象),促使每个项目在向量的基础上叠加更多存储模式。

但叠加也有代价——每增加一种存储模式,就增加了一种故障模式和一层维护成本。DB-Agent-Memory 的”只用 SQLite”策略是对这个趋势的有意反叛——它用更强的 LLM 提炼能力来弥补存储模式的简单性。


四、犀牛鸟洞察

为什么 DB-Agent-Memory 值得参与

从犀牛鸟参与者的角度,DB-Agent-Memory 有几个独特优势:

代码可读性最高。90 个 TypeScript 文件,没有复杂的依赖图,一个实习生 2-3 天就能通读全部代码。对比 cognee 的 2290 文件或 letta 的 1155 文件,学习成本低一个数量级。

创新空间明确。4 层金字塔模型是一个清晰的框架,但每一层的实现都有优化空间:L1 事实提取的准确率、L2 场景块的聚类算法、L3 画像的增量更新策略、MMD 注入的 token 预算分配。这些都是可以写论文的方向。

零外部依赖降低了贡献门槛。不需要配置 Neo4j 或 Milvus,npm install 就能跑,贡献者可以专注于算法和架构,而不是环境配置。

潜在贡献方向

基于以上分析,有几个潜在的贡献方向值得关注:

从 Graphiti 借鉴时序能力:DB-Agent-Memory 目前没有显式的时间处理机制。当用户信息变化时(搬家、换工作),L3 画像需要手动更新。可以借鉴 Graphiti 的 bi-temporal 模型,在 L1 事实层加上 valid_at / expired_at 字段,让金字塔有时间维度。

从 cognee 借鉴管线化检索:当前检索可能是单步查询,可以引入 cognee 的三步管线(retrieve-rerank-filter),在保持零外部依赖的前提下提升检索质量。

从 MemOS 借鉴 Dream Pipeline:在 Agent 空闲时自动整理记忆——去重、合并矛盾事实、提升 L1→L2→L3 的提炼质量。这个方向和 MMD 的 prompt cache 优化有协同效应:后台整理让 Stable Partition 更稳定,进一步提升 Cache 命中率。

Benchmark 建设:目前 AI 记忆领域缺乏统一的评估基准。可以构建一个 benchmark,从记忆准确率、检索延迟、存储效率、冲突处理正确率等维度对比 7 个项目——这本身就是一个有学术价值的贡献。