Agent长期记忆不是“向量库+RAG”:真正难的是写入、更新、过期、删除和评测
AH-0114从一个非常好的问题开始:模型的单次API调用本身没有跨调用记忆,Agent之所以“记得”,本质上是系统把过去的信息重新放回当前上下文,或者把长期信息存到外部系统后按需取回。 源文进一步用情景记忆、语义记忆、程序性记忆解释长期记忆,并拿OpenClaw与EverOS做案例。这比把“记忆系统=一个向量数据库”讲得完整得多。 但如果以2026年生产系统的标准来看,还必须补上四件事: 记
Agent长期记忆不是“向量库+RAG”:真正难的是写入、更新、过期、删除和评测
AH-0114从一个非常好的问题开始:模型的单次API调用本身没有跨调用记忆,Agent之所以“记得”,本质上是系统把过去的信息重新放回当前上下文,或者把长期信息存到外部系统后按需取回。
源文进一步用情景记忆、语义记忆、程序性记忆解释长期记忆,并拿OpenClaw与EverOS做案例。这比把“记忆系统=一个向量数据库”讲得完整得多。
但如果以2026年生产系统的标准来看,还必须补上四件事:
记错怎么办? 过期怎么办? 用户要求删除怎么办? 怎么证明这套记忆真的比不记更好?
“记忆类型”只是第一层
分类有助于理解:
Semantic 用户是谁、稳定偏好、项目事实。
Episodic 发生过什么、某次任务如何结束。
Procedural 任务该怎么做、过去哪些步骤有效。
源素材中EverOS把这些进一步拆成稳定特质、临时状态、Episode、EventLog、Foresight、Agent Case、Agent Skill等。这是一个有用的实现思路。
但生产系统更重要的是记忆生命周期。
一条记忆至少经历七个动作
1. Write
什么信息值得进入长期记忆?不是所有聊天都应该记。
应该看:
- 是否未来还会用;
- 是否稳定;
- 是否有权限保存;
- 是否含敏感信息;
- 是否只是临时状态。
2. Validate
这条记忆来自用户明确陈述、工具结果,还是模型推断?“用户说自己在成都”和“模型猜用户可能住成都”不能同等保存。
所以记忆需要: Source / Confidence / Fact-vs-Inference。
3. Consolidate
重复和冲突怎样合并?“准备健身” “最近没去” “决定不健身了”
不能只按相似度找到三条。
系统要知道:
- 时间;
- 当前状态;
- 历史状态;
- 哪条被哪条更新。
4. Retrieve
什么时候应该把记忆重新放进上下文?检索不是“相似就塞”。
还要看:
- 当前任务;
- 时间相关性;
5. Expire
“这周很忙”和“偏好中文”生命周期不同。每条记忆都应该能有:
- TTL;
- review date;
- superseded status。
6. Delete
用户删除后,要处理:- 主存储;
- 向量索引;
- 缓存;
- 摘要;
- 图结构;
- 派生profile。
这和第十一批聊天知识库的Deletion Propagation是一套问题。
7. Evaluate
系统真的记得更好吗?至少要测:
- Recall Accuracy;
- Wrong Recall;
- Stale Recall;
- Relevant Retrieval;
- Privacy Leakage;
- Cost / Latency;
- Task Success。
只看“记住了多少”很容易鼓励记忆污染。
EverOS当前项目值得研究,但benchmark不能只看排行榜
截至2026-08-13,EverMind-AI/EverOS官方GitHub仓库仍公开、未归档、Apache-2.0许可。当前README把项目组织成use cases、architecture methods和benchmarks三部分,核心EverCore公开写出LoCoMo 93.05%、LongMemEval 83.00%,并提供评测运行说明。
这说明源文里的“93.05%”并不是凭空出现。
但这也不等于“93.05%就是企业生产质量”。
原因有三层:
第一,benchmark任务只是生产需求的一部分。
第二,LLM-as-judge、数据集标注和实现差异会影响绝对分数。
第三,真实企业系统还要测权限、删除、陈旧记忆、错误写入和业务任务成功。
因此文章不把“EverOS比Zep高8个百分点”当成采购结论。
更合理的是:
> benchmark用于比较一个切面,生产评估必须建立自己的memory test suite。
“像人类记忆”可以做比喻,不该做验证
源文多次把Agent记忆与人类记忆类比。
这有助于初学者理解。
但产品设计不能因为“更像人脑”就判断更好。
软件记忆系统完全可以比人类更机械:
- 明确版本;
- 明确删除;
- 明确来源;
- 明确冲突;
- 可审计。
这些反而是它应该优于人类记忆的地方。
Skill自进化最危险的是错误经验被固化
如果Agent把过去成功任务蒸馏成Skill,听起来很自然。
但它至少要防三种情况:
Bad Success 任务碰巧成功,但方法不可靠。
Context Leakage 把某个客户/仓库的特殊规则学成通用规则。
Stale Procedure 工具、API或政策更新了,旧Skill继续执行。
因此程序性记忆必须有:
- evidence count;
- scope;
- maturity;
- last successful use;
- failure count;
- owner;
- review date;
- deprecation rule。
“做过5次就自动变Skill”不能成为唯一成熟标准。
网站资产:Agent Memory Lifecycle Lab
本批实际生成 agent_memory_lifecycle_lab.html。
你可以录入一条候选记忆,并选择:
- 类型;
- 来源;
- 稳定性;
- 敏感性;
- 作用域;
- TTL;
- 是否会覆盖旧记忆;
- 删除传播;
- 是否有评测问题。
工具会给出: STORE / TEMPORARY / NEED VALIDATION / EXPIRE / DO NOT PERSIST
这比单纯问“用什么向量数据库”更接近真正的Agent memory engineering。
记忆系统真正的成熟标志,不是它什么都记得。
而是:
> 该记的时候能写对,该忘的时候真的能忘,冲突时知道哪条是新的,回答时还能告诉你这段记忆从哪里来。