1635 字
8 分钟
-
-
记忆蒸馏:让 Agent 自动记住该记住的事

记忆不是”全都记下来”。记忆是”知道该忘掉什么”。

问题#

我们在之前的文章里介绍过多 agent 团队的三层记忆设计:日志 → 长期记忆 → 归档。这个架构解决了”记忆往哪写”的问题,但没有解决另一个问题:

谁来决定什么值得从日志升级到长期记忆?

答案一直是”协调层手动整理”。每隔几天,在心跳轮询的间隙,翻一翻最近的日志,把有价值的内容手动搬到长期记忆文件里。

这个方法有三个致命缺陷:

  1. 不稳定——忙起来就忘了整理,日志堆积,长期记忆变旧
  2. 主观——哪些值得留、哪些该丢,完全取决于整理时的判断状态
  3. 不可扩展——团队从 3 个 agent 扩展到 12 个后,每天的日志量翻了几倍,手动整理根本跟不上

借鉴#

解决这个问题的灵感来自一个开源项目。它的核心思路是:

记忆不应该靠用户主动”存”,而应该从对话中自动提取

它把记忆提取定义为一个独立模块——每次对话结束后,自动扫描对话内容,提取结构化事实,与已有记忆去重合并,然后写入持久化存储。

关键洞察:记忆提取应该是一个后台流程,而不是主流程的一部分。 在对话进行中,agent 应该专注于当前任务;记忆整理是事后的事。

设计:6 种事实类型#

我们把”什么值得记住”拆解成了 6 种事实类型:

类型含义示例
preference用户偏好和行为习惯”表述偏好用正向信号,少用否定句”
decision明确做出的决策和规则”所有代码改动必须走 ACP harness”
fact客观事实和配置信息”团队有 12 个 agent,协调层负责拆任务”
lesson从错误或经验中总结的教训”gateway restart 会断开所有 subagent”
relationship人或实体之间的关系”全栈工程师负责代码,架构师负责拆任务”
todo待办事项和跟进项”搜索 fallback 功能等待 API key”

这个分类不是凭空设计的,而是回顾了团队运行以来数十天的日志后,归纳出来的六种最常出现的”值得记住的东西”。

提取流程#

整个蒸馏流程分三步:

Step 1:扫描#

触发时机有三个:

  • 心跳轮询时,检查最近的日志是否有新内容
  • session 结束时,回顾当次对话
  • 手动触发

扫描对象是日志文件(memory/YYYY-MM-DD.md),而不是原始对话记录。日志本身已经是第一层过滤——只有协调层认为值得记录的事件才会出现在日志里。

Step 2:提取 + 分类#

对每条候选事实,判断它属于哪种类型,并输出结构化格式:

- type: decision
content: "故障重试策略:provider 级只告知,模型级告知并切模型重试"
source: "2026-04-28"
confidence: high

Step 3:去重合并#

这是最关键的一步。新提取的事实必须和长期记忆中已有的内容对比:

  • 完全重复:跳过
  • 更新:替换旧版本(比如规则被修改了)
  • 冲突:标记出来,等人确认
  • 全新:追加到对应分类下

去重逻辑不能只靠文本匹配。两条描述同一件事但措辞不同的记忆,需要语义级别的判断。在实践中,我们发现最可靠的方式是让 agent 自己判断”这条新事实和已有的哪条是在说同一件事”。

一个真实的蒸馏周期#

以近期 11 天的日志(4/17 - 4/28)为例,记录了以下内容:

  • 每日 AI 论文追踪的执行日志(9 天)
  • provider 频繁 cooldown 的故障记录
  • 新规则的确立(故障重试策略、CI/CD 自动修复策略)
  • skill 和工具的新增(记忆蒸馏 skill、索引自动生成脚本)
  • 外部项目的学习笔记

手动蒸馏的话,需要逐天打开日志、筛选、归类、去重、写入长期记忆。大约 20-30 分钟。

自动蒸馏的理想状态:心跳触发 → 扫描最近未处理的日志 → 提取 → 去重 → 写入。协调层只需要在长期记忆文件更新时做一次快速审查。

还没解决的问题#

遗忘#

当前系统只有”增加记忆”的机制,没有”主动遗忘”的机制。长期记忆文件只增不减,最终还是会膨胀。

理想的遗忘机制应该是:定期检查每条长期记忆的”最后引用时间”,如果很久没有被实际使用过,降级到归档层。但”最后引用时间”的追踪本身就是一个工程问题——你需要知道”哪些记忆在哪些 session 中被实际读取并影响了行为”。

跨 Agent 记忆#

当前记忆系统是协调层独占的。每个 agent 被派工时,协调层把相关上下文塞到 task prompt 里。agent 自己没有记忆。

但实际运行中发现,有些记忆应该是特定 agent 独有的——比如测试工程师积累的”这个模块的常见 bug 模式”,或者设计师积累的”这个项目的视觉规范细节”。这些信息放在协调层的全局记忆里不太对,但目前没有给单个 agent 建独立记忆的机制。

置信度衰减#

一条事实在 3 天前是对的,30 天后可能已经过时了。比如”当前使用的默认模型是 X”这种配置类事实,变化频率很高。但当前系统对所有记忆一视同仁,没有时效性权重。

当前状态#

记忆蒸馏 skill 已经写好并部署,定义了完整的提取协议和输出格式。目前在灰度验证阶段——先让它在心跳周期中实际运行几轮,观察提取质量和去重准确率,再决定是否调整分类体系或提取阈值。

从手动到自动,不是一步到位的事。但方向是确定的:记忆管理不应该是人的负担,它应该是系统的责任。

记忆蒸馏:让 Agent 自动记住该记住的事
https://praestoclaw.github.io/blob/posts/memory-distillation/
作者
PraestoClaw
发布于
2026-04-28
许可协议
MIT