我们经常听到:
- Knowledge Distillation
- Reasoning Distillation
- Context Distillation
- Data Distillation
- Memory Distillation
- 把一个同事“蒸馏成 Skill”
它们为什么都叫 Distillation(蒸馏)?
如果把这些技术放在一起看,会发现它们其实都在做一件相似的事情:
从一个包含大量信息或者能力的集合中,提取出对某个目标真正有价值的部分,并把它转化成对下游使用更方便使用的东西。
这个定义看似简单,但里面其实藏着两个非常重要的问题:
- 什么有价值?
- 怎么把它获取出来?
理解了这两个问题,基本就抓住了蒸馏的核心。
一、蒸馏不是简单的“压缩”
先举一个生活中的例子。
假设你看完了一本 500 页的书。
朋友问你:
“我明天就要面试了,这本书里最值得我掌握的是什么?”
你不会把 500 页全部给他。
你可能整理成:
500 页原书
↓
10 个核心概念
5 个经典案例
3 个常见坑
这就是一种很直观的“蒸馏”。
但这里有一个关键问题:
为什么留下这 10 个,而不是另外 20 个?
因为你的目标是:
帮助朋友通过面试。
所以:
面试经常问的 → 有价值
能够帮助理解核心概念 → 有价值
几乎不会涉及的内容 → 价值较低
作者的个人经历 → 可能没有价值
如果目标换成“我要写一本书”,价值判断马上就会发生变化。
所以:
有价值,从来不是信息本身决定的,而是由下游目标决定的。
这其实是理解蒸馏最重要的一点。
二、蒸馏真正解决的两个问题
我们可以把一个“大东西”抽象成:
源
│
├── 信息 A
├── 信息 B
├── 信息 C
├── 信息 D
├── 信息 E
└── ...
但下游真正需要的可能只有:
B
D
E
于是:
源
│
│ 蒸馏
▼
对目标真正有价值的部分
于是蒸馏就可以拆成两个问题:
1. 什么有价值?
答案是:
对下游目标有用的东西。
比如 Agent 有 10000 条历史对话。
如果目标是“继续完成任务”,真正有价值的可能是:
用户目标
已经确认的事实
已经做出的决定
有效的方法
踩过的坑
后续经常提到
而大量闲聊、中间过程、已经无效的临时状态,就没有必要全部带到未来。
所以:
蒸馏的第一步不是压缩,而是定义“价值”。
2. 怎么获取这些价值?
知道什么有价值以后,还要想办法把它提取出来。
最简单的方法就是:
2.1 筛选
10000 条日志
↓
筛选
↓
100 条关键日志
例如定位 Crash,只保留:
Crash 信息
异常堆栈
关键上下文
2.2 总结
有时候有价值的东西不是某一条信息,而是很多信息共同表达出的规律。
例如:
用户 A:每天晚上使用爱奇艺App
用户 B:每天晚上使用爱奇艺App
用户 C:每天晚上使用爱奇艺App
可以蒸馏成:
用户通常在晚上使用 爱奇艺App。
2.3 抽象
再进一步:
10000 个 Bug
↓
大量具体案例
↓
发现共同规律
↓
“遇到应用闪退问题,优先检查崩溃日志”
“遇到应用无响应问题,优先检查ANR trace”
“遇到X类型问题,优先检查Y”
......
这时候蒸馏出来的已经不是原始信息,而是:
知识、经验和方法。
所以蒸馏其实可以理解成:
大量具体信息
↓
筛选
↓
总结
↓
抽象
↓
少量/可复用/更有价值的信息
这也是为什么:
蒸馏不是单纯让东西变小,而是让“价值密度”变高。
三、为什么现在经常说“把同事蒸馏成 Skill”?
这句话听起来很夸张,但其实非常符合我们刚才的定义。
假设团队里有一个非常厉害的同事。
他遇到一个问题,可能会:
先判断问题类型
↓
检查几个关键指标
↓
调用某个工具
↓
按照经验排除几个方向
↓
选择解决方案
↓
验证结果
这些能力可能散落在:
他的经验
他的代码
他的文档
他的历史任务
他的 Prompt
他的工具使用习惯
如果把这些全部保存下来,只是:
把同事的资料存起来。
但如果我们把其中真正可复用的部分提取出来:
优秀同事
↓
提取解决问题的方法
↓
提取判断规则
↓
提取工具使用方式
↓
提取输入输出格式
↓
提取注意事项
↓
构建成Skill
那么我们就可以说:
把同事的能力蒸馏成了 Skill。
所以这里“蒸馏”的不是:
同事这个人。
而是:
同事在某个领域中,可重复、可复用、可执行的能力。
例如一个优秀的 Android 同事很擅长分析 Crash。
他的 Skill 可能最终变成:
Android Crash Analyzer
输入:
- Crash 堆栈
- Log
- 设备信息
分析流程:
1. 判断异常类型
2. 定位业务模块
3. 找到关键调用链
4. 判断根因
5. 给出修复建议
输出:
- Root Cause
- Evidence
- Fix
原来的:
“某个很厉害的人会分析 Crash。”
变成:
“任何 Agent 都可以按照这套方法分析 Crash。”
这就是一种非常典型的:
Experience → Skill Distillation
也可以把它理解成:
把“人的经验”,蒸馏成“机器可以执行的能力”。
这其实也是 Agent 时代 Skill 很重要的原因。
四、放到 AI 里,蒸馏就很好理解了
假设有一个大模型 Teacher。
它看到一张图片:
猫:90%
狗:7%
老虎:3%
普通训练可能只告诉 Student:
答案:猫
但 Teacher 实际上提供了更多信息:
猫 90%
狗 7%
老虎 3%
这里面的概率关系其实包含了 Teacher 对不同类别之间关系的判断。
所以我们可以让 Student 学习 Teacher 的输出分布。
Teacher
│
│ 提取有价值的知识
▼
Student
这就是经典的:
Knowledge Distillation。
再进一步。
如果 Teacher 解决数学问题时经历:
题目
↓
分析条件
↓
建立公式
↓
推导
↓
答案
我们不只让 Student 学最终答案,而是让它学习:
题目
↓
推理过程
↓
答案
那么蒸馏的对象就从:
结果
变成了:
解决问题的方法。
这就是 Reasoning Distillation。
五、其实 Agent 的 Memory 也是一种蒸馏
这也是这个概念最有意思的地方。
一个 Agent 可能经历过:
100 次任务
10000 条对话
100000 次工具调用
如果我们把这些全部保存下来:
这叫“存档”,不一定叫好的 Memory。
因为下一次任务真正需要的可能只有:
用户长期偏好
已经验证的方法
关键决策
重要经验
踩过的坑
于是:
过去的大量经历
│
│ 蒸馏
▼
少量可复用经验
│
▼
Memory
所以:
Memory 并不是简单地保存过去,而是从过去中提取未来值得记住的东西。
这就是 Memory Distillation。
六、用这套方法论看看 OpenClaw 的 Dreaming
到这里,我们已经有了一套判断方法:
蒸馏
│
├── 什么有价值?
│
└── 怎么获取?
那么拿一个真实的 Agent 来验证一下。
OpenClaw 的 Memory 有一个很有意思的机制,叫 Dreaming。
这里几个名字其实非常形象。
Light —— “轻度整理”
Light 的英文就是“轻、光”的意思。
它对应的是记忆整理的轻量阶段,核心作用可以简单理解成:
先把近期产生的大量记忆整理成候选,不急着决定什么值得长期保存。
可以理解成:
近期经历
↓
Light
↓
整理 / 去重 / 形成候选
REM —— “快速眼动”
REM 是 Rapid Eye Movement 的缩写,也就是“快速眼动”,这个名字来自睡眠科学。
在 OpenClaw 的 Dreaming 里,可以把 REM 简单理解成:
把最近发生的一件件事情放在一起看,看看它们背后是不是在反复表达同一个东西。
比如 Agent 最近连续遇到了三个问题:
第一次:
用户问:“怎么修改配置?”
第二次:
用户问:“XX 怎么设置?”
第三次:
用户问:“设置模块在哪里?”
单独来看,这三个问题并不完全一样。
但是把它们放在一起看,就会发现:
怎么修改配置
↓
XX 怎么设置
↓
设置模块在哪里
↓
REM
↓
发现:
用户最近一直在关注“配置/设置”
于是,三次具体的对话,就可以进一步形成一个更抽象的信息:
用户当前正在处理配置相关的问题。
如果后面又连续出现几次类似问题,这个信息就可能进一步变成:
用户经常需要修改这个项目的配置,相关配置文件的位置和修改方式可能值得长期记住。
所以 REM 并不是简单地“总结一次对话”。
它做的是:
把多个具体经历放在一起,从中找出重复出现的内容。
Deep —— “深度整理”
Deep 的意思就是“深”。
如果说 REM 是发现“最近反复发生了什么”,那么 Deep 做的事情就是:
继续往下追问:这些反复出现的事情,背后真正值得记住的是什么?
还是刚才的例子。
最近几次任务里,Agent 分别遇到了:
第一次:
“怎么修改配置?”
第二次:
“设置 XX 怎么设置?”
第三次:
“设置模块在哪个路径?”
REM 发现:
最近的几次任务都和“配置/设置”有关。
但这还不够。
Deep 会进一步整理这些经历,例如发现:
这些问题
↓
都指向同一个配置模块
↓
这个模块的配置文件在 XXX 路径
↓
修改配置通常需要修改 XXX 字段
于是原来的几次具体经历:
怎么修改配置?
设置 XX 怎么设置?
配置模块在哪?
最终可以被提炼成一条更稳定、更容易复用的知识:
XXX 模块的配置文件位于 XXX 路径,相关设置主要修改 XXX 字段。
这就是 Deep 的核心思想:
不是简单保存重复出现的内容,而是把多个具体经历进一步合并、抽象成一条更稳定、更可复用的长期记忆。
它对应更深层次的记忆整合,核心作用是:
判断哪些候选记忆真正值得进入长期记忆,并进行合并、提炼和固化。
于是 OpenClaw 的 Dreaming 可以非常简单地理解成:
经历
↓
Light:整理
↓
REM:找规律
↓
Deep:提取并固化长期价值
↓
Memory
这其实和我们前面总结的蒸馏过程几乎一致:
大量具体信息
↓
筛选
↓
总结
↓
抽象
↓
可复用价值
七、这里还能得到一个更有意思的结论
如果仔细观察 OpenClaw 的 Dreaming,会发现一个很重要的思想:
一条信息今天看起来有价值,不代表它未来真的有价值。
所以真正好的 Memory 系统,不应该只是:
发生
↓
总结
↓
保存
而应该是:
产生经历
↓
形成候选记忆
↓
未来不断使用
↓
观察它是否真的有用
↓
价值被验证
↓
长期保存
也就是说:
真正的蒸馏,不只是“提取价值”,还应该允许未来的使用结果反过来验证价值。
这让我们对蒸馏有了一个更完整的理解:
蒸馏 = 面向下游目标,从大量信息或能力中发现、提取并不断验证真正有价值的部分,最终把它固化成更适合下游使用的形式。
八、最后再看业界各种蒸馏技术
有了这个定义之后,很多技术其实就通了。
只需要问一句:
它到底在蒸什么?
| 蒸馏方式 | 源 | 蒸出的东西 |
|---|---|---|
| Knowledge Distillation | 大模型 | 输出知识 |
| Feature Distillation | 大模型 | 中间表示 |
| Data Distillation | 大量数据 | 高价值训练数据 |
| Reasoning Distillation | 复杂推理 | 推理过程 |
| Context Distillation | 长上下文 | 关键上下文 |
| Memory Distillation | 历史经历 | 可复用经验 |
| Skill Distillation | 人的经验 | 可执行能力 |
| Self-Distillation | 模型自身 | 更好的知识/能力 |
| On-policy Distillation | Student 行为 + Teacher | 针对性纠正 |
表面上它们完全不同。
但背后的问题始终只有两个:
什么值得留下?
怎么把它留下来?
所以我们最终可以用一句话理解整个 Distillation:
蒸馏,不是把东西简单变小,而是从“大而全”中找到对目标真正有价值的部分,让“价值密度”变高。
而这也解释了为什么今天的 Agent 越来越需要蒸馏:
经历越来越多
↓
上下文越来越长
↓
信息越来越杂
↓
不能什么都记
↓
必须判断什么值得留下
↓
Memory / Context / Skill / Experience Distillation
当一个 Agent 开始学会从自己的经历中,只留下对未来真正有用的东西时,它才真正开始学会积累“经验”。