-
buo4 技术教程组 用户
给 AI Agent 装上长期记忆:Mem0 的记忆层设计
跟 AI 助手聊过几次的人都有类似的挫败感:你要重复告诉它同样的背景信息。上次说了项目用哪个技术栈,这次还得再说一遍;上次明确过输出格式偏好,这次它又忘了。
根本原因是每一轮对话都在一个空白的上下文里开始。模型的权重不会因为你用过就更新,会话结束后所有信息就丢了。
市面上解决这个问题的做法大致两类:一类是把历史对话全塞进上下文(很快就撞上窗口上限,而且 token 成本爆炸);另一类是简单做个向量检索,把相似的历史片段捞回来(语义相似不等于信息有用)。
Mem0(读作"mem-zero")走的是第三条路:做一个独立的记忆层,专门负责决定什么值得记、怎么存、什么时候取出来。
它的官方定位是:为 AI 助手和 Agent 提供智能记忆层,实现个性化交互——记住用户偏好、适应个体需求、随时间持续学习。

它记忆的层次
README 里把记忆分成用户、会话、Agent 三层状态,并支持自适应个性化。
这三层的划分其实很有讲究:
用户层存的是跨会话稳定的事实——这个人的技术背景、沟通偏好、所在团队。这类信息一次写入,长期有效。
会话层管的是当前对话内的上下文连贯性。这层不需要跨会话,但要保证多轮交互不跑题。
Agent 层记录的是 Agent 自身的行为状态——做过什么、处于哪个阶段、有哪些待办。做长流程任务时,这层决定它能不能接着上次的进度往下走。
把三类分开存的好处是检索时不会互相污染。你问一个需要用户偏好的问题时,不该把 Agent 的执行日志也捞回来。
新算法改了什么
README 里有一节专门讲 2026 年 4 月的新记忆算法。这里有五个改动,每个都说清了动机:
单次 ADD-only 抽取——一次 LLM 调用,不做 UPDATE/DELETE。记忆只累积,不覆盖。
这个改动挺反直觉的。通常的直觉是"信息更新了就该改掉旧的",但那样会丢历史。只增不删的设计意味着你可以看到偏好是怎么演变的,而且避免了更新逻辑出错导致信息丢失。
Agent 生成的事实是一等公民——当 Agent 确认某个动作发生时,这条信息以同等权重存储。
很多记忆系统只记"用户说了什么",忽略"Agent 做了什么"。但实际协作中,Agent 做过的事同样是重要上下文。
实体链接——实体被抽取、嵌入,并在记忆之间建立链接,用于检索增强。这是从"存文本"升级到"存关系"。
多信号检索——语义匹配、BM25 关键词匹配、实体匹配并行打分后融合。
这一点值得单独说:纯语义检索有个已知弱点——它对精确匹配不敏感。用户明确说过一个产品型号,语义检索可能给你返回一堆"相关但不对"的东西。把关键词匹配加进来,能兜住这类精确查询。
时间推理——时间感知检索,能针对"当前状态""过去事件""未来计划"这类查询排出正确的时间实例。
这是纯向量方案最缺的能力。用户问"我现在的配置是什么",你需要的是最新的那条;问"我上次怎么解决的",你要的是特定时间点的那条。没有时间维度,这两类问题都会答错。

关于基准数据,官方给了一个重要限定
README 里列了新算法在几个记忆基准上的成绩,同时明确标注了一句限定:
这些分数反映的是 Mem0 托管平台的成绩,其中包含开源 SDK 里没有的专有优化;开源用户应该预期有方向性相似的提升,但不是相同的数字。
这句话很重要。很多文章引用记忆类项目的跑分时,会直接拿托管服务的成绩当成开源版的成绩讲,这是误导。Mem0 官方主动把这条写出来,态度是对的。
同样标注清楚的是评测条件:单次检索(一次调用,不做 Agent 循环),检索预算 top_200。评测框架也是开源的,官方说明任何人都可以复现这些数字。
对做技术选型的人来说,能复现比数字本身更重要。
接入方式
README 里给了一个挺特别的细节:AI Agent 可以在五秒内自己申请到一个可用的 API key——不用邮箱、不用登录控制台、不用一次性验证码。官方给了四条命令走完全程。
这个设计明显是冲着"让 Agent 自己给自己配记忆"去的。传统 SaaS 的注册流程(注册邮箱→验证→建项目→生成 key)对自动化流程来说全是阻碍。
安装上,Python 和 Node.js 都有对应的包。核心能力是多级记忆(用户/会话/Agent 状态自适应个性化)、开发友好的 API、跨平台 SDK,以及完全托管的服务选项。
这里同样存在开源和托管的区分——托管服务省去自己维护向量库和 LLM 调用的麻烦,自托管则把数据和控制权拿在自己手里。

记忆层的典型工作流就三步:写入(对话结束后抽取值得保留的信息)、检索(新对话开始时按需召回)、注入(把召回结果拼进提示词)。
看起来简单,但难点全在"什么值得记"这个判断上。记得太多,检索时全是噪声;记得太少,等于没记。这也是为什么它的算法重点全在抽取策略和融合检索上。
适合谁用
做 AI 助手产品的团队。个性化体验的核心就是记忆——用户期待的是"越用越懂我",不是每次都从零开始。
做客服系统的团队。README 里点名了这个场景:召回历史工单和用户记录,提供更贴合的帮助。这类场景的记忆需求很明确——必须有时间维度,因为"上次的问题解决了吗"是高频问法。
做长流程 Agent 的开发者。跨运行保留项目上下文、历史决策、踩过的坑,能让 Agent 在第二次接手同一项目时表现明显不同。
不太适合:
- 单次、无状态的问答场景。没有跨会话需求,加记忆层是纯粹的开销。
- 对数据位置极其敏感的场景。这时候要评估自托管方案的运维成本,而不是直接用托管服务。
项目地址: https://github.com/mem0ai/mem0
本文依据项目官方仓库 README 整理编写。文中基准数据为官方公布口径,且官方明确说明托管平台与开源 SDK 存在差异,选型与引用时请注意区分。