如一 Agent 架构解读(十二):记忆系统(下)——记忆的生命周期工程

上篇立了记忆的数据模型与召回:认识论定价、血缘纠错、三级召回。这篇讲运转------一条记忆从对话信号变成可信资产,要走过写入、决策、巩固、遗忘的完整生命周期。我们把业界各家的真实实现拆到机制层,再给出我们认可的最佳方案。

记忆不是一个 LLM 调用,是一条资产管线

很多团队的记忆系统止步于"对话结束,LLM 提取几句存进向量库"。上线三个月后发现:记忆库越用越脏------重复、矛盾、过期的事实越积越多,召回质量不升反降。有团队实测了六种去重更新策略,结论是多数方案"要么更新不彻底,要么 LLM 成本高到不可用"。问题不在提取质量,在于记忆被当成了一次性写入,而不是一条需要全生命周期管理的资产管线:写入时机谁定?候选记忆能不能直接入库?陈旧记忆怎么巩固、怎么遗忘?并发写入乱不乱?这篇按这四个问题拆业界。

业界调研:生命周期的四段,各家各交了一份答卷

写入时机:热路径、冷路径、事件管线三派。 LangMem 把这对选择明确定义成两种模式:hot path(对话中实时更新,即时反映但拖慢响应)与 background(异步批量更新,便宜但有延迟)。MemGPT/Letta 把写入权完全交给模型手上的工具(主权派);Mem0 则是每轮对话自动触发提取管线(事件派),模型全程无感。Claude Code 的 extractMemories 给冷路径立了纪律教科书:只在"本轮无工具调用"的安全点触发、游标推进不重不漏、主 Agent 刚手动记过就撤退(hasMemoryWritesSince 互斥)、工具集阉割到只读写记忆目录、5 轮熔断。

提取与决策:Mem0 的两段式是最重要的机制创新。 Mem0 不把提取到的事实直接入库:第一段从"最近消息 + 会话摘要"提取候选记忆;第二段先检索语义最相似的存量记忆,把候选和相似记忆一起交给 LLM,裁决四种操作------ADD / UPDATE / DELETE / NOOP。这道"决策关"挡住了大部分重复和矛盾,是 Mem0 能被 AWS Agent SDK 选为记忆底座、单季 1.86 亿次 API 调用的核心。但它的 UPDATE 是覆盖式的,和实测"越用越脏"的社区反馈同源:覆盖丢历史,相似度阈值漏判矛盾。

巩固:睡眠时间的离线整理。 Letta 的 sleep-time compute(与 UC Berkeley 合作的论文方向)把记忆维护挪到空闲期:合并碎片化条目、重算重要性权重、生成更高层摘要、重建索引------在线路径只做最快的事。CC 的 Auto Dream 同思路:后台定期去重、清理、更新。学术源头是 Generative Agents 的 reflection:重要性积分过阈值就触发高层抽象,从"记了什么"长出"理解了什么"。

遗忘:三派哲学。 MemoryBank 引入艾宾浩斯曲线:每条记忆有强度值,随时间衰减、被召回时强化、重要记忆衰减更慢------遗忘不是删除,是检索降权。Graphiti/Zep 是失效派:旧事实永不删,只标 invalid_at 留痕。显式删除派(用户主权)则要求删得干净。三派其实管的是三个不同的层。

一致性:业界的集体盲区。 几乎所有方案都默认单实例、单写入者。生产级多实例下,热路径和冷路径同时改一条记忆、两个会话同时纠正同一事实------没人给答案。

最佳方案:记忆资产生命周期的五条纪律

① 写入双通道,互斥不越权。 热路径主权在模型:记忆工具就是它的权力,实时落库。冷路径系统兜底:只在成功收尾的安全点触发、只补热路径没顾上的范围、水位线推进不重不漏、失败静默不影响主链路。互斥判重是冷路径的第一纪律------CC 的 hasMemoryWritesSince 思想,粒度细化到"哪个记忆空间没碰过补哪个"。

② 决策关必须过,但裁决要引用不要覆盖。 吸收 Mem0 两段式:候选记忆永不直接入库,先找相关存量记忆再裁决。把四操作改造为血缘语义:ADD 新挂、SUPERSEDE 引用旧 claim 取代(不覆盖)、FORGET 级联、NOOP 不动。SUPERSEDE 就是 Mem0 的 UPDATE 去掉覆盖病的版本------历史留痕,"系统永远知道自己怎么错的"。

③ 单一写入服务:冷热路径同管一道闸。 无论模型主动写还是后台蒸馏写,全部经过同一个写入服务、同一套校验(schema、长度、敏感串扫描、supersedes 合法性、版本检查)。蒸馏器的产出不是"写入"是"写入申请"------它是写入服务的后台客户端,不是第二个写作者。写入纪律从此只有一份,幻觉和越权在同一道闸拦下。

④ 巩固是周期任务,节奏用提醒不用强制。 sleep-time 思想落地为两档:低成本档是周期提醒------距上次整理满 N 个任务,给主 Agent 注入一条"该收拾记忆了"的轻提示,整理动作自动重置计数,不产生额外模型调用;高成本档才是离线合并去重,且合并也必须留下血缘,不能为了干净把历史抹掉。

⑤ 遗忘分三层,各管一段。 检索层学 MemoryBank:低频记忆自然降权沉底,不用删;血缘层学 Graphiti:被取代的记忆失效留痕,可追溯;主权层给用户:显式遗忘沿血缘链级联删净。再加上业界没人答的一致性底座:版本 CAS + 行锁 + 唯一约束兜底并发,所有竞态翻译成"read it and retry"的可执行错误------记忆的并发问题是数据库问题,不是 prompt 问题。

收尾

五条归一句:

记忆不是一次提取调用,是一条资产生命周期管线:写入有主权,入库有裁决,巩固有节奏,遗忘有层次,并发有底座。

至此记忆两篇闭环:上篇回答"凭什么信",这篇回答"怎么活"。

系列预告:下一篇《缓存命中率工程》------Agent 的成本地基:前面十二篇讲"怎么让 Agent 干得好",接下来讲"怎么让 Agent 干得起"。


如一:ruyi.apmen.cn

智创者社区:apmen.cn

相关推荐
夕阳_醉了7 小时前
Codex 客户端从装好到跑通:第三方 API 接入与配置避坑指南
人工智能·gpt·openai·codex·ai 编程
熟的生菜7 小时前
从零造一个腱绳驱动灵巧手——仿真器篇5:姿势串与手势工程——从文本协议到握拳、OK 与多姿势插值
人工智能
用户95179422510298 小时前
最小循环:让 Agent 跑起来(I1)
python·agent
武子康8 小时前
攻击动作做对了,游戏规则就对了吗?H3-World 与三条控制路线的分工
大数据·人工智能·agent
ZhengEnCi8 小时前
Agent 任务规划怎么选:ReAct 与 Plan-and-Execute 的成本账与适用边界
agent
探求虚无8 小时前
用 AI 在 Unity 里做一款 RTS:最难的不是生成代码,而是证明它真的能玩
人工智能·unity·游戏引擎
vivo互联网技术8 小时前
AI Agent 技术全景解析 —— 从提示词工程到高级智能体构建
人工智能·agent
武子康8 小时前
H3-World 的动作能按时发生,为何还不能据此判断实时互动?
人工智能·深度学习·agent
师夷长技以自愈8 小时前
手搓 AI Agent 第 4 篇:后厨扩招——AI 从此能读、能写、能改、能跑
人工智能