4B 小模型追平 GPT-5-mini:把教师 Agent 的记忆拆成三层再喂给学生
你有没有想过一个问题:为什么 Agent 记忆这套东西,在大模型身上玩得风生水起,一到小模型身上就失灵了?
Reflexion、ExpeL、ReasoningBank、MemP……这两年 Agent 记忆的工作一抓一大把,但翻一翻它们的实验设置,跑的基本都是 GPT-4、Gemini 2.5 这个量级的模型。换成 4B、8B 的小模型当 Agent,记忆机制突然就不灵了——原因很朴素:小模型自己成功率太低,攒出来的记忆库里全是失败轨迹,能从"失败堆里"学到的成功经验少得可怜。
那直接拿大模型的记忆来喂小模型行不行?KAIST 这篇 AMD(Agent Memory Distillation,arXiv 2608.07169)试了,结论是:直接搬也不行。教师记忆写的是"先登录再播放歌单",小模型看完一脸懵——"登录?怎么登录?"这就是典型的 capability gap,和传统知识蒸馏里 teacher-student gap 是同一个病。
AMD 开的药方是把教师经验拆成三个粒度层级:任务级的工作流、子任务级的执行范例、函数级的调用手册,然后分时机注入。效果相当能打:Qwen3-4B 在 AppWorld 上从 14.88% 涨到 49.40%,涨了 34.5 个点,几乎追平教师 GPT-5-mini 的 50.00%;Gemma4-E4B 和 Qwen3-8B 甚至直接反超教师。全程不用训练,纯推理时注入。
📖 论文信息
- 标题:Agent Memory Distillation: Empowering Small LLM Agents with Hierarchical Teacher Memory
- 作者:Taeil Kim、Kangsan Kim(共同一作)、Sung Ju Hwang
- 机构:KAIST、DeepAuto.ai
- 链接:https://arxiv.org/abs/2608.07169 (2026 年 8 月 7 日)
- 项目页:https://agent-memory-distillation.github.io/
🎯 核心摘要
小模型 Agent 用记忆机制的老大难是"自己不行,攒不下好经验"。这篇论文的破局思路不是让小模型自己进化,而是把强教师 Agent(GPT-5-mini)的成功轨迹蒸馏成分层记忆库,直接转移给学生。关键在于"分层"——他们发现朴素的教师记忆转移几乎不涨分,因为大模型的高阶策略对小模型来说太抽象了。于是 AMD 把教师经验拆成 Workflow(任务级策略)、Subtask(子任务级执行范例)、Function(函数级调用细节)三层,前两层在任务开始时主动注入,最后一层在工具调用报错时被动触发。在 AppWorld、BFCL V3、ToolSandbox 三个工具使用基准上,四个 4B-8B 学生模型平均提升 27.2、11.2、3.4 个百分点,全面碾压 ReasoningBank、MemP、SASM 三个记忆基线。我的判断:这是一篇定位清晰的"问题定义型"工作,方法本身谈不上多复杂,但它第一次系统性地把"教师-学生记忆蒸馏"这个问题摊开讲清楚了,消融做得扎实,对做端侧 Agent 的团队有直接参考价值。
🧠 问题动机:小模型的记忆困境
先把论文 Figure 1 摆出来,这张四格图把整篇文章的逻辑讲得明明白白。

图1:(A)小模型自己攒记忆,失败轨迹太多,自进化收益有限;(B)直接搬教师记忆,能力鸿沟导致学生"看不懂";(C)AMD 把教师经验拆成任务工作流、子任务执行、函数调用三层;(D)Qwen3-4B 在三个基准上的提升幅度
拆开看这四格:
第一格是痛点。小模型任务成功率低,记忆库里失败案例占主导。失败反思当然有用,但"成功经验稀缺"这个天花板是绕不过去的。我之前做小模型工具调用的时候也碰到过类似情况——让它自己总结规律,总结出来的经常是"如何避免上次那种错",而不是"正确的做法长什么样"。
第二格是 naive 方案的失败。既然学生自己攒不出好记忆,那用教师的总行吧?论文试过了:直接把教师记忆塞给学生,提升微乎其微,跟用学生自己的烂记忆差不多。原因藏在例子里——教师记忆写"Log in before playing music",学生的问题却是"How can I log in?"。教师的策略对学生来说粒度太粗,前置知识全是缺的。加上小模型 in-context learning 和指令遵循能力本来就弱,大段教师经验塞进去反而变成噪声。
这个观察我觉得是全文最有价值的部分。很多工作默认"高质量数据喂进去总没坏处",AMD 用实验告诉你:质量高不等于能消化,蒸馏的痛点不在数据源,在表示形式。
第三格是解法:分层。这个我们下一节细说。
第四格是结果:AppWorld 上 AMD 直接把 Qwen3-4B 拉到接近教师的水平,柱状图里 AMD 的柱子和 Teacher 的灰柱几乎一样高。
🏗️ 方法核心:三层记忆,两种注入时机
AMD 的整体框架看 Figure 2。

