乐于分享
好东西不私藏

AI Agent 的记忆系统:MemPalace 到底是怎么工作的

AI Agent 的记忆系统:MemPalace 到底是怎么工作的

MemPalace 是一个开源的 AI 记忆系统,由《生化危机》女主角米拉·乔沃维奇(Milla Jovovich)创建并维护。它不是简单地把对话存进数据库,而是设计了一套分层记忆架构——让 AI 能像人一样,有”身份”、有”核心记忆”、有”按需回忆”的能力。

这篇文章会用大白话拆解它的设计原理,看看它是怎么让 AI “想起来”的。


一、为什么 AI 总是”记不住”?

你有没有这种感觉?

你跟一个朋友聊天,说”就是上次那个项目的事”,他立刻就想起来了。不是翻聊天记录,不是查邮件,就是想起来

但 AI 不行。每次对话,AI 都像失忆症患者:你得把所有背景从头讲一遍。上周的需求、上个月的决策、之前的 bug 原因——每次都要重新塞进它的”脑子”里。

这不是 AI 不够聪明。是它的记忆系统,从根子上就是错的


二、向量数据库不是记忆

现在的 AI Agent 大多这么工作:把所有对话历史往向量数据库里一存,问问题的时候搜一下,取最”像”的结果。

这听起来挺合理的。但细想一下——这是”搜索”,不是”记忆”。

有什么区别?

你走进图书馆,找”关于营销的书”。搜索引擎式的 AI 会把所有书架的书都翻一遍,告诉你哪些书封面看起来最像在说营销。

真正有记忆的人不是这样的。他会说:”哦,上次老王提过的那本书不错,就在第三排靠窗的位置。”

前者靠”长得像”判断相关性,后者靠”上下文关系”判断有用性。

向量数据库的本质是前者。而人类记忆的本质是后者。

MemPalace 想做的,就是让 AI 也有这种”想起来”的能力。


三、一个 2500 年前的记忆术

公元前 500 年左右,罗马人发明了一种记忆术,叫”记忆宫殿”(Method of Loci)。

用法很简单:想象你有一座宫殿,里面有无数个房间。你把要记住的东西,分别放进不同的房间里——门口放着今天的待办事项,厨房放着老婆的生日,书房放着你藏私房钱的位置。

下次要想起什么的时候,你就”走进那个房间”——记忆自然浮现。

这个方法为什么有效?因为它把记忆分层了。不是所有东西都堆在一个地方,而是按位置、场景、重要程度分层存放。想用的时候,先定位房间,再找东西。

MemPalace 就是这个逻辑——只不过宫殿里的房间,变成了代码里的 wing(项目)和 room(主题)。


四、AI 的四层记忆金字塔

MemPalace 把 AI 的记忆分成了四层,从快到慢,从少到多。

 图1 · 四层记忆金字塔

🏠 L0 — 身份层     (~100 tokens)   → "你是谁" — 永远在场,零延迟   │   ▼🧠 L1 — 核心故事层  (~800 tokens)   → "你最重要的事" — 每次唤醒必加载   │   ▼📂 L2 — 按需回忆层  (~500 tokens)   → "这个话题相关的事" — 按需触发   │   ▼🔍 L3 — 深度搜索层  (无限制)         → "所有抽屉都翻一遍" — 兜底保底

为什么这样分?

人脑也是这样工作的。你记得今天早饭吃了什么(瞬时记忆),记得你老板的名字(重要记忆),记得你初恋的名字(情感记忆)——这些不需要每次都去”搜索”,而是一想就出来。

MemPalace 模仿的就是这个结构。

AI 启动时,只需要加载 L0 和 L1,加起来大约 900 tokens。这相当于上下文窗口的 1% 都不到。剩下的 99%,留给真正有用的思考。

对比一下:如果把 AI 所有对话历史都塞进上下文,10万 token 就是 10万 token 的成本。用了 MemPalace,同样的记忆库,启动成本降低 90% 以上


五、怎么组织记忆?——一个实际的例子

MemPalace 把记忆分成了几个层级,用生活里的例子很好理解:

  • 分类(类似 Wing):
    你有很多抽屉,分别属于不同的项目。比如”代码项目”、”写作项目”
  • 主题(类似 Room):
    每个项目下,有不同的主题。代码项目下有”bug 修复”、”架构设计”
  • 抽屉(Drawer):
    每个主题下的一条条具体记忆。比如”第三行加了空指针判断”、”v2.1 修复了 MCP 崩溃”
  • 索引卡片(类似 Closet):
    挖抽屉的时候,同时生成一张索引卡片,记录这个抽屉属于哪个主题。找东西时,先看卡片,再翻抽屉
 图2 · 抽屉与索引卡片

想象一个场景

你的项目里有两条记忆,一条是代码,一条是文档。向量数据库看它们,觉得”完全不像”——一个是代码,一个是文字。

但索引卡片上写着:这两条都跟”MCP 初始化问题”有关。

下次用户问”MCP server 那个崩溃是怎么修的”,向量搜索先找出这两条记忆,然后索引卡片告诉 AI:它们是同一个问题的两面,值得一起看。

这就是 MemPalace 的核心洞察——向量相似度不等于语义相关性。索引卡片做的,是补充向量搜索缺失的那一层理解。


六、索引卡片不是门,是扩音器

这里有个设计细节很重要。

