AI Agent的初期爆火期已经过去,当下已经进入到更为理性和平静的沉淀期,应该沉下心,好好复盘每一个关键选型,让Agent能够真正的在业务场景中落地。

今天复盘的是Agent记忆系统,为什么要复盘记忆系统?

相信很多人已经通过各种渠道的推荐安装了记忆系统,初期不会有太大差异,都能记住你说的话、重要的事,但很多记忆是需要随时间变化或延续的,尤其部署到真实业务场景的逻辑会更加复杂,记忆混淆、引用错误等问题这时就会频繁出现。

这就需要时效判定、逻辑溯源等一系列记忆能力,对记忆系统提出了更高要求。

一、Agent的“记住”和我们的记住不一样

比如你经常看到或用到AI Agent——客服 Agent、编程 Agent、研究 Agent、办公 Agent。它们有个共同点:会"记住"你和它说过的话。

但这个"记住",和我们以为的不一样。

你以为它是这样的:

✅ 客服 Agent 记得某个用户上个月退货过一次

✅ 研究 Agent 记得你上周要的是 A 主题

✅ 编程 Agent 记得你的项目用 Python 3.11

实际它经常是这样的:

❌ 客服 Agent 会和另一个客户的退货记录拼在一起

❌ 研究 Agent 把 A 主题和 B 主题各取一半,给你一篇"看起来对"的综述

❌ 编程 Agent 把上次另一个项目的依赖装到了你的项目里

这不是 Agent 在骗你。是它的"记忆层"在它背后悄悄做了几件事——

  • 把你不同时间的对话切片存起来
  • 需要时挑几片塞回给主模型
  • 主模型缝合这几片,生成回答

那Mem0 / Letta / Zep / VoltMem这些记忆系统到底是如何处理的?我们又该使用哪个呢?

经过整理我将Agent记忆系统分成了4派,下面是我的真实体感和最终我实际使用的选择。

二、4 派记忆架构横评

为了方便对比,我用了一个最简单例子:住址;注意不是写死在配置文件,是在会话过程中或填写快递单过程中Mem0 / Letta / Zep / VoltMem记忆系统记录下来的。

半年的时间里我用Agent填写过十几个物流单、对话中也提到过一些地点,

期间我测了几次同一个问题:”我住哪?“

首次填完物流单我问,他告诉我”上海“,

三周后,我重新开了一个会话问它:“我现在住哪?”

它回了:“根据之前的对话记录,您在北京海淀区。”

——我从没在北京住过。

我以为是我的提示词没写清楚,又重新写了三遍,加了 system prompt、user profile、明确指令。

三周后再问,还是错的。

那一刻我意识到:这不是我提示词的问题,是它的记忆层有问题。一个号称"会记住"你的 AI,记 3 周前的事能记错成这样——这背后一定有什么我没搞懂的东西。

顺着这条线,我挖到了 4 派记忆架构。挖完之后我有一种"啊原来大家都在解决同一个问题,但每家解法都不一样"的感觉。

三、派别 1:向量库派——最朴素也最稳定的一派

它是什么(我看完之后的白话翻译)

把文档切成一段段(chunk),每段过一遍 embedding 模型变成一串数字(向量),丢进向量数据库。用户提问时,把问题也变成向量,做相似度匹配,挑 top_k 个最像的片段,塞回给 LLM 生成回答。

代表:Pinecone、Weaviate、Qdrant、Milvus。Mem0 默认底层就是这套。

我读源码和文档时的体感

体感1:它是 4 派里接入最便捷的。Mem0 的 README明确写着 5 行代码就能跑通一个 demo。我喜欢这种"5 行搞定"的工程美感。

体感 2:它不解决"关系"。每条记忆是一个孤立的向量点,缺"张三和李四是什么关系"这种结构化信息。我自己测试的时候问"我们公司 CEO 是谁",它召回了一段讲 CEO 名字的文档,但当我追问"他之前在哪工作",它就抓瞎了——因为这需要关系推理,向量检索做不了。

它解决不了我那个"住址记错"的问题吗?

不能。Mem0 文档里局限性一栏写得很坦诚(原文翻译)——

