源码级分析 · 2026-04-14

Mem0 vs 文件系统记忆

两种记忆范式的对比。它们不是同一个东西的不同实现,而是解决不同层次问题的两套系统。

// TL;DR
Mem0 → 对话中的自动记忆提取+向量检索
文件系统 → 人+LLM 协作维护的结构化知识沉淀
Mem0 核心流程 (main.py · 2592行)
写入 (add)
// 用户对话 LLM 提取 facts 向量化 搜索已有记忆 LLM 判断 ADD/UPDATE/DELETE/NONE 存入向量数据库
读取 (search)
// 查询文本 向量化 向量相似度搜索 (可选) Reranker 重排 返回 top_k 条记忆

Emma 当前的四层记忆体系

你实际上有四层记忆在同时工作

载体
写入方式
内容举例
CodeBuddy Memory
云端 KV 存储
AI 从对话中自动提取
"Emma 在做音色互动空间"
CodeBuddy Rules
.codebuddy/rules/*.md
人手动写
"所有写作用口语化表达"
Wiki 知识库
DailyPlan/wiki/*.md
LLM 提炼 + 人审阅
agent-context-engineering.md
Raw 素材
DailyPlan/raw/*.md
人丢入(只读)
黄东旭访谈原文

核心对比

6 个维度
01 记忆的颗粒度 最本质区别 +
Mem0

单条记忆 = 一句话事实

"Name is John"、"Likes pizza"

信息密度极低

文件系统

单条记忆 = 完整知识条目

有标题、要点、理解、来源、交叉引用

信息密度极高

本质区别:Mem0 记的是"碎片事实"(atomic facts),wiki 记的是"结构化认知"(structured knowledge)。
02 写入机制 各有所长 +
Mem0

触发:每次对话自动触发

提取者:LLM(固定 prompt)

人参与度:(全自动)

本质是"信息抽取器"——不理解上下文关系

文件系统

触发:LLM + 人协作(schema 驱动)

提取者:LLM + 人讨论后提炼

人参与度:(讨论、审阅、补充"我的理解")

本质是"知识编辑流程"

Mem0 的 FACT_RETRIEVAL_PROMPT 是信息抽取器;wiki 的 schema 是知识编辑流程。一个求快,一个求深。
03 检索机制 文件系统更精确 +
Mem0

方式:向量相似度搜索

精度:语义相似就返回(可能"大概相关")

上下文:孤立的 facts 列表

问"food preferences" → "Likes pizza"、"Loves chicken"

文件系统

方式:目录导航 + 全文 grep + index 查找

精度:精确命中(条目名就是概念名)

上下文:完整条目 + 来源 + 相关条目链

问"Agent 记忆系统" → 打开完整认知图景

Mem0 的搜索是模糊的;文件系统的检索是结构化的。一个靠向量碰运气,一个精确导航。
04 记忆的生命周期 文件系统更完整 +
Mem0

创建:自动(每次对话)

更新:LLM 自动判断矛盾→覆盖

删除:LLM 检测矛盾→自动删除

追踪:SQLite history 表

⚠️ "喜欢披萨"→"讨厌披萨",旧的直接没了

文件系统

创建:有意识地(Ingest 或 Query 回填)

更新:人 + LLM 发现新信息→补充

删除:极少删除,过期内容标记

追踪:git + log.md + 条目更新日期

✅ 保留了认知演变的痕迹

Mem0 的更新很暴力——新旧矛盾直接删旧。文件系统保留了认知演变的痕迹——git 历史 + log 记录了每次变更。
05 知识的连接性 文件系统远超 +
Mem0

事实间关系:孤立(除非开启 Graph Memory)

层级结构:扁平(所有 facts 平级)

跨概念联想:靠向量相似度碰运气

文件系统

关系:双向链接 [[]] + "相关条目"

层级:领域分层 (ai/product/tools/...) + 三层架构

联想:人 + LLM 主动维护交叉引用

Mem0 的 Graph Memory 能存关系三元组,但远不如 wiki 链接网络有深度。从 agent-context-engineeringagent-memory-system 再到 agent-native-infra 形成的是一张认知图谱。
06 对"理解"的处理 不可替代 +
Mem0

存储的是:客观事实

"Name is John"

有没有"判断":没有(纯信息存储)

文件系统

存储的是:事实 + 主观理解

"我觉得这个方向值得深挖"

有没有"判断":(每个条目最有价值的部分)

这是文件系统最不可替代的部分。Mem0 永远不会存"我觉得这个方向值得深挖"这种东西。每个 wiki 条目最有价值的部分就是你自己的判断。
两者的互补关系(不是竞争)
自动层
Mem0 层 — 自动 · 碎片 · 快
↓ 积累到一定量
协作层
文件系统 Wiki 层 — 协作 · 结构化 · 深
↓ 长期沉淀
认知层
认知网络层 — 交叉引用 · 判断 · 不可替代

结论

你不需要用 Mem0 替代现有系统。 wiki 系统做的是 Mem0 做不了的事;CodeBuddy Memory 已经覆盖了 Mem0 的核心场景;Mem0 真正有价值的部分是向量检索——当 wiki 条目积累到 50+ 个时再考虑。
Wiki 做的是 Mem0 做不了的事 — 结构化认知 + 主观判断
CodeBuddy Memory ≈ 简化版 Mem0 — 已覆盖自动提取碎片事实的场景
💡Mem0 真正有价值的是向量检索 — wiki 50+ 条目后可考虑加一层向量索引

如果要从 Mem0 借鉴什么

01
Memory Manager 的 ADD/UPDATE/DELETE 逻辑 — 这个 prompt 设计很巧妙,可以借鉴到 wiki 的 Lint 流程中,让 LLM 自动判断是新增、更新还是删除
02
Graph Memory 的实体关系三元组 — A → 关系 → B 可以给 wiki 交叉引用做增强
03
自动化程度 — Ingest 流程人工参与度偏高,可以增加一个"轻量自动 Ingest"模式——对话中的小碎片自动存,重要的再走完整 Ingest