技能到底该"记住"还是"带着"?Skill0.5 给出了一个折中但有效的答案
你有没有碰到过这种情况——给智能体配了一堆技能文档,训练的时候表现不错,一旦换到新任务域就彻底拉胯?或者反过来,把技能全蒸馏进模型参数里,结果新技能来了它根本不听,还在用旧模板硬套?
这其实是当前 Agent RL 领域一个很核心的两难困境:技能到底该外部化(放在 prompt 里随时查阅)还是内化(压进模型权重里)?两个极端都有明显的毛病。今天聊的这篇 Skill0.5,给出了一个"各取所长"的方案——通用技能内化,任务特定技能外部利用,中间靠一个动态难度路由器来调度。
🎯 核心摘要
痛点:现有基于技能的智能体 RL 方法在"完全外部化"(上下文爆炸、推理退化)和"完全内化"(过拟合、知识冲突)之间做刚性二选一,导致 OOD 泛化能力差。
方案:Skill0.5 将技能按功能解耦为通用技能和任务特定技能,通过难度感知路由器将任务分为 Hard/Medium/Easy 三档,分别施加特权蒸馏、标准 GRPO、反捷径利用三种定制优化策略。
效果:在 ALFWorld 上 OOD 泛化比最强基线 SkillRL 绝对提升 13.2 个点(45.3% → 58.5%),WebShop 上提升 3.9 个点。ID 性能同样领先。
判断:这是一篇工程整合做得很扎实的工作。核心 insight(通用技能该内化、特定技能该外部利用)直觉上很合理,三档路由的设计也足够简洁。OOD 提升幅度确实能打,但目前只在文本交互环境验证,离真实复杂场景还有距离。
📖 论文信息
- 标题:Skill0.5: Joint Skill Internalization and Utilization for Out-of-Distribution Generalization in Agentic Reinforcement Learning
- 作者:Jiapeng Zhu, Jianxiang Yu, Yibo Zhao, Chengcheng Han, Qi Gu, Xunliang Cai, Xiang Li, Weining Qian
- 机构:华东师范大学、美团 Longcat 团队
- arXiv:2605.28424
- 代码:https://github.com/JasonZhujp/Skill0_5
- 日期:2026年5月27日
🧠 问题动机:两个极端,都不好使
先快速理清背景。当前让 LLM Agent 解决复杂任务的一个热门范式是给它配"技能"——把程序性知识封装成模块化的文本指令。比如在家居环境中,"先找到目标物体,再导航到目的地,最后执行放置动作"就是一个技能。
问题在于,这些技能在训练和推理时怎么用?目前有两个极端:
完全外部化(SkillRL 路线):所有技能都塞进 prompt 里,训练和推理时都带着。好处是灵活——换新技能直接替换就行。坏处是 prompt 越来越长,LLM 的上下文学习能力会退化,推理质量下降。
完全内化(SKILL0 路线):通过课程学习把技能逐步从 prompt 中撤除,最终全部压进模型参数。好处是推理时不需要额外上下文。坏处是——模型容量有限,新技能和旧技能可能打架;更致命的是,推理时遇到全新的 OOD 技能,模型可能根本不理会,还在用内化的旧模板。
我之前在做类似的 Agent 项目时也碰到过这个问题:技能文档太长模型会"走神",但不给又不行。Skill0.5 的思路是——别一刀切,先想清楚哪些技能该记住,哪些该临时查。
🏗️ 方法核心:功能解耦 + 难度路由 + 三档优化
技能的功能解耦
Skill0.5 的第一个关键观察是:智能体技能天然分两类。
| 类型 | 特征 | 例子 | 处理方式 |
|---|---|---|---|
| 通用技能 | 领域无关、上下文长、稳定不变 | "系统性探索环境"、"错误恢复策略" | 内化到参数 |
| 任务特定技能 | 细粒度执行规则、动态更新、域相关 | "加热后直接导航到目的地放置" | 推理时外部检索 |
这个分类直觉上很合理。通用技能就像你学会了"怎么思考问题",这种能力应该内化成本能;任务特定技能就像操作手册,用的时候翻一翻就行,没必要全背下来。
整体框架