**没有时间推理——所有记忆都同样可以被提取,无论它们何时习得。**没有内置的遗忘或衰退机制——除非手动删除,否则陈旧的记忆会不断积累。

它不区分"3 周前你说的"和"3 个月前你说的"。我那个"北京海淀区"被记成 3 周前的记忆,新地址"上海"虽然更新过,但因为短对话在向量空间里"分量"不够,被旧的覆盖了。

我的判断

向量库派是 4 派里最朴素也最稳定的一派。它不会突然挂掉,不会突然忘了所有事(因为是显式存储)。但它对"事情会变"这件事完全无能为力。

如果你的事实不会变(静态文档、政策、FAQ)→ 向量库派够用。

如果你的事实会变(地址、偏好、状态)→ 它会让你失望。

四、派别 2:结构化笔记派——对"时间"最认真的一派

它是什么

既然向量库管不住"关系",那就把关系显式存下来。这派分两条路——

  • Mem0 的路子:依然向量检索,但写入时多一道工序——让 LLM 做实体抽取和去重
  • Zep 的路子(更激进):抛弃纯向量,直接存时序知识图谱。每条事实是图节点,事实之间的关系是边,都带时间戳

我读 Zep 文档时的体感

Zep的核心卖点是:每个节点都带 temporal metadata(时间元数据)——“这条事实什么时候学到的”、“什么时候过期”、“是不是取代了上一条事实”。

我立刻想到了我的"住址记错"问题——如果 Zep 处理,它能回答"3 周前的住址"和"现在的住址"哪个更新。它把时间当成了一等公民。

你可以查询历史状态:这个 Agent 在某一天知道什么?

我仔细读它 Limitations 时的体感

但 Zep 自己的局限性也写得很坦诚(原文翻译)——

**基础设施最繁重——除了向量搜索之外,还需要图数据库(例如 Neo4j)。**对于简单的用例来说过于复杂——如果您只需要键值存储,则无需使用图数据库。

我看了一眼它的部署要求:要 Neo4j(或者类似图数据库),还要向量库。光运维这一项就让我的预算表抖了一下。

我的判断:

这一派是 4 派里对"时间"最认真的一派。它理论上是 4 派里最适合"我那种住址记错"场景的——但代价是运维复杂度和金钱成本都上一个台阶。

还有个我自己的顾虑:Zep 的图谱构建,第一步是「让 LLM 抽取实体和关系」。这意味着图的"原材料"是 LLM 抽的——而 LLM 抽取有损耗。这是个我后面会反复回到的循环问题。

五、派别 3:自我管理 OS 派(Letta)——最具幻想的一派

它是什么

核心想法很优雅:把 LLM 的上下文窗口当成操作系统的内存,把外部存储当成磁盘——

  • Core Memory:始终在上下文窗口里,相当于 CPU 寄存器
  • Archival Memory:按需 paging 进来,相当于磁盘

关键是——agent 自己决定什么时候搬。它不是 memory API,是一个完整的 stateful agent OS。

我读它论文时的体感:

MemGPT 论文我读了两遍。第一遍读完觉得很美——OS 比喻太优雅了。第二遍我开始问自己:agent 自己决定"什么该记住",这听着像把"判断"的责任推给了 LLM 自己。

Letta 的局限性——

更难推理——代理的自我编辑功能可能会使调试更加困难。

——“agent 的自编辑让 debug 变难”。这话说得太对了。

我自己的测试体感

我开了一个 Letta 的本地实例,跟它聊了半小时。让它"记住我住在上海"。

然后我让它把一段无关的长文本(故意很长,撑爆上下文窗口)写进对话。

它做了什么决定?我看不到。它自己决定哪些进 core、哪些进 archival。我这个"住在上海"有没有被它降级到 archival?我不知道。

过了一会儿我重新问它"我住哪",它答对了。但我不知道是它没降级,还是降级了又自己拉回来了。不可观测,对我来说是个大坑。

我的判断

Letta 是 4 派里最具幻想的一派。如果我要做一个跑几小时、几天的长程 agent,它几乎是唯一选择。但代价是——