图2:左半边是教师侧——跑完任务后从成功轨迹生成三层记忆;右半边是学生侧——Workflow 和 Subtask 记忆在任务开始时主动注入系统提示词,Function 记忆在工具报错时被动检索注入
形式化一下问题:教师 Agent \(\pi^T\) 在任务集 \(\mathcal{S}\) 上跑出轨迹集 \(\mathcal{D}^T\),从成功子集 \(\mathcal{D}^T_+\) 构建记忆库 \(\mathcal{M}\),学生 \(\pi^S\) 推理时检索使用。优化目标是:
说白了就是:不动任何参数,只设计记忆库的内容和组织方式,让学生的任务成功率最大化。这个目标和传统蒸馏最大的区别是——蒸馏的载体从模型权重变成了外部记忆。
三层记忆分别装什么
Workflow Memory(工作流记忆)——任务级。每条成功轨迹提炼一段自然语言 insight,讲清楚整体策略:涉及哪些 app 和工具、关键前置条件、决策规则、常见失败模式。有个细节我很喜欢:具体的运行时值(用户 ID、凭证、文件路径)全部替换成类型化占位符如 <ID>、<EMAIL>,这样记忆才能跨任务泛化。每条记忆是 \((q_i, \text{ins}_i)\)——任务描述 + 策略洞察,编码成向量供检索。
Subtask Memory(子任务记忆)——中间粒度,后来被证明是最关键的一层。教师 LLM 把每条成功轨迹切成语义连贯的片段(最多六段),比如"认证 Venmo 账户"、"汇总本月交易金额"。每段存三样东西:标签 \(\ell\)、一句话描述 \(d\)、具体的执行范例 \(e\)——就是教师当时的真实工具调用代码和返回结果。注意这个设计:不是抽象描述,是可执行的代码范例。
Function Memory(函数记忆)——最细粒度。按函数名索引,每条记录是 \((f, E, \text{doc}(f))\):函数名、教师的成功调用范例(含上下文,能看出为什么在这里调、参数受什么约束)、可选的 API 文档。AppWorld 这种文档丰富的基准会附 schema,BFCL 和 ToolSandbox 只用具体范例。
注入时机的讲究
三层记忆不是一股脑全塞进上下文,而是分两种时机:
| 记忆类型 | 注入时机 | 检索方式 | 类比 |
|---|---|---|---|
| Workflow | 任务开始前(主动) | 任务指令做 query,top-1 | 出发前看地图 |
| Subtask | 任务开始前(主动) | 学生先拆出至多 6 个子任务标签,每个标签各查 top-1,去重 | 每段路程的导航 |
| Function | 工具报错时(被动) | 按报错函数名查,多条则按相似度排序取 top-1 | 抛锚了才翻维修手册 |
这个"被动注入"的设计挺聪明。Function 记忆只在出错时出现,成功执行时不膨胀上下文——对小模型来说,上下文里无关内容越多越容易被带偏,这一点后面的检索数量实验会再次印证。
🧪 实验结果:数字说话
实验配置:教师 GPT-5-mini;学生四个——Qwen3-4B、Qwen3-8B、Gemma4-E4B、Llama3.1-8B;记忆编码用 text-embedding-3-small;所有记忆类型 top-1 检索。三个基准:AppWorld(168 题,多应用 Python API 交互)、BFCL V3(200 题多轮函数调用)、ToolSandbox(129 题有状态对话式工具使用)。
主实验
| 方法 | AppWorld | BFCL V3 | ToolSandbox | 平均 |
|---|---|---|---|---|
| GPT-5-mini(教师) | 50.00 | 36.50 | 28.68 | 38.39 |
| Qwen3-4B Zero-shot | 14.88 | 15.50 | 16.28 | 15.55 |
| + ReasoningBank | 10.71 | 24.25 | 16.28 | 17.08 |
| + MemP | 16.67 | 28.25 | 14.73 | 19.88 |
| + SASM | 15.48 | 15.25 | 18.22 | 16.32 |
| + AMD | 49.40 | 38.50 | 20.16 | 36.02 |
| Gemma4-E4B Zero-shot | 24.40 | 37.25 | 18.22 | 26.62 |
| + AMD | 54.17 | 46.00 | 21.71 | 40.63 |
| Qwen3-8B Zero-shot | 25.60 | 38.00 | 20.16 | 27.92 |
| + AMD | 51.79 | 45.50 | 25.58 | 40.96 |
| Llama3.1-8B Zero-shot | 8.93 | 9.00 | 5.43 | 7.79 |
| + AMD | 27.38 | 14.50 | 6.20 | 16.03 |
表1:主实验结果,Δ 为 AMD 相对 Zero-shot 的绝对提升
几个值得停一秒的点。
基线记忆方法集体翻车或勉强打平。ReasoningBank 在 Qwen3-4B 的 AppWorld 上把准确率从 14.88% 干到 10.71%——倒挂。MemP 和 SASM 在不同模型上忽正忽负。这直接验证了论文的核心论点:扁平的、没有按学生能力分层组织的教师记忆,对小模型是噪声不是营养。
学生反超教师。Gemma4-E4B 在 AppWorld 拿 54.17%,Qwen3-8B 拿 51.79%,都超过 GPT-5-mini 的 50.00%;平均分上 Gemma4-E4B(40.63)和 Qwen3-8B(40.96)也压过教师的 38.39。论文的解释是学生不是简单模仿,而是把教师的决策模式用自己的归纳偏置重新实例化。说实话这个解释有点事后合理化——更朴素的原因是记忆库本身包含了正确答案的高浓度信息,学生相当于"开卷考试",超过闭卷的教师并不奇怪。这不削弱结论的价值,但值得说清楚。
ToolSandbox 提升最小(平均只涨 3.4 个点)。这个基准是 LLM 模拟用户的多轮对话式工具使用,考验的更多是交互和状态跟踪,静态记忆的边际收益自然低。论文没有回避这个点,挺好的。
交互效率