图1:Skill0.5 的两阶段框架。Phase-1 通过 rollout 采样和滑动窗口阈值将任务路由到 Hard/Medium/Easy 三个层级;Phase-2 对不同层级施加定制优化——困难任务用特权蒸馏、中等任务用标准 GRPO、简单任务用反捷径利用机制。
框架分两个阶段:
Phase-1:难度感知路由——先用标准提示(只含检索到的特定技能)对每个任务采样多条轨迹,根据经验通过率把任务分成三档。
Phase-2:层级定制优化——对不同难度的任务施加不同的训练策略。
Phase-1:怎么判断任务难度?
方法很直接:对每个任务 \(x_i\),在标准提示下采样 \(G\) 条轨迹,计算通过率:
然后用滑动窗口维护一个动态阈值 \(\eta_t\),路由规则是:
- \(p_i = 0\) → Hard(完全做不出来)
- \(0 \lt p_i \leq \eta_t\) → Medium(偶尔能做对)
- \(p_i > \eta_t\) → Easy(大部分时候能做对)
动态阈值的好处是:随着训练推进,模型变强了,"简单"的标准也水涨船高。
Phase-2:三档优化策略
困难任务:特权蒸馏
当任务通过率为零时,说明智能体缺乏基础推理能力。这时候把通用技能作为"特权信息"加回 prompt,让模型在丰富上下文下重新尝试——这相当于一个"开卷考试"的教师版本。
过滤出成功轨迹后,用 token 级 Jensen-Shannon 散度对齐教师(有通用技能)和学生(无通用技能)的输出分布:
这里用 JSD 而不是 KL 散度,我觉得是个不错的选择——JSD 是对称的,数值更稳定,不会出现 KL 那种一边趋近零时梯度爆炸的问题。
中等任务:标准 GRPO
直接复用 Phase-1 的轨迹做标准 GRPO 优化,没什么花活。这部分任务模型已经有一定能力了,正常强化就行。
简单任务:反捷径利用(最有意思的部分)
这里的设计我觉得是全文最精巧的地方。
问题是什么?当任务变得"太简单"后,模型可能在走捷径——它不是真的在利用检索到的特定技能来做决策,而是直接记住了"看到这种任务指令就输出这种动作"的虚假映射。这种捷径学习在 ID 上看不出问题,但一到 OOD 就暴露了。
怎么检测捷径?引入一个反事实诊断探测:把特定技能全部撤掉(\(c_t^{none} = \emptyset\)),让模型"裸考"。如果有技能和没技能的通过率差不多(\(u_i = p_i - p_i^{none}\) 很小),说明模型根本没在用技能,是在走捷径。
然后构造一个复合优势:
当检测到捷径学习时,\(A_i^u\) 为负,全局抑制该任务的优化梯度。这相当于告诉模型:"你做对了但方式不对,不奖励你。"
🧪 实验结果
主实验:ALFWorld
| 方法 | 类型 | ID Avg. | OOD Avg. |
|---|---|---|---|
| Zero-shot | 提示 | 20.7 | 18.9 |
| Few-shot | 提示 | 57.5 | 24.5 |
| Reflexion | 记忆 | 60.9 | 34.0 |
| GRPO | RL | 80.5 | 43.4 |
| SimpleMem+GRPO | 记忆+RL | 71.3 | 47.2 |
| SkillRL | 技能+RL | 90.8 | 45.3 |
| SKILL0 | 技能+RL | 85.1 | 39.6 |
| SLIM | 技能+RL | 82.8 | 35.8 |
| Skill0.5 | 技能+RL | 93.1 | 58.5 |
OOD 上从 45.3% 到 58.5%,绝对涨了 13.2 个点。这个幅度在 ALFWorld 这种环境上是相当显著的。
主实验:WebShop
| 方法 | ID Avg. | OOD Avg. |
|---|---|---|
| GRPO | 33.6 | 32.3 |
| SkillRL | 38.3 | 36.7 |
| SKILL0 | 35.2 | 35.4 |
| SLIM | 33.7 | 33.8 |
| Skill0.5 | 40.4 | 40.6 |
WebShop 上提升相对温和一些,OOD 涨了 3.9 个点。不过注意一个有意思的现象——Skill0.5 的 ID 和 OOD 性能几乎持平(40.4 vs 40.6),说明它确实学到了泛化能力,而不是在 ID 上过拟合。
训练动态分析

图2:四种方法在 ALFWorld 上的训练动态。(a) 训练集成功率;(b) ID 验证集成功率;(c) OOD 验证集成功率。Skill0.5(蓝线)在三个维度上都保持稳定上升,而 SkillRL(红线)出现明显的过拟合——训练集飙升但 OOD 后期下降。
这张图很能说明问题:
- SkillRL(红线):训练集成功率飙到接近 1.0,但 OOD 验证集在 step 80 之后开始下降——典型的捷径学习导致的过拟合。
- SKILL0(绿线):OOD 上始终被压制在较低水平,完全内化策略太刚性了。
- SLIM(橙线):剧烈振荡,说明过早退役通用技能导致训练不稳定。
- Skill0.5(蓝线):三个维度都稳定上升,OOD 上持续改善没有衰减。
路由比例变化