学习曲线陡(OS 比喻虽然优雅,但工程上要理解分层、paging、自编辑)

  • 调参地狱:什么算"重要"?分层阈值定多少?每个场景要单独调
  • 不可观测:agent 自己搬来搬去,你不知道记忆在哪一层

六、派别 4:时序衰减派(VoltMem)——最想要的一派

它是什么

前 3 派的共同盲点:它们假设记忆一旦写入,就应该被信任。VoltMem的切入点完全不同——给每个记忆领域配一个volatility prior(易逝性先验),然后动态调整。

VoltMem 的作者直接拿自己的项目和 Mem0 对比——3 个场景,3/3 全胜:

  • 场景 1:位置更新"我搬到巴黎了" → Mem0 还存着柏林(冲突),VoltMem 更新成巴黎
  • 场景 2:稳定偏好 blip"我今天喜欢短回复"和多年的"我喜欢详细"矛盾 → Mem0 误覆盖,VoltMem 抗住
  • 场景 3:volatile mood"我现在压力大" → Mem0 还存着之前的"心情好",VoltMem 正确更新

看完这三个场景,我直接对号入座想到了我的"住址记错"问题——VoltMem 的 Berlin→Paris case 就是为我这种情况设计的。地理位置 = 高易逝领域,一次明确的"搬到上海"就应该清晰地覆盖之前的"住在北京"。

但我同时看到了 Limitations

我看完 VoltMem 的兴奋只持续了 5 分钟——我接着看它的代码仓和文档,发现——

  • 它还在原型阶段,没有企业级 SLA
  • "何时过期"这件事还是要 LLM 判断——只是判断被推迟到了"给每个事实打易逝性标签"这一步
  • 它的论文报告 Split-MNIST 上的实验,不是真实的 LLM agent benchmark

这就是有意思的地方——它解决的问题恰好是我最关心的,但它的成熟度恰好是 4 派里最低的。

我的判断:

  • VoltMem 是 4 派里想法最对我的胃口的一派。但作为工程师,我没法在生产环境用研究原型。所以——
  • 短期:我不会用它做生产
  • 长期:我会盯着它,等它跑出真实的 LLM agent benchmark

七、我整理的 12 属性横评表

派别 1 我用 Mem0 作为代表(它底层就是向量库派 + 多了一点点实体抽取)。

12 属性太多了,我只保留了 6 个核心维度:召回率、语义保真、时序感知、解释性、部署成本、抗幻觉。

下面这张图是我对着 12 属性表,凭手感打的分——定性估算,非精确测量。

4 派记忆架构 6 维能力雷达对比

  • Mem0(蓝):召回强、部署便宜,但抗幻觉弱——典型的"找得到但答不对"
  • Zep(绿):时序感知是 4 派里最强的,但要养一个 Neo4j
  • Letta(紫):解释性最强(分层可见),但部署成本也最高
  • VoltMem(橙):各项均衡,但成熟度低——曲线漂亮但不能上生产

八、如果是我自己的项目,我选谁

我的项目背景——6~12个月使用周期,中度技术用户。

我选 Zep(短期)+ 盯着 VoltMem(长期)

为什么是 Zep:

它对"时间"最认真,直接对应我那个"住址记错"的痛点

时序知识图谱是 4 派里唯一原生支持 supersede的——我更新地址后,它能直接告诉我"这是取代,不是新增"

Graphiti 引擎官方说检索延迟在200ms 以内,对我的使用场景够快

代价我承认:

要养 Neo4j 或类似的图数据库(运维成本和钱)

图谱构建第一步还是 LLM 抽取——理论上还是会被 LLM 的同源偏见坑

我为什么不选 Mem0:我那个"住址记错"的痛点它解决不了。Mem0 局限性那栏写得很直白——“no temporal reasoning(没有时间推理)”。我的核心场景就是时间敏感的。

我为什么不选 Letta:它太复杂,我要的不是"跑几天"的 agent,我要的是"稳定记住事"。而且我对"agent 自己搬记忆"这件事不放心——debug 起来太黑盒。

我为什么 VoltMem 暂时不选:它解决的是我最想要解决的问题(易逝性管理),但它只是研究原型。我在生产环境不能赌一个原型。但我会持续盯着它——

  • 如果它年底前跑出真实的 LLM agent benchmark
  • 如果它有企业级 SLA
  • 如果它的易逝性分类逻辑被集成到 Zep / Mem0 这种成熟产品里