图3:AppWorld 上 Zero-shot 学生步数远超教师(Qwen3-4B 约 23.8 步对教师 10.1 步),AMD 把学生步数压到 14.9;BFCL V3 上 Zero-shot 本来就和教师接近,AMD 维持不变
除了涨分,AMD 还让学生的行为模式向教师靠拢:AppWorld 上 Qwen3-4B 从 23.8 步压到 14.9 步,Gemma4-E4B 甚至压到 7.2 步(比教师还少)。论文的说法是 AMD 不只转移"做什么",还转移了"多高效地做"。这个结论从图上看是成立的。
消融:Subtask 记忆是最大功臣
| 配置 | Qwen3-4B AppWorld | Qwen3-4B BFCL |
|---|---|---|
| Zero-shot | 14.88 | 15.50 |
| WF | 22.02 | 35.50 |
| WF + FN | 24.11 | 35.50 |
| WF + ST | 47.02 | 37.50 |
| WF + ST + FN(完整 AMD) | 49.40 | 38.50 |
| Student Memory(学生自产记忆) | 16.07 | 27.00 |
表2(节选):消融实验,Qwen3-4B 上加入 Subtask 记忆带来 25 个点的单步最大涨幅
两个信息。其一,Workflow 打底、Subtask 贡献最大增量、Function 锦上添花,这个排序在几乎所有模型和基准上都成立——中间粒度的具体执行范例是长程任务里最缺的知识。其二,Student Memory 那行基本贴着 Zero-shot,证明涨分确实来自"教师轨迹的质量",不是记忆机制本身的玄学。
教师选择:越强不一定越好
| 教师 | 教师自身 Acc | Qwen3-4B 学生 | Qwen3-8B 学生 |
|---|---|---|---|
| Zero-shot | - | 14.88 | 25.60 |
| GPT-5.5 | 91.08 | 47.02 | 58.93 |
| DeepSeek V4 Pro | 81.55 | 38.10 | 57.14 |
| GPT-5-mini | 50.00 | 49.40 | 51.79 |
| Qwen3-32B | 34.42 | 29.76 | 39.29 |
表3:AppWorld 上换教师的实验
这个表很有意思。对 8B 学生,教师越强学生越强,排序完美正相关。但对 4B 学生,排序崩了——准确率 91.08% 的 GPT-5.5 教出来的学生(47.02)反而不如 50.00% 的 GPT-5-mini(49.40),DeepSeek V4 Pro 更是掉到 38.10。蒸馏效果不只取决于教师能力,还取决于师生"兼容性"。这和传统蒸馏里 teacher assistant(Mirzadeh et al. 2020)的发现遥相呼应——差距太大,知识反而传不过去。论文把这列为 open problem,我觉得这是全文最值得跟进的方向:给定一个学生,怎么选最匹配的教师?
学生规模与检索数量

图4:Qwen3 家族 1.7B 到 14B,AMD 准确率随规模上升(21.43 → 49.40 → 51.79 → 52.68),但相对提升幅度在 4B 处达峰(34.5 个点)