如果索引卡片是”门”,那么:不符合主题的抽屉,直接被关在门外。

问题来了:如果索引卡片写错了呢?或者某个有用的抽屉,索引卡片没写清楚呢?

被门挡住的好抽屉,就再也找不到了。

MemPalace 做了一个很聪明的决定:索引卡片不是门,是扩音器。

所有抽屉都会被向量搜索先找到——这一步保证不遗漏。索引卡片在这之后发挥作用——不是过滤,而是放大:让真正相关的抽屉”声音更大”,排名更靠前。

没有索引卡片的抽屉不会被拒绝,只是不被优先展示。这种设计容许索引不完美,但不能因为索引错误而丢失记忆。


七、AI 是怎么”想起”一件事的?

用一个完整的场景,感受一下整个流程。

场景:用户问”之前那个 MCP server 的 bug 是怎么修的?”

第一步(~100 tokens):AI 加载自己的身份

我是 Atlas,一个代码助手。你正在做一个多 Agent 系统,使用了 MCP 协议。

这是 L0。永远是第一条,永远在场。

第二步(~800 tokens):AI 加载自己的”核心故事”

[最近] 修了一个 MCP server 的空指针崩溃[重要] 讨论了 memory layer 的架构设计[项目] MCP server 属于"代码项目"的 MCP 协议分类

这是 L1。从记忆宫殿里,选出最重要的几个抽屉,自动汇总成一段话。

第三步(~500 tokens):AI 加载这个话题相关的抽屉

[mcp_server / bug-fix]第三行加了空指针判断,防止 config 为 None 时崩溃[fix-pr]根因是 async client 初始化时缺少超时处理

这是 L2。按 wing 过滤,精准召回跟 MCP server 相关的记忆。

第四步(兜底):如果 L2 不够,触发 L3 全量语义搜索针对 “MCP server bug fix” 扫描所有抽屉,找到更多上下文。

整个过程的 token 消耗:最坏情况 ~1400 tokens,命中 L0/L1 时 ~900 tokens。

而不是 10 万 token 的全量历史。


八、和同类工具比,有什么区别?

市面上还有几个做 AI 记忆的开源工具,简单说一下我知道的:

Mem0:开源项目,有本地部署版,也有云端托管版。它用标签(tag)自动给记忆分类,召回方式是向量搜索,胜在接入简单。但标签是自动生成的,你没法精细控制记忆怎么组织。

Letta:我没深度用过,据说核心是把记忆当成 Agent 的”状态”来管理,适合需要长期有状态的对话 Agent。

MemPalace的差异点主要有两个:

一是分层召回——不是把所有记忆平铺着搜,而是按四层(L0→L3)渐进式加载,启动成本极低。这是最核心的设计差异。

二是索引卡片(Closet)机制——在向量搜索基础上,额外维护了一套主题索引,让真正相关但不”像”的记忆也能被找到。这是大多数竞品没有的一层。

对于代码项目来说,MemPalace 完全本地化的数据存储也是一个实际优势——你的代码、对话、决策记录,永远留在自己机器上。


九、Tunnel:两个项目之间的秘密通道

最后提一个 MemPalace 里最有意思的设计细节。

项目分类,是记忆的静态结构。但现实世界的问题是:两个不同项目里的记忆,可能有隐藏的关联。

比如你在”代码项目”里修了一个 bug,在”文档项目”里写了修复说明。向量空间里,这两段内容”听起来完全不像”——一个是代码,一个是文字——所以向量搜索很难把它们关联起来。

MemPalace 的解法叫 Tunnel(隧道):Agent 或者用户,手动创建一条跨项目的连接。比如:

bug 修复 ↔ 修复说明

这条 Tunnel 不是语义相似度,而是Agent 对世界知识的结构化表达。向量能度量”听起来像不像”,但 Tunnel 能表达”实际上相关”。这两个不是替代关系,是互补关系。

 图3 · Tunnel 连接

十、这套系统适合什么场景?

MemPalace 不是万能药。

它很适合:

  • 长期运行的本地 AI,需要跨会话记忆
  • 多个项目并行,每个项目有独立的存储空间
  • 对数据本地化有要求(代码、对话不出本地)
  • 希望精确控制记忆结构

它不太适合:

  • 完全无状态的单次调用(直接用 RAG 更省事)
  • 需要复杂实体关系推理(Neo4j 更专业)
  • 分布式高并发场景(ChromaDB 是单机的)

十一、记忆的本质,是分层想起

回到开头那个问题:为什么 AI 总是记不住?

因为大多数 AI 的记忆系统,是”把东西存起来,需要时搜一下”。

而真正有效的记忆系统,是”分层存放,想起什么就知道去哪一层找”。

这不是一个技术细节,这是一个认知架构的问题。

人类进化了几亿年,最后的记忆策略是分层——瞬时记忆、短期记忆、长期记忆。为什么 AI 行业的默认方案,是把所有东西平铺在一个向量空间里?

MemPalace 的价值,不是用了什么向量模型,不是 ChromaDB 套了几层壳。它重新问了一个更根本的问题:

AI 应该怎么记住东西,才能像人一样,想起该想起的,忽略该忽略的?

这个问题,比任何技术细节都重要。


MemPalace 开源地址:https://github.com/milla-jovovich/mempalace

封面及插图由豆包 Seedream 生成


🐟 鱼生  懂技术、爱吐槽、不爱说教的产品人