——我立刻切换。

但是——如果你的场景和我不一样

我把我自己的决策路径展开给你看,但你的场景大概率和我不同。下面给你一个我自己的"快速判断"清单——

  • 问题 1:你的 Agent 要跑多久?

单次会话 / 短时 → 跳到问题 2

几小时~几天连续 →Letta(唯一原生支持长程)

  • 问题 2:你的事实有没有时序/关系结构?

大多数事实是静态的 →Mem0 + 强 reranker(最稳、最便宜)

事实会演化(偏好、订单、状态) → 跳到问题 3

  • 问题 3:你能维护图数据库吗?

能 →Zep(时序关系最强)

不能 →Mem0 + 手动时间戳元数据(折中)

原型阶段,可以容忍不稳定 →VoltMem(易逝性自动管理,但只有原型)

九、我研究下来最大的一个反思

4 派我都看完之后,我有个不舒服的感觉——

4 派每派都在解决"自己那一层的失败模式",但每修一层,决策权就被推回 LLM 一格——向量库派推给生成阶段,Mem0/Zep 推给实体抽取,Letta 推给分层决策,VoltMem 推给易逝性分类。墙就在那里,只是每派撞的位置不一样。

这个"墙"有个学术名字:stability-plasticity dilemma(稳定性-可塑性二难),最早由 McCloskey 和 Cohen 在 1989 年提出(Wikipedia “Catastrophic interference” 词条)——

可塑性:能不能吸收新事实?

稳定性:能不能不被薄弱证据带偏?

一个系统要么塑性太强(学新忘旧,catastrophic forgetting),要么稳定性太强(改不动,僵化)。

1989 年的神经网络领域就这么挣扎,2026 年的 LLM agent 还是这么挣扎。工具变了,问题没变。

VoltMem 的整个项目——volatility prior、entrenchment exponent α、Split-MNIST control knob 实验——都是在做"用工程化手段逼近这个二难的最优平衡"。

而我最终选了 Zep——这意味着我接受 Zep LLM 抽取损耗的不足,换取它在时序维度上的优势。

4 派没有"最优",只有在你的场景特性下选取最适合的。

学AI大模型的正确顺序,千万不要搞错了

🤔2026年AI风口已来!各行各业的AI渗透肉眼可见,超多公司要么转型做AI相关产品,要么高薪挖AI技术人才,机遇直接摆在眼前!

有往AI方向发展,或者本身有后端编程基础的朋友,直接冲AI大模型应用开发转岗超合适!

就算暂时不打算转岗,了解大模型、RAG、Prompt、Agent这些热门概念,能上手做简单项目,也绝对是求职加分王🔋

在这里插入图片描述

📝给大家整理了超全最新的AI大模型应用开发学习清单和资料,手把手帮你快速入门!👇👇

学习路线:

✅大模型基础认知—大模型核心原理、发展历程、主流模型(GPT、文心一言等)特点解析
✅核心技术模块—RAG检索增强生成、Prompt工程实战、Agent智能体开发逻辑
✅开发基础能力—Python进阶、API接口调用、大模型开发框架(LangChain等)实操
✅应用场景开发—智能问答系统、企业知识库、AIGC内容生成工具、行业定制化大模型应用
✅项目落地流程—需求拆解、技术选型、模型调优、测试上线、运维迭代
✅面试求职冲刺—岗位JD解析、简历AI项目包装、高频面试题汇总、模拟面经

以上6大模块,看似清晰好上手,实则每个部分都有扎实的核心内容需要吃透!

我把大模型的学习全流程已经整理📚好了!抓住AI时代风口,轻松解锁职业新可能,希望大家都能把握机遇,实现薪资/职业跃迁~

这份完整版的大模型 AI 学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费

在这里插入图片描述

Logo

中国智能体开发者社区,聚焦智能体与大模型开发,提供前沿资讯、实用工具链、开源项目及行业案例。通过技术沙龙、开发者大赛等活动,促进经验交流与协作,助力开发者快速构建创新智能应用。

更多推荐