图3:训练过程中 Hard/Medium/Easy 任务比例的动态变化。ALFWorld 上 Hard 任务从初始约 40% 逐步降至接近 0%,Easy 任务占比稳步上升;WebShop 由于任务本身更难,Hard 任务比例下降更缓慢。
这张图验证了路由器的合理性——随着训练推进,模型能力增强,困难任务自然减少,简单任务增多。路由器不是静态的标签,而是动态反映模型当前能力水平。
消融实验
| 变体 | ID Avg. | OOD Avg. |
|---|---|---|
| Internalize-Only(只做特权蒸馏) | 89.6 | 52.8 |
| Utilize-Only(只做反捷径利用) | 85.1 | 50.9 |
| Skill0.5(完整版) | 93.1 | 58.5 |
两个关键结论:
- 内化是前提:Utilize-Only 在 ID 和 OOD 上都大幅下降。没有基础推理能力,给再多特定技能也没用。
- 利用解锁 OOD 峰值:Internalize-Only 的 OOD 从 58.5% 降到 52.8%。光有基础能力但不强制模型利用新技能,OOD 泛化还是会打折。
🔬 案例分析:三种失败模式
论文给出了三个很有说服力的案例,展示了不同方法的失败机制:
Case 1(SkillRL 的上下文干扰):任务是"把热土豆放冰箱",OOD 技能说"加热后直接导航到目的地放置"。SkillRL 成功加热后到了冰箱,却执行了"cool potato"——因为 ID 训练中"fridge"和"cool"的关联太强了,覆盖了 OOD 技能的指令。Skill0.5 只用 7 步就完成了,没有这种干扰。
Case 2(SKILL0 的参数知识冲突):任务是"用台灯照碗",OOD 技能说"到台灯后执行 use desklamp"。SKILL0 激活了内化的 Pick&Place 模板,反复尝试拿起台灯——内化的旧知识和新指令直接冲突。
Case 3(SLIM 的行为崩溃):Step 85 还能成功完成任务,到 Step 120 就完全崩了——开始产生任务幻觉,推理关于"cd"而任务是"pillow"。原因是通用技能"系统性探索"在 step 5 就被退役了,后续推理基础丧失。
💡 我的判断
亮点:
- 技能功能解耦的思路很清晰,通用技能内化 + 特定技能外部利用的设计直觉上就对。
- 反捷径利用机制是全文最有价值的贡献——通过反事实诊断来检测模型是否真的在"用"技能,这个思路在其他场景(比如 RAG 中检测模型是否真的在利用检索结果)也有迁移价值。
- 实验设计很完整,ID/OOD 分离评估、训练动态分析、消融、案例研究都有。
值得商榷的地方:
- 难度判断完全基于经验通过率,这在任务数量少的时候可能不够稳定。\(G=8\) 条轨迹的采样量对于判断"通过率为零"是否足够?有没有可能只是运气不好?
- 目前只在 ALFWorld 和 WebShop 两个文本交互环境验证。这两个环境的动作空间相对受限,任务结构也比较规整。在更开放的环境(比如真实网页导航、代码生成)中,通用技能和特定技能的边界是否还这么清晰?
- 通用技能和特定技能的划分目前是人工预定义的。如果技能库规模大了,这个划分本身可能需要自动化。
工程启发:
如果你在做 Agent 系统,Skill0.5 的反捷径利用思路值得借鉴——在训练过程中周期性地做"无辅助测试",检测模型是否真的在利用你提供的外部信息,而不是在走捷径。这个诊断方法成本不高但信息量很大。
📊 实现细节速查
| 配置项 | 值 |
|---|---|
| 基座模型 | Qwen2.5-7B-Instruct |
| 优化骨干 | GRPO |
| 学习率 | 1e-6 |
| 组采样大小 | 8 |
| 批大小 | 16 |
| 滑动窗口 W | 5 |
| 技能检索 Top-K | 3 |
| 嵌入模型 | Qwen3-Embedding-0.6B |
| 硬件 | 4×H800 |
| 训练步数 | 120(ALFWorld)/ 150(WebShop) |
🔗 相关工作定位
把 Skill0.5 放在技能增强 Agent RL 的谱系里看:
| 方法 | 核心思路 | 优势 | 劣势 |
|---|---|---|---|
| SkillRL | 全程带技能 prompt | 灵活、OOD 时能注入新技能 | 上下文过长导致推理退化、捷径学习 |
| SKILL0 | 渐进撤除技能,完全内化 | 推理时零开销 | 过拟合 ID 模式、OOD 新技能无法利用 |
| SLIM | 选择性退役技能 | 兼顾内化和利用 | 退役时机难把握、训练不稳定 |
| Skill0.5 | 功能解耦 + 难度路由 + 三档优化 | OOD 泛化强、训练稳定 | 需要人工划分技能类型 |
坦率地讲,Skill0.5 的核心创新不在于某个单一组件的突破,而在于把"功能解耦"这个认知科学启发的 insight 和三种已有技术(蒸馏、GRPO、反事实诊断)组合得很自然。这种"正确的组合"本身就是一种贡献。
觉得有启发的话,欢迎点赞、在看、转发。跟进最新AI前沿,关注我