Agent 记忆写入策略:如何决定“记什么”?
在上一篇文章里,我聊过 Agent 记忆的五层模型。那篇文章更多是框架视角:我们需要区分短期记忆、长期记忆、情景记忆、语义记忆、技能记忆等等。
但是,当真正开始在工程里落地的时候,很多人会遇到一个更具体的问题:
Agent 每天都在接收大量输入,但不可能把所有内容都存下来。那,究竟应该“记什么”?
这个问题听起来简单,背后却很关键。因为一旦写入策略没设计好,要么记忆库很快“垃圾堆积”,要么遗漏了用户真正关心的事实。今天就来聊聊 记忆写入策略。
TL;DR
多轮对话 Agent 不可能“什么都记”,关键是设计写入策略。
本文总结了三种常用方法,并给出 LangGraph + 向量库的代码示例:
- LLM 打分(重要性):让大模型自己评估一条信息对未来是否重要,重要才写入。
- 相似度检测(新颖性):用 embedding 检查新信息是否与已有记忆相似,避免重复存储。
- 计数与蒸馏(高频性):对重复出现的信息进行计数,达到阈值后用 LLM 总结为一条稳定事实。
这三种策略往往要混合使用,才能既不遗漏关键信息,也避免记忆库膨胀。
策略一:LLM 打分(重要性)
第一种策略很直接:让模型自己判断。
做法是:在对话后,把新信息丢给一个 LLM,让它用自然语言理解的能力打一个 “重要性分数”。比如:
1 | 请根据以下事件对未来是否重要打分(1-10): |
测试设定一个合适的阈值,分数高于这个阈值 → 写入长期记忆,分数低于这个阈值 → 丢掉或只保留在短期上下文。
这种方法在 Generative Agents 论文里就被用过。研究发现,模型给出的打分,和人类直觉其实挺接近的。
优点:
- 能理解上下文的语义,不只是关键词匹配。
- 灵活,可以针对不同任务改写 prompt。
缺点:
- 每次都要额外调用 LLM,成本较高。
- 打分可能不稳定(受 prompt 影响)。
但即便如此,作为第一道“筛子”,它仍然很实用。
策略二:相似度检测(新颖性)
第二种方法是避免重复。
我们可以把每条候选记忆编码成向量,存入一个向量数据库(比如 FAISS、Chroma、Weaviate)。
当新内容出现时,先检索一下:如果相似度很高,说明这东西之前就存过。→ 不新建,只更新一下计数或时间戳。如果相似度很低,说明这是全新的信息。→ 写入为新记忆。
例如:第一次用户说“我喜欢咖啡” → 存下来。后来又说“我很爱喝黑咖啡” → 与已有记忆相似度很高 → 不新建,而是给原记忆增加一个“+1 出现次数”。
优点:
- 避免记忆冗余。
- 让记忆库保持精炼。
缺点:
- 阈值难调。过高会漏掉细微差别,过低又容易写入重复。
策略三:计数与蒸馏(高频性)
第三种思路是重复即重要。
人类也是这样:别人随口说一次的话我们可能忘记,但如果一再强调,我们会牢牢记住。
在 Agent 中,可以通过“计数器”实现:每次遇到类似的事实,就给计数 +1。当 count ≥ 阈值(比如 3),触发一次总结:用 LLM 把这几次重复的信息,合并成一条稳定的长期记忆。
比如: “我喜欢咖啡” 出现了 3 次 → 总结为一条稳定记忆:“用户偏好:咖啡”。
这样做的好处是:
- 记忆越来越浓缩,避免无限膨胀。
- 高频事实得到强化,和人类习惯接近。
实战示例:LangGraph + 向量库
下面是我写的一个简化的 demo,展示如何把三种策略放到一个 写入节点 里。这里我用 LangGraph 来组织流程,用 FAISS 来做相似度搜索。
1 | from langgraph.graph import StateGraph |
这只是最简版骨架,真正的系统里可以扩展:
- importance_score 和 similarity_score 可以做加权平均。
- 高频性总结可以用更复杂的聚类 + LLM 总结。
- 遗忘机制(衰减 / FIFO 替换)也可以接上。
总结
大语言模型的上下文长度是有限的。就算用上 100k、甚至百万级上下文,你也不会想把所有历史对话原样塞进去。
写入策略决定了 Agent 的“人格”——它记什么,忘什么,直接影响了用户体验。
写入必须有一个“门槛”,类似人脑的选择性记忆。我们往往只会保留:
- 重要的:影响未来决策的事情 → 避免噪音。
- 新鲜的以前没出现过的事实 → 避免冗余
- 高频的:多次重复强调的偏好 → 提炼知识
工程上,三种策略往往是混合使用。
我的建议是:
- 从最简单的相似度检测开始,先解决重复存储问题。
- 再加上 LLM 打分和高频总结,让记忆越来越“聪明”。
下一篇,我会聊 记忆的检索与遗忘 ——如何从一大堆记忆里找回最相关的那几条,以及如何避免记忆库无限膨胀。
延伸阅读
- Generative Agents (Park et al. 2023) —— 引入重要性打分与反思机制
- A Survey on Memory Mechanism of LLM-based Agents (Zhang et al. 2024) —— 全景综述
- AgenticMemory (GitHub) —— 动态记忆库的开源实现
- Letta/MemGPT (GitHub) —— 带长期记忆的 Agent 框架