主题
前言
过去一年,我在多个场合被问到同一个问题:「我们已经在做 RAG 了,记忆和它有什么不同?」
这个问题背后是一个真实的困惑。RAG 检索的是外部知识——文档、手册、政策,它的权威性来自来源;记忆检索的是经历——用户说过什么、Agent 做过什么、结论是如何得出的,它的权威性来自过程。前者错了可以换文档,后者错了要重建过程。用同一套检索引擎处理两者,会得到一个危险的错觉:既然都能搜到,就都可以被相信。
更麻烦的是,记忆的正确性标准会随用途变化。同一段「用户偏好深色模式」,作为 prompt 里的一句补充时,错了只是体验下降;作为推荐系统的输入时,错了可能构成事实性误导;作为审计证据时,错了就是记录失真。三者对同一条数据的要求分别是「大致对」「必须对」「可证明对」,而多数系统只实现了第一档。
本手册试图把这件事讲清楚。它不承诺给出一套万能方案,而是提供三样东西:一套判断框架(什么场景需要什么级别的记忆能力)、一批可验证的机制(哪些能力可以被脚本证明,而不是被文档声明)、一份诚实的边界清单(截至 2026 年 10 月,哪些问题仍然无解)。
关于 Mnemosyne OS
本手册的技术细节大量引用 Mnemosyne OS,原因不是它更优,而是它同时满足两个条件:设计文档与实现源码一致,且关键能力可被本地验证。读者可以 pip install mnemosyne-os 后直接复现书中的行为,而不必相信文字描述。
需要明确的是,书中对它的描述与对其它系统采用同一套标准:写它的边界、写它的代价、写它尚未做到的事。第 16 章会明确写出其公开基准分数尚未由仓库内一次完整运行独立复算;第 23 章会把跨 Agent 共享记忆的仲裁列为未解问题,而不是宣称已解决。
Mnemosyne OS 的核心事实如下,读者可据此判断书中哪些内容可直接复现:
- 包名
mnemosyne-os,当前版本 8.1.0.post1,MIT 许可,Requires-Python >=3.8 - 核心零第三方依赖:
install_requires为空,仅提供numpy、transformers、tiktoken三个可选 extras - 四种使用形态:Python 库、CLI、HTTP API、MCP 服务器
- 四维作用域(
user_id/agent_id/run_id/app_id)以物理隔离实现,每个作用域组合对应独立目录与独立 SQLite 文件 - 单遍 ADD-only 写入;无 API key 时由内置确定性规则提取器与 128 维嵌入器完成写入与召回
- 五路信号检索(语义 + BM25 + 实体图 + 时间 + 标签),带校准的相关性下限与词法回退
- SHA-256 哈希链审计账本,
verify_integrity()返回{valid, total, first_broken_at} - 四层删除语义(
forget/memory_mask/ 级联软删 / 物理删除),支持dry_run预览 - MCP
tools/list返回 55 条,其中 44 条原生 + 11 条客户端兼容,含 3 条废弃别名;去重后不同能力 52 个
这些数字都可以在安装后自行核对,这是本书引用它的唯一理由。
关于其它系统
书中对 Mem0、Zep / Graphiti、Letta、LangMem、Cloudflare Agents 的描述,均以 2026 年 10 月 30 日可访问的官方文档与公开仓库为准。三点说明:
第一,这些系统的演进速度很快。Mem0 在 2026 年已将写入范式改为单遍 ADD-only,若读者读到的是旧版资料(两阶段 ADD/UPDATE/DELETE),请以官方最新文档为准。
第二,本书对竞品只写边界,不写弱点。例如「截至 2026 年 10 月的公开文档中未见 X 的说明」是本书的标准表述,它表达的是「我没找到证据」,而不是「它没有」。
第三,任何能力对比都标注了时间。记忆系统的能力面在快速变化,一年前的对比表很可能已经失效。
关于本书的写作方式
书中的每一条判断都尽量配三样东西:一个具体的失效场景、一段机制解释、一个使用判据。缺少场景的判断是口号,缺少机制的解释是结论,缺少判据的建议无法落地。
书中也会明确写出「这条判断在什么条件下不成立」。这不是免责声明,而是工程判断的必要部分——一个没有失效条件的方案,通常意味着它还没有被真正用过。
如果读者发现书中某个数字与原始来源不符,请以原始来源为准,并欢迎指出。记忆领域最不需要的就是又多一份无法追溯的数字。