论文链接:SKILLER: Language-Level Reinforcement Learning for Reusable Skill Extraction in Small Language Models 代码仓库:github.com/DANG-ai/SKILLER 发表时间:2026年8月(投稿 AAAI 2027) 机构:Chenhao Dang、Siyuan Xiong、Conghui He(通讯)、Weijia Li(通讯) 领域标签:cs.AI / Agent 技能学习 / 语言级强化学习
一、论文背景
1.1 Agent Skill 是什么
如果你用过 Claude Code 或类似的编程智能体,你可能会注意到一个叫"Skill"的东西。它本质上是一份岗位操作手册:一个 Markdown 文件(通常叫 SKILL.md),里面写着"做这类任务时,请按以下步骤执行、调用这些工具、遵守这些约束"。它不是普通的 prompt,而是打包了程序性知识、工具调用约定和领域专业知识的标准化格式,在智能体系统(论文中称为 harness,即包裹模型的智能体循环框架)中持续约束模型的行为空间,让任务执行可重复、高质量。
与 MCP 等工具协议的区别在于:MCP 给智能体"新的手"(可调用的连接),Skill 给智能体"新的操作手册"(如何使用这些手做事的 know-how)。Anthropic 在 2025 年将其开放为标准格式,技能成了版本化、可复用、可组合的一等公民。
1.2 为什么要给"小模型"做技能
技能的价值主张很直接:强闭源模型(如 GPT-5.4)推理成本高昂,用它跑 Codex、OpenClaw 这类 harness 完成真实任务,账单很快变得不可承受。而消费级 GPU 就能部署的开源小模型(9B、4B)能力提升很快——如果能用技能约束住它们的行为空间,让"小模型 + 好手册"逼近"大模型裸奔",成本可以砍掉几个数量级。
1.3 核心困难:技能不是写给谁都能用的
但这里有一个被论文反复强调的关键洞察:技能是 executor-specific(执行者特定)的。一份给 GPT-5.4 看的操作手册,直接塞给 9B 小模型往往无效甚至有害——论文实验里,人类专家编写的技能在 Qwen3.5-9B 上把 SkillsBench 从无技能基线提升了不到 9 分,闭源系统 Manus 生成的技能甚至在一些场景低于无技能基线。原因不难理解:手册里写着"理解需求后设计测试用例再编码",大模型知道怎么做,小模型不知道;给小学生的教案必须写得比给研究生的更细、更机械、更可执行。
问题在于,人工为每个小模型定制技能不可扩展,而现有的自动技能生成方法(详见第二部分)都假设执行者能力较强,或者依赖不接地气的信号(如纯 LLM 自评)来迭代技能,导致技能质量与具体执行者的真实失败模式脱节。这就引出了本文的研究问题:如何自动为指定的小模型生成真正适配它的可复用技能?
二、论文定位和关联工作
2.1 技能学习的谱系
(1)技能库与终身学习线:Voyager(2023)。Voyager 是技能学习方向的开山之作,在 Minecraft 中让 GPT-4 自主探索、把成功的可执行代码存入技能库供复用与组合。它的技能是代码,服务于特定游戏环境;且技能获取靠"探索—成功即入库",没有针对特定执行者的系统性优化。
(2)口头强化学习线:Reflexion(2023)。提出"verbal RL":智能体失败后用自然语言写反思,注入下次尝试的上下文。但 Reflexion 的反思只存在于单次任务记忆中,没有持久化、版本化的技能工件。
(3)文本梯度优化线:TextGrad / GEPA(2024–2025)。TextGrad 把 PyTorch 自动微分的概念搬到文本空间,用 LLM 互相批评产生自然语言"梯度"来优化 prompt、代码等工件。这条线证明了文本工件可以被优化,但优化目标多为单轮生成质量,优化信号缺乏环境接地的因果归因——它知道"不好",却很少知道"从哪一步开始错了"。
(4)Agent Skill 工程线:Anthropic Skills / 各类 harness。把技能工程化为标准格式与渐进披露机制(防止长上下文淹没),但技能内容主要靠人写或靠强模型一次性生成,缺少面向弱执行者的迭代适配。
2.2 同期技能生成方法(论文的 baseline)
- Manus:闭源系统的技能生成,代表"强模型直接写技能"路线;
- AutoSkill:开源自动技能生成;
- EvoSkill:进化式技能迭代;
- SkillX:技能进化方法,是本文最强的开源 baseline。
这些方法的共同局限:技能生成信号要么不接地(自评),要么不针对具体执行者的失败模式,要么采用无界的整体重写导致技能越改越糟。
2.3 本文定位
SKILLER 处在这几条线的交汇点上:用 RL 的系统性迭代(区别于一次性生成),优化文本技能工件(承接 TextGrad),但优化信号来自真实环境执行 + 官方验证器 + 参考轨迹因果对比(区别于自评信号),且优化目标是特定小执行者的适配(区别于所有前序工作)。
| 维度 | 之前路线 | SKILLER 的突破 |
|---|---|---|
| 优化对象 | 模型权重(传统 RL)或单轮 prompt(TextGrad) | 可版本化、可复用的技能文本包 |
| 反馈信号 | 自评 / 标量奖励 / LLM 互评 | 验证器标量奖励 + 文本诊断 + 参考轨迹因果对比 |
| 执行者适配 | 假设执行者较强 | 显式以小模型为环境,针对其失败模式优化 |
| 编辑方式 | 整体重写为主 | 四种有界局部编辑 + 快照回滚 |
三、问题定义
3.1 从具体场景到抽象结构
具体问题是:给一个 9B 小模型 π,怎么写出它用得好的技能?直接定义"什么是好技能"很困难。论文的核心抽象是:别定义好技能,直接把技能优化问题变成一个以技能文本为策略的强化学习问题。
这个抽象的精妙之处在于一个数学事实:技能 𝒦ᵢ 条件化了冻结模型的动作分布——
$$\pi_{\mathcal{K}_i}(a_t \mid h_t, \mathbf{x}) \triangleq \pi(a_t \mid h_t, \mathbf{x}, \mathcal{K}_i)$$模型权重冻结不动,但改变技能文本就改变了整个系统的策略。技能文本就是策略参数,改文本就是更新策略。既然如此,策略优化的一切理论工具(actor-critic、环境反馈、回滚)都可以原样搬过来,只是全部在语言空间进行。
3.2 形式化定义
- 给定:任务实例 𝐱(指令、输入、工具、输出契约);冻结的小模型 π;环境 ℰ(小模型 agent loop + 官方验证器);可选的参考轨迹 τ*(成功解法,仅优化期用,绝不出现在运行时)
- 环境转移:(τᵢ, rᵢ, 𝐯ᵢ) = ℰ(𝐱, 𝒦ᵢ; π),其中 rᵢ ∈ [0,1] 是标量奖励(二元成功或规范化测试通过率),𝐯ᵢ 是验证器文本诊断
- 求:𝒦* = argmax E[r],即最大化期望奖励的技能文本
- 约束:小模型权重完全不动;参考轨迹不得泄漏为运行时依赖或预计算答案(防止作弊);技能必须可复用(对同技能族的新实例零样本可用)
3.3 为什么这个抽象合理
它把"写好技能"这个模糊的工程问题,转化为一个有明确优化目标(期望奖励)、有明确环境反馈(验证器)、有明确优化变量(技能文本)的标准优化问题——而所有 RL 基础设施(探索、诊断、回滚、经验复用)都可以在文本层面重建。
四、问题解法
SKILLER 的解法可以概括为一句话:强模型当大脑(actor + critic),小模型系统当环境,验证器当奖励函数,自然语言当梯度。整个优化循环类比深度学习训练如下:
| 深度学习训练 | SKILLER |
|---|---|
| 可训练参数 θ | 技能文本 𝒦ᵢ |
| 前向传播 | 小模型 + 技能在环境中 rollout(30 步工具调用上限) |
| 损失 | rᵢ(标量)+ 𝐯ᵢ(文本诊断) |
| 梯度计算 | Critic 因果诊断 → 修改建议 𝐠ᵢ |
| 参数更新 Δθ | Actor 的有界文本编辑 Δᵢ |
| 优化器状态 / 动量 | Replay Memory ℳᵢ(文本化优化历史) |
| checkpoint 恢复 | 技能快照回滚 |
4.1 环境与状态:四元组状态设计
每一轮优化开始时,系统收集状态 𝐬ᵢ = (𝐱, τᵢ, τ*, 𝐯ᵢ):
- 𝐱 任务实例:技能要解决的"考题";
- τᵢ 当前轨迹:小模型挂载技能后的实际执行过程——它暴露执行者"卡在哪";
- τ 参考轨迹*:强模型或人类的成功解法——它提供"应该怎么做"的特权证据(仅优化期对比用);
- 𝐯ᵢ 验证器诊断:每个测试的结果与错误消息,把"失败"锚定到任务的接收标准上。
环境 ℰ 封装了 benchmark 的工具接口、工作区与官方验证器。小模型在"观察工作区 → 选工具动作 → 读结果 → 反思"的循环中执行,且环境运行在渐进披露机制下——技能包不是一股脑全塞进上下文,而是按需加载,防止小模型被长文本淹没。
4.2 Critic:从"失败了"到"从哪一步开始错的"
Critic(GPT-5.4 承担)接收状态四元组与 Replay Memory,输出自然语言修改建议 𝐠ᵢ。它按四个操作工作:
- Evaluate:评估当前执行表现如何;
- Compare:对比当前轨迹 τᵢ 与参考轨迹 τ*;
- Locate Error:定位最早因果分歧点——当前轨迹的动作序列第一次偏离成功策略的位置;
- Generation:生成有界的修改建议。
定位最早分歧点是整个设计中最锋利的一刀。软件任务里,最终测试失败往往源于更早的文件选择、工具调用或验证程序选择——如果只修补下游症状(测试失败的直接报错),技能会陷入"按下葫芦浮起瓢"。Critic 还会把失败系统性归类为四类:缺失程序指导、工具误用、输出契约违规、基础设施故障,并识别技能中已经支持成功行为的内容(供保留,不许 actor 破坏)。
4.3 Actor:四种有界编辑 + 辅助脚本合成
Actor(同为 GPT-5.4)接收修改建议,产出编辑 Δᵢ,作用于技能包后得到新技能。编辑被限制为四种显式有界操作:
| 操作 | 功能 |
|---|---|
| Insert | 插入新的行为约束或步骤 |
| Replace | 替换技能中现有内容 |
| Create | 创建新文件(典型如辅助脚本) |
| Delete | 删除被证明有害的内容 |
有界编辑的意义类似"受控学习率":把 critic 的诊断变成机械可执行的修复,避免整体重写把已有效的部分也改坏。Actor 的另一个关键能力是合成任务本地辅助脚本:当小模型难以稳定执行冗长易错的流程时,actor 会把这段流程写成确定性脚本,让小模型"调用"而不是"照着做"——把程序性推理从自然语言卸载到可执行代码。Actor 严格遵守防作弊约束:参考轨迹的证据只能蒸馏为"依赖运行时输入的指导",直接照搬 oracle solver 内容的更新会被拒绝。
4.4 Replay Memory 与快照回滚
Replay Memory ℳᵢ 不是原始 token 转移的存储,而是文本化的优化历史,保留三类证据:带验证器诊断的失败签名(避免重复失败)、critic 诊断摘要(积累归因知识)、已接受编辑及其结果(保护已有效行为)。系统在每轮优化前后存储技能快照,后续更新导致性能回退时回滚到最近一次通过的快照——这是文本世界的 checkpoint 恢复。
4.5 训练调度
所有任务统一采用 5 步 RL 调度(i = 0,…,4):初始化时用任务指令与参考轨迹细化基线技能;随优化推进,编辑 Δᵢ 逐步注入更细粒度的约束(输入接地 → 任务本地计算 → 自验证)。附录的学习动态分析显示轨迹非单调——SkillLearnBench 上 Step 2 达到最佳检查点后增益趋平,而 SWE-Skills-Bench 上 5 步持续增长(早期解决粗粒度执行失败,后期注入细粒度约束)。
五、评估指标与实验证据
5.1 指标体系
- 主指标:五个基准的任务成功率/测试通过率(%),全部由各 benchmark 的官方验证器计算,3 次运行取平均——衡量的是"技能能否让冻结小模型真实完成任务";
- 辅助指标:技能结构分析(词数、TF-IDF、脚本数、代码行数)与优化成本(token 用量、美元成本);
- 消融指标:状态组件、critic 四操作、actor 三能力的逐一移除实验。
5.2 五个基准的角色分工
- SkillsBench(26 个单技能任务):技能直接使用的基准场景;
- SkillLearnBench(100 实例):技能从少量实例学习后泛化到新实例;
- SWE-Skills-Bench(10 技能 / 117 实例):软件工程任务,人类专家技能得分 52.00——检验能否超越人类水平;
- GAIA(83 实例生成 / 其余零样本测试):通用助手任务,检验零样本迁移;
- EarthBench(124 实例生成 / 其余测试):地球科学领域任务,跨域零样本迁移。
5.3 主结果(Qwen3.5-9B 为执行者)
| 方法 | SkillsBench | SkillLearnBench | SWE-Skills | GAIA | EarthBench |
|---|---|---|---|---|---|
| No-skill | 1.45 | 23.83 | 26.20 | 44.58 | 59.68 |
| Human-authored | 10.14 | 30.00 | 52.00 | – | – |
| Manus(闭源) | 57.97 | 27.56 | 62.40 | 46.18 | 71.24 |
| AutoSkill | 53.62 | 25.61 | 44.10 | 44.98 | 71.77 |
| EvoSkill | 50.72 | 24.22 | 45.90 | 48.19 | 62.90 |
| SkillX | 60.87 | 27.78 | 58.80 | 49.40 | 66.13 |
| SKILLER | 73.91 | 32.11 | 82.80 | 49.40 | 76.08 |
4B 执行者上 SKILLER 同样全面领先(SkillsBench 42.03、SkillLearnBench 33.00、SWE-Skills 66.70)。绝对增益:9B 提升 4.3–20.4 分、4B 提升 1.8–13.3 分。三个最关键的结论:
- 超人类技能 30.8 分:SWE-Skills 上 82.80 vs 人类 52.00,证明自动生成的技能可以大幅超越人类专家;
- 跨规模超越:4B + SKILLER(66.70)在 SWE-Skills 上超过所有 9B baseline 配置(含 9B + Manus 62.40)——好技能能让更小的模型打赢更大的模型;
- 技能不是万能的:人类技能在 SkillsBench 上仅 10.14,Manus/AutoSkill 在部分场景甚至低于 No-skill——执行者失配的技能是有害的,这正是"executor-specific"命题的证据。
5.4 零样本迁移
在 GAIA/EarthBench 各保留一半样本做零样本测试(9B):SKILLER 技能 GAIA 49.59(No-skill 37.00)、EarthBench 72.31。4B 上 Manus 与 SkillX 的技能在 GAIA 上跌破无技能基线,而 SKILLER 技能仍稳健提升——证明学到的行为约束是可泛化的脚手架而非过拟合的记忆。
5.5 消融实验(9B)
状态组件:去掉任务实例 𝐱 后 SkillsBench 崩塌至 1.45;去掉参考轨迹 τ* 降至 58.71;去掉验证器诊断 𝐯ᵢ 降至 60.87。接地信息(𝐱, τᵢ)是一切的前提,且 τ* 比 𝐯ᵢ 更重要——过程证据比结果反馈提供更丰富的局部编辑目标。
Critic 四操作:去掉 Generation 后 SkillsBench 从 73.91 暴跌至 36.44、SWE 从 82.80 暴跌至 24.90——将诊断转化为有界编辑的能力是 critic 的决定性功能;去掉 Locate Error 降至 58.71/64.46。
Actor 三能力:去掉辅助脚本合成后 SWE 从 82.80 跌至 52.30——脚本是语言反馈与可靠动作之间的核心桥梁;去掉 Preserve(保留有效内容)后 SkillsBench 降至 59.18——无约束的迭代会破坏既有能力。
5.6 技能结构与成本
SKILLER 技能指令简洁(词数 534,TF-IDF 熵与人类持平 0.07),但脚本数最多(2.96 个/技能 vs 人类 1.48)——印证"程序性推理卸载到确定性代码"的设计。优化成本 8.95 美元/技能包(低于 SkillX 的 14.55),换来平均分 62.86(SkillX 52.60)。
六、效果优势的根源解释
本部分回答:为什么 SKILLER 是结构性必然地更好,而不是凑巧更好?按因果链逐层分析对每个 baseline 的优势根源。
6.1 对"强模型直接写技能"(Manus / Human):失配根源
Baseline 的根本局限:强模型写技能时的隐含假设是"执行者和我一样强"。它生成的技能是人类/大模型粒度的指导(“设计合适的测试策略”),缺少小模型需要的机械展开(“先读取 X 文件,逐个函数生成边界用例,运行 pytest 并读取第 N 行错误”)。这不是内容错误,而是粒度失配——技能的粒度必须匹配执行者的能力,而书写者无法凭空知道自己没经历过的执行者的失败模式。
SKILLER 的结构性改变:把小模型系统放进环境位,技能的每一次更新都必须先通过"小模型 + 当前技能"的真实 rollout 检验——执行者的失败模式以轨迹 τᵢ 的形式直接进入优化信号。信息流变了:从"我以为你需要什么"变成"你上一次在这里卡住了"。
因果链:执行者在环 → 技能更新以真实失败轨迹为条件 → 粒度自动匹配执行者能力 → 体现为 SkillsBench 73.91 vs Manus 57.97、且 4B 上 Manus 技能跌破无技能基线而 SKILLER 仍稳健。
反事实:消融中去掉状态里的当前轨迹 τᵢ,SkillsBench 从 73.91 崩至 2.44——没有执行者失败证据,强模型立刻退化成"凭想象写技能",比不写还糟。这条因果链是消融实验直接验证的。
6.2 对开源技能迭代方法(AutoSkill / EvoSkill / SkillX):归因与局部性根源
Baseline 的根本局限:这类方法有迭代,但更新信号不接地或归因粗糙——依赖 LLM 自评或最终结果反馈来指导技能重写。最终结果只告诉你"失败了",不告诉你"从哪一步开始失败";而自评信号没有环境校验,容易产生似是而非的修改方向。同时,整体重写的更新方式意味着每次迭代的方差极大:修好了 A 可能同时改坏了 B。
SKILLER 的两个根本性改变:
(1)因果归因——最早分歧点定位。验证器的文本诊断 𝐯ᵢ 被文本化后,critic 不停在"知道失败",而是对比 τᵢ 与 τ* 定位最早的因果分歧点,把"结果反馈"升级为"过程证据"。消融显示:去掉 Compare 后 SWE 从 82.80 降至 64.50,去掉 Locate Error 降至 64.46。这在软件任务上尤为关键——后期测试失败可能源于更早的文件或工具选择,只修症状会让技能陷入打地鼠循环。
(2)有界编辑——局部性保护。四种编辑原语 + Preserve 约束 + 快照回滚,把更新限制在诊断证据支持的局部范围内。机制上,这相当于给优化加了信任域:每步只改有证据的部分,已验证有效的行为被显式保护。消融中去掉 Preserve 后 SkillsBench 降至 59.18——无界迭代会单步摧毁多轮积累的能力。
因果链:验证器诊断文本化 → critic 因果归因(分歧点而非症状)→ actor 局部化编辑(而非整体重写)→ 优化轨迹方差降低 + 已有效能力受保护 → 体现为相对最强开源 baseline SkillX 的 4.3–20.4 分全面优势,以及技能结构上"指令简洁但脚本丰富"(程序性推理卸载,进一步降低小模型的执行方差)。
6.3 零样本迁移优势的根源
SKILLER 技能在保留集上仍领先,而 baseline 技能在 4B 上甚至有害。根源在于技能内容的性质差异:整体重写或自评驱动的技能容易把特定实例的答案细节(而非依赖运行时输入的程序性指导)写进技能——这在小模型上尤其致命,因为弱执行者缺乏区分"记忆"与"程序"的能力,会机械照抄。SKILLER 的防作弊约束(oracle 内容直接照搬即拒绝)+ 参考轨迹只蒸馏为运行时依赖的指导,从机制上保证了技能学到的是行为脚手架而非实例记忆。
6.4 一条总因果链
环境反馈文本化(r + v + τ 对比)→ 强模型获得可机械执行的因果归因 → 有界编辑实现低方差局部更新 → 快照回滚保证单调不退 → 技能粒度与内容同时匹配弱执行者(程序卸载为脚本)→ 五基准全面领先 + 零样本迁移稳健*。
每一环都有对应的消融数据支撑(Generation 消融 -37 分、τᵢ 消融 -71 分、Scripts 消融 -30 分),这让优势解释不是叙事而是被实验钉死的因果结构。
七、必要知识反推
假设一个毫无背景的人要做这项工作,他最少必须知道什么?
7.1 领域知识层
- Agent harness 的运作机制:模型如何循环执行"观察—行动—反思"、工具调用的结构、技能如何挂载进上下文、渐进披露如何控制上下文成本——不知道这些就无法定义"技能条件化策略"的实验载体;
- Agent Skill 的工程格式:SKILL.md 式结构、指令与脚本的分工——不知道这些就无法设计四种编辑操作的作用对象;
- 小模型的能力边界:9B/4B 模型在多步工具调用中的典型失败模式(程序性指导缺失、工具误用、契约违规、基础设施故障四类分类本身就是这项领域知识)——不知道这些,critic 的诊断就没有分类学。
7.2 方法论知识层
- 强化学习基础:策略、环境、奖励、actor-critic 分工、replay buffer、checkpoint 回滚——本文的全部机制设计都是这些概念在文本空间的映射,没有 RL 训练素养就想不到"把执行者当环境"这个抽象;
- 文本工件优化脉络:Reflexion 的口头 RL、TextGrad 的文本梯度、prompt 优化的失效模式(自评不接地、重写方差大)——不知道前人失败在哪,就无法定位"因果归因 + 有界编辑"这两个创新点的必要性;
- 技能学习前序工作:Voyager 的技能库、SkillX 等同期方法的机制与缺陷——这是实验对照系统的方法论基础。
7.3 工程知识层
- Benchmark 验证器体系:五个基准各自的验证器如何输出标量分与文本诊断——奖励函数设计直接依赖于此;
- 强模型 API 的成本与能力特性:GPT-5.4 作为 actor/critic 的调用成本、温度设置(executor 0.2 / actor-critic 0.3)、长上下文管理——离线优化可行性取决于这些工程细节;
- 实验设计:3 次运行平均、生成/测试划分(GAIA 83 实例生成其余零样本测试)、消融矩阵的构造。
7.4 知识融合的关键节点
- 节点一:“技能文本 = 策略参数”:需要同时精通 RL(知道策略优化框架)和 prompt/技能工程(知道技能条件化生成)才能看到这个同构——这是全文的奠基性洞察;
- 节点二:“验证器诊断是免费的文本梯度”:需要既了解 benchmark 验证器(工程知识)又了解 TextGrad 式文本优化(方法论知识),才会意识到官方验证器的错误消息就是现成的、接地的优化信号,无需训练单独的 reward model;
- 节点三:“程序性推理应该卸载为脚本”:需要同时理解小模型的失败模式(长流程执行不稳定)和软件工程惯例(能写成脚本的不要写成文档),才会让 actor 具备 Create 脚本的能力——消融证明这是第二大贡献来源。
八、论文中可以提取的通用性灵感
8.1 强弱协作范式:强模型当优化器,弱模型当被优化系统
核心思想:昂贵的能力(推理、诊断、规划)只需在离线优化阶段使用,在线执行全部交给廉价系统——优化的产物是让弱系统变强的"配置"而非权重。
论文证据:GPT-5.4 仅在离线技能生成阶段使用(成本 8.95 美元/技能包),部署时只有 9B 小模型;4B + SKILLER 技能打赢 9B + 人类技能。
推广场景:边缘设备部署前的提示词/配置离线优化;低成本客服机器人上线前的流程手册自动定制;游戏 AI 的难度脚本针对低端硬件自动调优;教学系统的教案针对不同水平学生自动生成。
8.2 机制类:有界局部更新优于无界重写
核心思想:迭代优化复杂工件时,把每步更新限制在有证据支持的局部范围内,配合快照回滚,能避免"修好 A 改坏 B"的震荡。
论文证据:四种编辑原语贡献一致提升;去掉 Preserve 后 SkillsBench 从 73.91 降至 59.18;快照回滚防止后续优化丢弃已成功技能。
推广场景:代码重构(局部 patch 优于大重写);组织制度修订(增量条款 vs 推倒重来);文档迭代维护;数据库 schema 演进。
8.3 信号利用类:免费的诊断文本是最被浪费的优化信号
核心思想:系统里现成的错误消息、测试报告、日志,本质上都是接地的文本梯度——比标量分数和 LLM 自评信息量大得多,却常被丢弃。
论文证据:验证器诊断 𝐯ᵢ 直接进入 critic;去掉后 SkillsBench 降 13 分;论文无需训练任何 reward model。
推广场景:CI/CD 失败日志驱动开发流程优化;售后工单文本驱动产品改进;学生错题归因驱动教学策略调整。
8.4 因果归因类:定位最早分歧点,而不是修复最终症状
核心思想:长流程失败时,可见的错误几乎总是下游症状;对比"实际轨迹"与"成功轨迹"找到第一个分歧点,才是修复的正确锚点。
论文证据:Critic 的 Compare + Locate Error 操作;去掉后 SWE 从 82.80 降至 64.50/64.46——软件任务上症状修补的代价最大。
推广场景:故障排查(回溯到第一个异常日志);流程审计;医疗诊断(找首发病因而非对症治疗);调试器的 blame 定位。
8.5 适配类:手册的粒度必须匹配执行者,没有普适的好手册
核心思想:任何"指导性内容"(prompt、文档、教程、制度)都没有脱离执行者的绝对质量,好坏只相对特定执行者成立;为执行者定制指南必须让执行者的失败进入优化回路。
论文证据:人类技能 10.14 vs SKILLER 73.91(同为技能,执行者不同则天壤之别);Manus 技能在 4B 上跌破无技能基线。
推广场景:新人 onboarding 手册按岗位背景定制;API 文档按用户水平分层;针对不同基础学生的分层教学。
8.6 程序卸载类:能用确定性代码的,不要让弱模型用自然语言执行
核心思想:对能力有限的执行者,把易错的长流程从"指导它照做"改为"给它一个可直接调用的工具",是把可靠性从概率性(模型每次执行可能有偏差)转为确定性(脚本每次结果一致)。
论文证据:SKILLER 技能脚本数 2.96 个/技能(人类 1.48);去掉脚本合成后 SWE 从 82.80 跌至 52.30——降幅最大的消融之一。
推广场景:给初级工程师的 runbook 应附带自动化脚本;RPA 流程封装;家庭智能化场景的"一键"流程;法律合规检查的自动化清单。
附录:方法全景速查表
| RL 要素 | SKILLER 对应物 |
|---|---|
| 优化变量(策略) | 文本技能 𝒦ᵢ(+ 任务本地辅助脚本) |
| 环境 ℰ | Qwen3.5-9B/4B + OpenCode agent loop + 官方验证器 |
| Actor / Critic | GPT-5.4(仅离线阶段) |
| 状态 | (𝐱, τᵢ, τ*, 𝐯ᵢ) 四元组 |
| 奖励 | r ∈ [0,1] + 文本诊断 𝐯ᵢ |
| 动作 | Insert / Replace / Create / Delete 四种有界编辑 |
| 经验回放 | 文本化 Replay Memory(失败签名/诊断史/已接受编辑) |
| 安全机制 | 快照回滚、oracle 内容拒绝、渐进披露 |
| 调度 | 5 步 RL 调度,渐进注入更细粒度约束 |