图5:k=1 对三类记忆都是最优或接近最优;Subtask 记忆从 k=1 到 k=5 准确率从 49.40% 单调跌到 33.34%
这两张图放在一起读,能读出 AMD 的适用边界:4B 是甜点区——能力够消化记忆,基数又低、提升空间大;1.7B 太弱消化不了,8B 以上基数高了边际收益递减。而 k=1 最优这个结论更是给小模型记忆注入立了条规矩:精准胜过宽泛,多塞低排名的记忆只会引入干扰。
记忆表示形式
| Workflow | Subtask | Function | AppWorld Acc |
|---|---|---|---|
| Code | Code | Code | 44.05 |
| Text | Code | Code | 49.40 |
| Text | Text | Code | 23.21 |
| Text | Code | Text | 47.62 |
| Text | Text | Text | 26.19 |
表4:记忆表示消融——高层策略用自然语言,低层执行用代码,是最优组合
Subtask 从代码换成自然语言,准确率从 49.40% 崩到 23.21%——掉了 26 个点,是所有消融里最狠的一刀。道理也直白:小模型照着可执行代码抄最可靠,抽象描述它转化不动。高层规划反过来,自然语言比代码更泛化。粒度决定表示形式,这个结论对任何做 Agent 记忆的人都有参考价值。
稳健性:会不会是"背答案"?
主实验里记忆构建和评测用的是同一批任务,一个自然的质疑是:学生会不会只是检索到了"原题的答案"?论文在附录 B.3 做了两组对照:cross-split(7:3 切开,记忆只用 70% 的任务构建)和 self-excluded retrieval(全量建库但每题禁用自己的记忆)。结果在两种协议下 WF+ST+FN 都稳定超过 Zero-shot,AppWorld 上 self-excluded 拿到 46.43%,接近主实验的 49.40%。另外五次重复实验的标准差都在 1 个点以内(AppWorld 49.60 ± 0.91)。这两个补丁打得扎实,把最明显的质疑堵上了。
案例研究
论文 Figure 6 给了一个 AppWorld 案例:批准本月所有待处理的 Venmo 付款请求并把余额提现到指定卡。三层记忆像接力一样各解决一个坑——没记忆时模型搞错时间范围;Workflow 注入时间约束后,又卡在 datetime 解析的兼容性问题上反复自修复耗尽步数;Subtask 记忆给了验证过的解析模式后,提现阶段又报运行时错误;最后 Function 记忆给出正确的 API 用法,任务才完整跑通。这个案例把"三层缺一不可"讲得挺有说服力。
🤔 我的判断
这篇论文最值钱的地方:它把"教师-学生记忆蒸馏"作为一个独立问题立起来了。之前的记忆工作默认同模型自进化,蒸馏工作默认要训练,AMD 在中间开出一条 training-free 的路,并用扎实的消融回答了"怎么蒸馏才有效"——分层、按粒度选表示、精准检索、被动注入。每一条单看都不惊艳,合起来是一套完整的工程配方。
几个需要泼冷水的地方。
其一,主实验的记忆构建集和测试集是同一个基准的同一批任务(test_normal 的 168 题,教师也在这 168 题上跑过)。虽然附录的 disjoint 协议证明增益不依赖"背原题",但 46.43 vs 49.40 之间还是有 3 个点的差距,说明同分布记忆确实占了一部分便宜。真实部署里教师轨迹和新任务的分布差距只会更大,这个 gap 会放大多少,论文没回答。
其二,ToolSandbox 上只涨 3.4 个点,且论文自己也承认只验证了文本类工具调用场景。多模态、开放代码生成(如 SWE 任务)这些动作空间不固定的场景,三层记忆的设计能不能平移,完全未验证。Function 记忆依赖"按函数名索引",在开放式代码生成里这个索引方式直接失效。
其三,教师兼容性的发现(4B 学生配弱教师反而更好)很有意思但也暴露了一个尴尬:实践中你很难事先知道哪个教师配哪个学生,可能得逐个试,而每试一次就要让教师在完整任务集上跑一遍——这个成本论文没有核算。
跟同期工作比:AgentDistill(复用教师 MCP)也是 training-free,但不转移记忆;Memory Transfer Learning 研究跨模型记忆迁移但不在蒸馏设定下。AMD 在问题定位上确实是更完整的那一个。如果对知识蒸馏史熟悉的话,这个分层设计其实是 teacher assistant 思想在记忆空间的翻版——用中间粒度弥合能力鸿沟。思路不算全新,但落地得干净利落。
工程启发:如果你在做端侧小模型 Agent,这套配方几乎可以直接抄——教师跑一遍任务集,三层记忆建库,推理时 k=1 精准注入,Function 记忆挂在错误回调上。不需要训练管线,不需要 RL,成本就是教师 API 调用费加一次性的记忆构建。比起 SFT 蒸馏,这条路的数据飞轮轻得多。
觉得有启发的话,欢迎点赞、在看、转发。跟进最新AI前沿,关注我