ChatGPT、Claude 都先后内置了记忆功能,但你自建的 Agent 大概率还是“金鱼”——每次对话从零开始,用户说过十遍的偏好,第十一遍还得再说一次。海外社区这两年悄悄长出一个专门的赛道:Agent Memory Layer(记忆层),把“记住用户”这件事从你的业务代码里整个抽出去。本文拆解其中最扎实的三个开源项目:Mem0、Letta、Zep/Graphiti——工具、代码、选型逻辑一次讲透,帮你把这个还很少有中文教程的坑先占上。
先说一个多数人踩过却没深想的坑:你的 Agent 不是不聪明,是失忆。
目前的常见做法无非两种,都有硬伤:
真正的需求是:Agent 要像人一样,从对话里自动提炼事实、自动更新过时事实、下次见面精准想起。这个活儿脏、碎、又极其通用,所以海外团队把它做成了独立的一层——这就是记忆层赛道。ChatGPT 的 Memory 你可能用过,但那是封闭产品里的功能;下面这三个是你可以直接搬进自己项目的开源货。
pip install 十分钟跑通。Mem0 的思路很直接:你把对话喂给它,它用 LLM 自动做三件事——抽取事实、与已有记忆比对合并、更新或删除过时记忆。比如用户这周说“我搬到上海了”,它会自己发现和三个月前的“住在北京”冲突,然后做更新而不是堆叠两条矛盾记忆。
核心 API 就两个动作:
pip install mem0ai
from mem0 import Memory
m = Memory() # 需在环境变量配置 OPENAI_API_KEY 等模型凭证
# 写入:自动抽取并整合记忆
m.add("我对花生过敏,喜欢喝美式", user_id="alice")
# 读取:按语义检索相关记忆
m.search("喝什么咖啡", user_id="alice")
它还提供 Graph Memory(把记忆组织成实体关系图,适合“人物—公司—项目”这类关联性强的场景),以及托管版平台。开源版可完全自部署,托管版有免费额度、按量付费(具体价格以官网为准)。据其官方博客的评测口径,Mem0 在长对话记忆基准上对比各家内置记忆方案有速度和准确率优势——这是官方数据,建议自己跑一遍再下结论。
对比国内:国内 Agent 平台(Dify、Coze 等)主打的是 RAG 知识库和会话内变量,能“查资料”,但缺少“自动记住用户并随时间演化”这一层。想在中文场景做个性化助手,Mem0 是目前集成成本最低的路子,且模型可换成任意国产模型 API。
适用人群:做客服机器人、个人助手、AI 陪伴类产品的应用开发者。
Letta 的来头很硬:前身是 UC Berkeley 2023 年 10 月发布的 MemGPT 项目,那篇论文的核心 idea 至今仍是这个赛道的经典——把 LLM 当作操作系统来管理内存:模型上下文窗口相当于“内存”,外部存储相当于“磁盘”,由 Agent 自己决定什么留在窗口里、什么换出到磁盘、什么时候换回来,就像操作系统的虚拟内存分页机制。
落到产品上,Letta 最有辨识度的能力是 self-editing memory(自编辑记忆):Agent 拥有自己的记忆区块(比如“用户画像区”"工作偏好区”),并且在对话过程中自己动手修改这些区块——不需要你写任何“总结存档”的胶水代码,模型自己判断什么值得记、记在哪里、什么时候改。
另一个关键差异:Letta 把 Agent 做成持久化的服务(server 形态部署,通过 REST API 调用),Agent 的记忆和状态跨会话、跨重启长期存在。你可以理解为:Mem0 是“给现有应用挂个记忆插件”,Letta 是“Agent 本身就是个常驻的有状态进程”。官方还提供了可视化开发环境,可以直接在界面里观察 Agent 的记忆是怎么被自己改写的——调试记忆行为时非常好用。
对比国内:中文圈讲 Agent 框架基本绕不开 LangChain 系,但“有状态持久 Agent”这个视角的资料极少。如果你要做的是长期运行的服务型 Agent(比如每天跟进项目进度的员工助手),Letta 的架构比“每次请求现拼上下文”优雅得多。
适用人群:需要 7×24 常驻、跨周/跨月持续服务的 Agent 场景,以及做 Agent 基础架构的团队。
Zep 团队开源的 Graphiti 是三者中最“重”也最独特的:它把记忆建成一张时序知识图谱(temporal knowledge graph)。
什么概念?普通 RAG 是“一堆文档切片”,图谱是“实体+关系”,而 Graphiti 在此之上加了时间维度,采用双时间轴设计——每个事实既记录“什么时候被说出来的”,也记录“什么时候开始有效、什么时候失效”。比如客户 3 月说“预算 50 万”,6 月改口“砍到 30 万”,系统不会覆盖或混淆,而是明确知道:50 万这个事实在 6 月之前为真,之后作废。
这个能力在三类场景里是刚需:销售 CRM 跟进(客户情况持续变化)、合规审计(需要还原“当时已知什么”)、医疗/健康随访(状态随时间演变)。这些场景里,“知道一条信息是什么时候变的”和“知道信息本身”同等重要,而这恰恰是向量库+摘要方案的天生盲区。
Graphiti 需要 Neo4j 之类的图数据库做存储后端,部署和建模成本是三者里最高的,但换来的是最结构化、最可解释的记忆——记忆不再是一坨模糊的 embedding,而是可以查询、可以追踪变化轨迹的图。
适用人群:有明确“事实演化”需求的企业级场景,且团队有图数据库运维能力。
一句话说清它的工作原理:对话流经记忆层,记忆层负责“抽取—存储—检索”三步,每次请求只把最相关的少量记忆拼进 prompt。
flowchart LR
U[用户] --> A[Agent 应用]
A --> M[记忆层]
A --> L[LLM]
M --> V[向量索引]
M --> G[事实图谱]
V --> S[按语义检索相关记忆]
G --> S
S --> P[少量记忆拼进 Prompt]
P --> L
L --> R[回复用户]
三条工具怎么选,看这张决策图:
flowchart TD
Q[需要跨会话记忆吗] -->|不需要| N[普通 RAG 知识库即可]
Q -->|需要| Q2[事实会频繁变化吗]
Q2 -->|会且需追溯变化| Z[Zep Graphiti]
Q2 -->|不会| Q3[要 Agent 自己管理记忆吗]
Q3 -->|要且服务常驻| L2[Letta]
Q3 -->|要轻量快速集成| M2[Mem0]
| 你以为的 | 实际情况 |
|---|---|
| Agent 记忆 = 把历史对话塞进上下文 | token 成本失控+注意力稀释,海外已普遍改为独立记忆层 |
| 记忆要自己写“总结+存库"胶水代码 | Mem0/Letta 自动抽取、自动合并冲突、自动更新过时事实 |
| 记忆就是向量检索 | Graphiti 加了时间轴,能回答“这条事实什么时候失效的" |
| 这类功能只能等大厂平台施舍 | 三个项目全部开源可自部署,模型可换成任意国产模型 |
pip install mem0ai,配一个模型 API key,跑通上面 8 行 demo,直观感受“自动抽取记忆”和“手动存 dict”的差别。本文由「51学通信」技术团队出品。51学通信由通信行业18年老兵爱卫生(微信ID: gprshome201101)维护。 聚焦5G/6G核心网、3GPP标准、AI工具实战。知识星球「51学通信」提供深度技术答疑和行业洞察。
[!tip] 51学通信知识星球 星主:爱卫生(微信:gprshome201101)——公众号「51学通信」创办者,19 年通信行业运维与讲师经验,著有《GPRS网络信令实例详解》《EPC原理与实践》《5G核心网原理与实践》三本纸质书(各大电商平台有售)。 星球定位:深耕 5G 核心网、IMS、NFV/AI、云原生等 ICT 领域,主打运维岗位与信令分析。 当前规模:5200 篇主题 / 990 个回答,198 元/年。 加入福利:加入星球后请加爱卫生微信,拉您进知识星球年度陪伴与答疑群——不限量回复您的各种问题,另有群内分享。 AI 加持:51学通信知识星球已作为 skill 接入 WorkBuddy,使用 deepseek-4-flash 在海量星球帖子中精准找贴、找视频、找 FAQ 和案例,做总结、找文档和 PPT 等场景全覆盖。
