做过Agent项目的朋友应该都有同感单轮对话里模型表现得像个专家但一旦跨会话、跨任务它瞬间失忆昨天刚确认过的偏好今天又要重新交代一遍。这个问题几乎卡住了所有想把Agent推向真实生产的团队。我过去一年里在多个项目里反复纠结这个问题从早期拿向量库硬塞历史消息到后来研究专门的记忆中间件最大的体会是——长期记忆不是给模型加个存储盘而是一整套关于写什么、存哪里、怎么取、何时忘的工程决策。今天这篇文章我把六个主流项目的记忆设计方案放在一起做了个系统对比LangChain/LangMem、MemGPTLetta、Mem0、Zep、CrewAI以及一度很火的AutoGPT。每个项目的定位差异很大有的选择管理上下文窗口有的选择沉淀语义知识有的直接做成生产级服务。希望通过这组对比能帮你弄清楚自己的Agent到底需要哪种记忆以及怎么绕开我踩过的那些坑。1. 先摆清楚一个问题Agent的长期记忆到底是什么聊记忆之前得先定义记忆。很多项目踩坑就是因为把记忆一概而论结果要么什么都存要么什么都丢。1.1 记忆不是单一存储而是有层级的人脑的记忆分工作记忆和长期记忆Agent的记忆也一样。我习惯把它拆成三层来看工作记忆当前会话上下文相当于模型正在处理的context window。大模型靠注意力机制读这段内容所有推理都发生在这里。长期记忆跨会话持久化的信息包括用户偏好、历史事实、任务结论、知识片段。这是Agent越来越懂你的关键。场景记忆/程序记忆某种特定流程怎么走、某个工具怎么用、某个任务的历史做法。这部分在编排层体现为流程模板或技能库。不同项目对这三层的侧重点差别很大。MemGPT侧重把工作记忆管好Mem0和Zep侧重点在长期记忆的提取和检索CrewAI则把长期记忆和场景记忆做了角色分工。理解这个分层后面看各家设计就顺了。1.2 记忆系统躲不开的三个环节写入、存储、检索任何记忆系统拆到最底层就是三个动作写入决定哪些信息值得沉淀。这一步最难因为它依赖模型对重要性的判断而判断错了后面全错。存储决定用什么形式把记忆落地。纯文本块、向量索引、知识图谱、关系型表各有利弊。检索决定在什么时机、用什么信号把相关记忆捞回上下文。实时性、相关性、抗噪声三个指标很难同时拉满。六家项目的思路差异本质就是在这三个环节上做的不同取舍。有的把写入交给大模型自主判断有的用规则模型混合有的存储只用向量库有的做了图结构有的按相关性检索有的额外叠加了时间衰减。没有绝对优劣只有适不适合你的场景。1.3 context window再大也救不了记忆缺失有人会说Claude和GPT的上下文窗口都到100K、200K了直接把历史全塞进去不就行了这事我专门测过结论很直接窗口大不等于记忆好。第一成本不是一个量级。每轮对话全量携带历史token消耗线性增长跑不了几轮就顶不住账单。第二噪声会淹没信号。模型注意力是有限的塞进去10万token真正关键的那几条信息反而容易被稀释。第三信息会过期。用户的偏好可能三个月后就变了全量历史根本没法做遗忘和版本管理。所以长期记忆一定要有独立的存储和检索机制不是硬塞窗口能解决的。2. 六家方案全景图先看分歧再谈优劣2.1 一张表看懂项目定位先把六个项目放在同一张表里看各自的定位、记忆形式和核心思路项目定位记忆存储形态核心记忆机制LangChain / LangMemAgent开发框架内存、摘要、向量库、外部存储模块化记忆类短期到长期分层MemGPT / Letta自我编辑记忆的Agent框架分层内存块核心/归档/回忆操作系统式上下文换页Mem0记忆服务/库向量知识图谱混合提取过滤去重写入管线Zep生产级记忆服务时间加权图记忆摘要图记忆、时间衰减、历史速写CrewAI多Agent协作框架SQLite向量库实体存储短期/长期/实体记忆分工AutoGPT自主任务Agent向量数据库典型Pinecone历史消息全量向量化定位不同意味着它们解决的问题边界完全不一样。LangChain是给你工具自己拼Zep和Mem0是别管实现直接用服务MemGPT则是把记忆控制权交给模型自己。下面逐个展开讲。2.2 两大流派向内管理上下文向外沉淀知识仔细观察会发现这六个项目其实分成两大派。一派是上下文管理派代表是MemGPT和LangChain的记忆类。它们的主要精力花在如何从历史会话中提炼出当前执行需要的状态关注点是context window内怎么装得下又装得对。通俗点说这类方案关心的是此时该给模型看什么。另一派是知识沉淀派代表是Mem0和Zep。它们主要解决如何从大量交互中抽取出稳定的、可复用的知识关注点是通过结构化和索引让记忆可以被长期检索。这类方案关心的是Agent持续积累下来什么。CrewAI和AutoGPT是混合体但层次比较浅。CrewAI做了分工尝试AutoGPT则基本属于先存下来再说的早期形态。理解这两派选择时会清晰很多如果你的Agent是单会话复杂任务上下文管理派更适合如果你的Agent要做跨会话个性化助手知识沉淀派是主线。2.3 为什么拿这六个项目对比市面上做记忆的项目远不止这些比如Memori、LlamaIndex的memory模块、LangMem之外的Mem0衍生生态。我选这六个是因为它们分别代表了一种典型思路的极致形态框架内置、系统级换页、语义管线、图记忆服务、多角色分工、早期全量存储。把这六种思路放在一起基本能覆盖当前Agent记忆设计的全部主流技术手段。后面每个项目我都会讲清它的设计逻辑、适合的场景以及实测中的问题。3. LangChain / LangMem开发者友好但记忆是拼接件LangChain是最早把记忆作为一等公民写进文档的框架。但现在回头看它的记忆模块更像是一个工具箱而不是一套解决方案。3.1 短期记忆从内存Buffer到摘要再到向量检索LangChain早期的记忆类很好理解就是围绕聊天的历史记录做包装。ConversationBufferMemory把全部历史消息原样保存需要时全量拼进prompt。最简单但基本只能支撑短会话。ConversationSummaryMemory用模型把历史对话总结成摘要存摘要而不是原文。解决了一定程度上的长度问题但摘要会丢失细节。ConversationSummaryBufferMemory摘要和原文混合近期保留原文、远期保留摘要兼顾细节与长度。VectorStoreRetrieverMemory把历史片段向量化存入向量库查询时按相似度检索出最相关的片段。这组演进对应了一个核心问题历史信息在上下文里放不下时怎么压缩和筛选我记得早期测试时用SummaryMemory接长对话模型对具体数字和用户原话的记忆基本全面退化只剩聊过某个话题这种级别。所以后来社区普遍转向向量检索式的记忆至少能按相关性找回细节。3.2 长期记忆LangMem的四阶段操作LangChain在长期记忆上的野心体现在LangMem这个项目里。LangMem把记忆操作抽象成四类Extract从当前对话中提取潜在记忆候选。通过提示词让大模型判断这段对话有什么值得记住的。Prepare对候选记忆做清洗和规范化比如去掉对话杂质、统一格式。Evolve根据新信息更新或合并旧记忆。比如用户之前喜欢轻量级笔记本后来买了游戏本记忆需要改写而不是新增。Integrate把整理好的记忆写入存储并建立索引。这套管线设计得很规整但它高度依赖大模型在Extract阶段的判断质量。我在实际使用中遇到的现实是模型常常把随口一说当成重要偏好记住或者漏掉真正关键的信息。提取质量决定了整套记忆系统的天花板这一点在LangMem里体现得最明显。3.3 实操感受与翻车点用LangChain/LangMem搭记忆系统最大的优点是灵活所有组件都能换LLM、向量库、存储后端都可以自由组合。但缺点也正在于此——你得到的是零件不是整机。你需要自己设计记忆提取的提示词、自己决定哪些记忆要合并、自己处理记忆冲突和过期。LangMem提供了框架但决策逻辑基本都要自己写。我印象最深的一个翻车案例某个助手项目里我把用户每条重要操作都提取成记忆结果跑了半个月记忆库里堆了几千条碎片检索时随便一查就能搜出几十条相关记录模型根本不知道该信哪条。后面不得不加了合并和衰减逻辑才算把召回质量拉回来。用LangChain系方案建议一开始就把记忆的遗忘策略想清楚别只想着存。4. MemGPT / Letta把执行上下文当成虚拟内存来管理MemGPT这个项目的核心洞察非常聪明既然大模型的context window是有限的内存为什么不用操作系统管理内存的那套办法来管理它4.1 虚拟上下文管理机制MemGPT的设计逻辑是这样的把模型能看到的上下文看作物理内存把外部存储看作磁盘。系统维护一套分页机制——模型先把最关键的信息放在内存里次要信息放在磁盘里需要时把相关页面换入不需要时换出。具体到实现MemGPT定义了几种记忆层级Core Memory核心内存始终驻留上下文的信息通常是系统提示词中的结构化记忆块比如用户画像、Agent自我设定。Recall Memory回忆存储历史消息的完整记录存在外部数据库需要时可以检索回上下文。Archival Memory归档存储长期事实性知识通过函数调用按需写入和检索。这套设计的精妙之处在于它引入了中断和心跳机制。模型在执行过程中如果觉得需要记住某件事可以主动调用函数请求把这个信息写入归档系统会中断当前执行流处理写入后再恢复。这让记忆写入不再是脱离模型的外部过程而变成了模型自主决策的一部分。4.2 可自我编辑的Agent记忆MemGPT还有一个非常有意思的设计核心记忆不是系统外部写进去的而是Agent自己可以编辑的。它通过function calling调用core_memory_append、core_memory_replace等接口自己维护对自己人设的记忆。这意味着Agent的行为可以随记忆演化。比如一个客服Agent这轮对话发现用户更喜欢简洁回复它会直接在核心记忆里把回复风格简洁这条改写掉下一轮自动生效。这个思路放到记忆系统里算是最大胆的尝试——把记忆的写入权从开发者交给了Agent自己。这个设计在LettaMemGPT的延续项目里被保留并强化了记忆块可以组织成JSON结构Agent可以精细操作某个字段。4.3 实操感受与翻车点MemGPT的系统级比喻非常优雅但实际使用时会有几个问题。第一是换页的不可控性。模型判断此刻需要哪些信息并不总是可靠。我有一次跑多轮任务型对话模型在一个子任务里把用户的核心偏好换出了上下文后面再也没想起来整场对话的体验明显变差。系统换页逻辑需要有很强的守卫机制但默认配置下通常不够稳。第二是记忆碎片化。Agent自己编辑记忆块久了会产生大量细碎、重复甚至互相矛盾的小字段尤其是做append操作时。需要定期做记忆压缩和合并这又是一个额外的工程负担。第三是成本不透明。MemGPT为了换页会频繁调用函数这些函数调用也要消耗token和时间。实测在复杂任务里光记忆维护可能就占掉不少调用量需要在实际业务里做预算。客观说MemGPT的思想对后续项目影响极大我现在看任何记忆系统都会下意识问一句模型自己能主动写记忆吗但把它直接用到生产环境得有心理准备去处理换页稳定性的问题。5. Mem0从存了多少转向记得多准Mem0是这两年长期记忆赛道里跑得最快的项目之一。它的口号是给AI一个可成长的记忆但真正让它区别于早期方案的是它的重点不在存储而在记忆的提取和维护质量。5.1 记忆提取管线ADD、UPDATE、DELETE、NOOPMem0最核心的设计是一条由大模型驱动的提取管线。系统拿到新的对话内容后会交给模型做四类判断ADD提取出全新的值得记住的信息写入记忆库。UPDATE发现新信息与已有记忆存在关联或冲突改写旧记忆。比如用户换了工作城市旧记忆住在北京需要更新为住在上海。DELETE判断某条记忆已经失效或错误删除它。NOOP判断当前内容没有任何值得记住的信息什么都不做。这四类操作让记忆系统具备了自我维护能力。尤其UPDATE这个动作解决了我前面提到的一个大痛点——用户的偏好会变记忆不能只增不改。在Mem0之前很多方案的记忆库都是只写不删的垃圾场Mem0第一次把记忆的更新和删除提升为核心机制。5.2 向量图谱混合检索存储层面Mem0采用混合架构。它以向量数据库作为主体承载记忆的语义索引同时引入了知识图谱来组织实体之间的关系。这是什么意思呢纯向量检索擅长找语义相似但不太擅长回答某个实体和另一个实体是什么关系这类问题。比如问这个用户最常找我们买什么品类向量检索会返回一堆关于购买行为的片段但知识图谱可以直接抽出用户和商品的关联关系。两者结合召回的相关性和可解释性都会更好。Mem0的另一个特点是它可以在多个Agent之间共享记忆。比如一个Agent处理邮件、一个Agent处理日历各自独立运行但共享同一套用户记忆这对构建个人助理形态的产品非常关键。5.3 实操感受与翻车点Mem0我实际集成过两个项目总体印象是开箱即用程度最高。它有API和Python库配置好LLM和向量库就能跑提取效果明显比LangChain里自己写提示词稳定。尤其是信息冲突的处理比如用户先说了我工作在深圳几天后又说我搬到杭州了Mem0能正确把旧记忆更新掉这在别的方案里很少见。但要泼几盆冷水。第一它的提取质量强依赖底层LLM。我用GPT-4和用开源模型跑同一个对话流提取出来的记忆质量差异非常大。开源模型经常把对话里的闲聊也当成事实存进去。如果要上生产底层模型的钱不能省。第二记忆重写带来的历史一致性风险。UPDATE操作有时改得过头把一些还有效的细节也抹掉了。比如用户从喜欢性价比手机更新成买了高端机型但这个用户可能依然在意性价比。Mem0提供了重构的置信度选项但调整这些参数需要大量实验。第三存储成本比看上去高。混合检索意味着要同时维护向量库和图数据库数据一致性问题就出现了。我在项目里遇到过向量库里已经删掉的实体图库里还残留关联的情况最后得写对账脚本定时清理。6. Zep把记忆做成独立于模型的服务层Zep的思路和前面的项目都不一样——它不绑定任何Agent框架而是把记忆做成了一个独立服务。你的Agent只需要调用Zep的API就能获得记忆的写入、读取、更新、搜索全套能力。6.1 时间加权图记忆的核心设计Zep最有辨识度的设计是时间加权图记忆。它会把对话中提取出的实体人、事、物、概念和关系存成知识图谱同时给每条记忆加上时间属性。这个时间加权是什么意思Zep在检索记忆时不只算语义相关性还会把时间衰减因素算进去。一条两年前的记忆和一条昨天的记忆即使语义上同样相关后者的权重会明显更高。这套机制很好解决了长期运行Agent的一个棘手问题老记忆和新事实打架时该信谁。时间加权给了新信息合理优势而且不需要开发者手动做过期标记。Zep图记忆的另一个优势是召回可解释。因为它存的是一张图你可以直接查用户提到的项目、参与的人、关联的时间顺着边就能找到推理路径。这在排查Agent错误决策时特别有用——你能看到模型到底是根据哪条记忆做的判断。6.2 会话历史速写与事实提取除了图记忆Zep还内置了对话历史速写功能。它对每段会话做两层处理一层是把完整对话生成压缩摘要另一层是从中提取出可结构化的事实。这样当新会话开始时系统可以快速回放摘要让Agent想起来上次聊了什么同时把关键事实同步进图记忆。实际操作中Zep的API设计比较务实创建用户、添加会话、查询记忆几个接口就能串起来。它还提供了一些预置的提示词模板方便做事实提取。相比前面那些需要自己组装全套方案的项目Zep更像是一个生产保障件——部署在Agent和模型之间承担记忆的脏活累活。6.3 生产环境部署的观察Zep现在同时有云服务和自托管两种形态。自托管时它包含PostgreSQL、Neo4j等组件整体部署起了一套微服务但好处是记忆层可以和业务完全解耦多个Agent服务可以共享同一套记忆后端。我在一个内部知识型Agent上部署过Zep最明显的感受是检索延迟需要监控。因为图查询和向量检索要同时跑某些复杂查询的响应时间会到几百毫秒这在一个实时对话链路里是能感知到的延迟。当时我们做了一层缓存对高频记忆做热加载才把体验拉回来。另外Zep的图模型默认把关系类型划得比较细存多了以后图会变得很复杂检索时容易查出一堆边。建议实际使用时限制图的深度或者定期做图剪枝不然迟早会遇到查询超时。7. CrewAI与AutoGPT早期风潮里的两种极端这两个项目放在一起对比很有意思。CrewAI代表了把记忆分给不同角色的编排路线AutoGPT则代表了先把历史全存下来的朴素路线。它们都算不上最佳实践但教训价值很高。7.1 CrewAI三种记忆按角色分工CrewAI是多Agent协作框架它设计了三类记忆接口短期记忆会话内的上下文共享所有Agent在执行同一个任务时共享一段短时状态。长期记忆跨任务的持久存储底层用SQLite和向量检索保存Agent在历史任务中的结论和偏好。实体记忆专门存业务实体的信息比如用户、项目、组织结构化为层级实体存储。CrewAI让我欣赏的一点是它明确了记忆的归属——不同记忆服务不同的Agent流程角色而不是一股脑全塞给主Agent。比如一个市场调研Crew资料收集Agent的产出沉淀到长期记忆客户画像Agent把结论写进实体记忆最终汇总时各自按需读取。这种分工在多人协作式Agent里很有价值。但它的缺点是这套记忆系统做得比较浅。长期记忆本质上还是任务结果向量化存储缺少Mem0那种提取、合并、更新的精细管线。存进去的信息质量取决于各Agent输出质量输出很差时记忆库就是垃圾进垃圾出。7.2 AutoGPT什么都往里塞的向量库说到AutoGPT它是2023年那波自主Agent热潮的代表而它的记忆方案其实简陋得惊人每个Agent实例把所有历史操作和结果哈希化塞进向量数据库需要时按相似度取回。典型做法是用Pinecone存embedding配上简单的相关记忆查询。AutoGPT式的记忆有两个致命问题。第一是没有信息筛选。它记住的不是重要结论而是发生过的所有事。跑了一天的自主任务记忆库里堆了几万条操作日志检索时召回一堆无关噪音。模型本身没有能力区分哪些该记、哪些该忘。第二是没有结构。所有记忆都是平铺的文本块没有实体关系、没有时间维度、没有优先级。它的表现就像记了满满一本流水账翻哪页都像在翻垃圾。我见过不少早期项目拿AutoGPT的路子搭记忆最后都死在这两个问题上。但AutoGPT给行业的启示也很大它让所有人看到了没有好的记忆自主Agent跑得越久越糟糕。后来MemGPT、Mem0这些项目能拿到大量关注很大程度是因为被AutoGPT的失败教育过市场。7.3 从它们身上能学到的教训把CrewAI和AutoGPT放在一起看有两条很实在的教训。一是记忆要有归谁管的意识。CrewAI的分工模型比AutoGPT的混装模型好太多多Agent系统里记忆必须跟着职责走而不是塞一个公共垃圾桶。二是存储不等于记忆。AutoGPT不缺存储缺的是对信息的筛选、结构化和遗忘。而这恰恰是后面Mem0、Zep重点解决的问题。如果今天要新做Agent我建议直接绕过AutoGPT式全量存储起步就设计好提取和更新管线。8. 选型落地六套方案对应什么场景以及我踩过的坑最后把这六套方案的选型逻辑和实战中容易踩的坑讲透。每次被问该用哪个我都建议先想清楚自己的Agent要服务什么场景。8.1 按场景选型场景特征推荐方案理由快速验证记忆概念、自己掌控全链路LangChain LangMem组件灵活方便理解记忆系统的每个环节单Agent长会话、需要模型自主管理上下文MemGPT / Letta上下文换页机制适合长任务执行个人助理、跨会话个性化、多Agent共享记忆Mem0提取和更新质量高开箱即用生产级多Agent服务、对记忆可靠性和可解释性要求高Zep图记忆时间衰减服务层解耦多角色协作Crew、需要记忆跟着任务走CrewAI短期/长期/实体记忆分工清晰研究早期自主Agent形态AutoGPT仅用于理解历史局限不建议生产如果要我给出一个务实路径个人助手类应用优先试Mem0生产级系统优先评估Zep想要深度掌控和快速试验选LangMem想要模型自我管理上下文试Letta。别一上来就全量接入图记忆或复杂管线先跑通一个最简记忆闭环再逐步叠加复杂度。8.2 三个容易踩的坑第一个坑是记了一堆没用的信息。所有记忆系统都会过度提取尤其用便宜模型时。我的解决方案是给提取加一层过滤规则只有包含明确实体用户名、产品名、时间、偏好词的内容才允许入库纯闲聊、纯寒暄一律丢弃。第二个坑是检索到了旧信息且未处理时效性。如果方案没有Zep式的时间加权建议自己在记忆条目上打时间戳检索时对旧条目做降权。否则一个用户半年前吐槽过某功能半年后问起该功能时Agent会把吐槽当成当前态度。第三个坑是把记忆库当成了万能缓存。有人为了省token把业务中间状态也塞进Agent记忆。这是把记忆库和数据库混为一谈。Agent记忆应该只承载影响模型行为的用户信息与事实业务数据该进业务库就进业务库。混用之后检索准确率和系统可维护性都会快速劣化。8.3 一个务实的落地路径如果你还在初期我建议按这个顺序推进先用LangChain把短期记忆跑通理解context window的边界然后接一个Mem0或Zep做长期记忆观察提取质量和检索效果最后再根据业务需要引入图结构或记忆共享。每一步都先定量评估——提取准确率、检索命中率、对最终任务成功率的提升——再决定要不要继续加深复杂度。记忆这个事做减法永远比做加法难但也永远更有效。我个人在实际项目里的体会是长期记忆的价值不在存了多少而在该想起来时想得起来不该当真时不当真。一套好的记忆系统最终应该像一个靠谱的助理记得住关键事拎得清轻重也懂得忘掉过时的细节。希望这篇对比能帮你少走一些弯路找到适合自己Agent的那套方案。