← 返回 2026-08-14

SKILLER:面向小语言模型可复用技能提取的语言级强化学习 SKILLER: Language-Level Reinforcement Learning for Reusable Skill Extraction in Small Language Models

Chenhao Dang, Siyuan Xiong, Conghui He, Weijia Li 📅 2026-08-11 👍 15 2026-08-19 18:30
Agent Skills LLM 智能体 小语言模型 技能自动生成 语言级强化学习

强模型充当演员与评论家,以自然语言强化学习迭代优化技能文本,让9B/4B小模型媲美闭源大模型。

前置知识

Agent Skill(智能体技能)

一种把程序性知识打包成标准格式的可复用工件:通常是一个 SKILL.md 指令文件加可选的脚本目录,内容涵盖规定性执行流程、工具调用约定、路径、输出契约和错误恢复指引。agent harness(如 Claude Code、Codex、OpenClaw、OpenCode)在执行任务时加载技能,用它持续约束模型的行为空间,使复杂任务以可重复、高质量的方式完成。技能不是普通提示词,而是形式化的领域专长封装。

本文优化的“策略”就是一个技能包:理解 SKILL.md、task-local helper 脚本以及 Insert/Replace/Create/Delete 四类编辑算子的作用对象,是读懂 SKILLER 方法设计和结构分析(词数、TF-IDF、LOC 统计)的前提。

Actor–Critic 与策略迭代

强化学习中 actor 负责产生动作(改进策略),critic 负责评估当前策略并给出诊断信号;策略迭代反复执行“评估→改进”直至收敛。传统实现中两者都是神经网络,更新通过梯度反向传播完成。

SKILLER 把这套机制整体搬到语言层:GPT-5.4 同时扮演 actor 和 critic 两个前沿模型角色,被优化的对象是文本技能 $K_i$ 而非神经权重,更新形式为 $K_{i+1} = Apply(K_i, \Delta_i)$,全部信号以自然语言传播。不熟悉 actor-critic 分工就看不懂框架为何需要两个模块。

执行轨迹与验证器奖励

执行轨迹(trajectory)$\tau = (o_0, a_0, \ldots, o_T)$ 是智能体一次完整任务执行的观察-动作记录;verifier(验证器)是 benchmark 官方判定程序,输出标量奖励 $r_i \in [0,1]$(通过/失败或归一化测试通过率)以及结构化诊断 $v_i$(逐测试结果、报错信息)。

SKILLER 的全部学习信号都来自官方 verifier 而非 LLM 自评,这是方法可信度的来源,也划定了适用边界——只有可自动验证的任务才能提供奖励。状态四元组和消融实验都围绕 $(x, \tau_i, \tau^\star, v_i)$ 展开。

特权参考轨迹(Privileged Reference Trajectory)

$\tau^\star$ 是强模型(前沿模型)成功解决同一任务时的完整执行轨迹。它是“特权信息”:只在优化阶段提供给 critic 和 actor 作对照与蒸馏素材,运行时从不注入小模型的上下文,且被严格禁止以预计算答案、oracle 脚本等形式泄漏给执行器。

这是 critic 能够“对比双轨迹、定位最早因果分歧”的对照基准,是理解状态 $s_i = (x, \tau_i, \tau^\star, v_i)$ 设计和防作弊审计的关键。消融显示去掉 $\tau^\star$ 使 SkillsBench 从 73.91 跌到 58.71,说明其重要性仅次于接地信号对 $(x, \tau_i)$。

模型失配(Model Mismatch)

为大模型撰写的技能隐含三个假设:推理容量充裕、长上下文耐受、错误恢复鲁棒。小模型执行这类技能时会出现参数幻觉、跳过必要验证步骤、被多分支复杂指令诱发认知过载,导致任务灾难性失败——技能越通用冗长,小模型表现越差。

这是整篇论文的问题起点:论文用数据证明失配真实存在(4B 的 GAIA zero-shot 上 Manus 技能 33.33%、SkillX 28.86%,均低于无技能的 34.55%)。理解失配才能理解为什么必须做 executor-specific 的技能生成,而非简单移植高端技能。

研究动机

Agent 技能已成为 Claude Code、Codex、OpenCode、OpenClaw 等 harness 的基础原语,但当前主流技能部署都绑定强闭源模型,推理成本高到无法规模化:前沿模型输出 token 价格高达每百万 5–25 美元,实际任务动辄产生海量调用。更关键的障碍是模型失配:为强模型定制的技能隐含 expansive reasoning、宽上下文容忍与鲁棒错误恢复假设,直接移植到部署在消费级 GPU 上的小型开源 LVLM(Qwen3.5 系列、Gemma 4 等)会灾难性失败——小模型容易幻觉工具参数、跳过必要验证、被多分支指令带偏。论文给出的数据非常直观:Qwen3.5-9B 在 SkillsBench 上无技能仅 1.45%,连人类专家撰写的技能也只有 10.14%;Manus 生成的技能为 57.97%,仍远低于 SKILLER 的 73.91%。而在 Qwen3.5-4B 的 GAIA zero-shot 评估中,Manus 技能 33.33%、SkillX 技能 28.86%,甚至低于无技能基线 34.55%,说明面向大模型的冗长指令注入小模型反而诱发认知过载与错误传播。

本文的目标是本文的目标是建立一个全自动框架,针对特定小型开源 LVLM(Qwen3.5-9B 与 Qwen3.5-4B)的独特行为空间,自动生成并持续优化 executor-specific 技能,且完全不更新任何神经权重。形式化为:固定小模型策略 $\pi$ 与目标任务实例 $x$,在自然语言技能空间 $\mathcal{K}$ 中求解 $K^\star_x = \arg\max_{K \in \mathcal{K}} J_x(K)$,其中 $J_x(K) = \mathbb{E}_{(\tau,r,v) \sim p_{\mathcal{E},\pi}(\cdot \mid x, K)}[r]$,奖励 $r_i \in [0,1]$ 直接取自 benchmark 官方 verifier(二值通过/失败或归一化测试通过率)。同时追求三项工程目标:优化期的高计算开销换来可解释、可直接部署的策略工件;所有反馈与更新指令全部以结构化自然语言传播;最终让 9B/4B 配上定制技能后,在任务级性能上逼近乃至反超闭源前沿模型,形成高性价比的 agent 部署范式。

与已有工作不同的是,本文的独特切入在于对强化学习三要素的重新指派。现有技能获取与演化方法(EvoSkill、AutoSkill、SkillX、Skill-Pro、SKILLRL、CoEvoSkills 等)要么面向大型前沿模型优化技能,要么把技能与神经 RL 训练混合;Reflexion、Voyager、Trace2Skill 等则把语言反馈用于单次推理改进或轨迹经验沉淀,均未正面处理小模型执行器的失配问题。SKILLER 的做法是:被优化的小模型 agent loop 不再扮演“策略”而是“环境” $\mathcal{E}$,交互产出 $(\tau_i, r_i, v_i) = \mathcal{E}(x, K_i; \pi)$;策略变量从神经权重换成技能文本 $K_i$,梯度更新换成四类有界文本编辑;一个前沿强模型(实验中为 GPT-5.4)同时出任 actor 与 critic。更巧妙的是引入特权参考轨迹 $\tau^\star$——强模型的成功解法只在优化侧可见,让 critic 能逐步对比定位最早因果分歧,而小模型运行时永远接触不到它,既保留蒸馏收益又不构成对 oracle 的运行时依赖。

核心方法

直觉上,小模型在结构化任务中的失败大多是可诊断、可修复的行为缺陷:路径循环、参数幻觉、跳过验证、输出契约违约。与其微调权重,不如让小模型反复在官方 verifier 面前执行技能,把每次失败的证据交给强模型“问诊”,再以小步受控编辑修补技能文本,直到把错误模式逐一封堵为可执行的约束。技术路线是一个语言级策略迭代循环:环境 $\mathcal{E}$ 包装 benchmark 的工具接口、工作区与官方验证器,执行产出轨迹 $\tau_i$、奖励 $r_i$ 与诊断 $v_i$;控制器拼出状态四元组 $s_i = (x, \tau_i, \tau^\star, v_i)$,其中 $\tau^\star$ 是优化侧专属的强模型参考轨迹;critic 以 $g_i = C_\phi(s_i, r_i, K_i, M_i)$ 生成自然语言修改建议;actor 输出有界更新 $\Delta_i = A_\theta(x, K_i, \tau^\star, g_i, M_i)$,经 $K_{i+1} = Apply(K_i, \Delta_i)$ 得到新技能;回放记忆 $M_i$ 持续沉淀失败签名、诊断历史与已接受编辑及其结局。全部计算开销集中在技能构建期,产物是一份人类可读、可直接部署的策略工件,小模型参数全程冻结。

核心创新有三点。其一,文本即策略:技能本身就是可优化的有效策略 $\pi_{K_i}(a_t \mid h_t, x) \triangleq \pi(a_t \mid h_t, x, K_i)$,优化以自然语言而非梯度进行,构成“语言级策略迭代”。其二,执行者即环境:与以往把被优化模型当作策略主体的 RL 范式不同,小模型 agent loop 被当作交互环境,奖励来自官方 benchmark verifier 而非 LLM 自评,保证信号客观且与真实验收标准对齐。其三,特权参考对比:critic 把当前轨迹 $\tau_i$ 与强模型成功轨迹 $\tau^\star$ 逐步对照,定位最早因果分歧——软件任务中晚期测试失败往往源于早期文件、工具或验证流程选错,“最早错误”定位避免了 actor 只修补下游症状。配套机制包括渐进式技能披露(防止长文本淹没小模型上下文)、防作弊审计(检测并拒绝对 oracle solver、solve.sh、预计算答案工件的直接引用)、快照回滚(更新导致成绩回退即恢复最近通过的快照)。这些设计共同确保优化既聚焦于小模型独有的失败模式,又不破坏已验证的有效行为。

方法步骤详情

完整流程是一个五步循环。第 0 步初始化:用任务指令与参考轨迹精化出粗粒度技能 $K_0$,规定可执行工作流、工具调用路径、输出契约与可选 task-local helper 脚本。第 1 步环境执行:Qwen3.5 通过 OpenCode agent loop 挂载当前技能 $K_i$,每次 rollout 最多 30 步工具调用、执行器温度 0.2,官方 verifier 给出 $r_i$ 与诊断 $v_i$。第 2 步构造状态:$s_i = (x, \tau_i, \tau^\star, v_i)$,把任务意图、实际行为、成功对照与验收标准绑定为误差信号。第 3 步 critic 诊断(GPT-5.4,温度 0.3)执行四操作:评估当前执行(审查 $x, v_i, r_i$ 并审计是否偷用 oracle)、对比双轨迹(找出首个分歧点并引用错误输出与正确步骤)、定位最早因果错误(给出步骤索引与理应阻止失败的 SKILL.md 行)、生成修改建议 $g_i$;诊断先写入回放记忆 $M_i$。第 4 步 actor 修补:机械执行 INSERT/REPLACE/CREATE/DELETE 四类有界编辑(替换单处不超过 4 行、总 diff 不超过 30 行),必要时合成确定性 helper 脚本把易错长流程外化为代码,显式保留有效内容,输出含完整文件内容的 JSON 更新 $\Delta_i$。第 5 步合并与保护:直接使用 oracle 内容的更新被拒绝;每轮前后保存快照,若新更新导致成绩回退则回滚到最近通过版本。SkillsBench 配置为 3 轮优化,全局采用 5 步调度;GAIA 与 EarthBench 各取半数分层样本生成技能、余下半数做 zero-shot 迁移;支持批量目标 $\hat{J}_i(\mathcal{B}) = \frac{1}{N}\sum_{n=1}^{N} r_i^{(n)}$ 与跨实例技能绑定。

技术新颖性

与既有工作的本质差异可从四个维度看。信号来源:Reflexion 依赖 LLM 自评语言反馈,SKILLER 用官方 verifier 的标量奖励 $r_i$ 与逐测试诊断 $v_i$,抗幻觉且严格对齐验收标准。优化对象与方式:AutoSkill/EvoSkill/SkillX 面向大模型做开放式技能生成或经验自演化,倾向产出高冗余模板(Table 3 显示 AutoSkill 平均 1887.41 词、TF-IDF 相似度高达 0.93),而 SKILLER 通过有界编辑把 critic 诊断转成机械可执行的修补计划(总 diff 不超过 30 行),明确禁止全文重写,从机制上抑制文本膨胀。知识形态:SKILLER 生成的技能仅 534.33 词却携带平均 2.96 个脚本、总计 15,747 行代码,把确定性计算从自然语言下沉到可执行工件——恰好匹配小模型“读短指令、跑长代码”的能力结构,其 TF-IDF 0.07 与人类开发者(0.07)同频,说明学到的是专门化约束而非通用套话。稳定性设计:回放记忆区分缺失流程指导、工具误用、输出契约违约与基础设施故障四类失败;快照回滚防止灾难性遗忘;状态消融证明接地信号对 $(x, \tau_i)$ 不可替代——去掉任务实例 $x$ 后 SkillsBench 从 73.91 崩至 1.45。

Overview of SKILLER. (a) Automated generation and iterative refinement of task-specific skills tailored for compact models. (b) The progressive performance enhancement of the small-scale LVLM agent loop as the underlying skill iteratively evolves.
Figure 2: Overview of SKILLER. (a) Automated generation and iterative refinement of task-specific skills tailored for compact models. (b) The progressive performance enhancement of the small-scale LVLM agent loop as the underlying skill iteratively evolves.

实验结果

主结果(Table 1)显示 SKILLER 在两个规模、五个基准上几乎全面领先。Qwen3.5-9B:SkillsBench 73.91%(无技能 1.45%、人类技能 10.14%、最佳自动基线 SkillX 60.87%,绝对提升 13.04pp);SWE-Skills-Bench 82.80%(较闭源 Manus 的 62.40% 提升 20.4pp);SkillLearnBench 32.11%(SkillX 27.78%);GAIA 49.40% 与 SkillX 并列第一;EarthBench 76.08%(AutoSkill 71.77%)。4B 上绝对增益 1.8–13.3pp,SWE 达 66.70%(SkillX 48.40%)。最具冲击力的是跨规模对比:4B+SKILLER 的 66.70% 超过 9B 配人类技能(52.00)、AutoSkill(44.10)、EvoSkill(45.90)、SkillX(58.80)乃至 Manus(62.40),说明技能优化可以跨越两倍以上的参数差距。Zero-shot 迁移(Table 2):9B 在 GAIA 49.59%、EarthBench 72.31% 均居首,证明学到的是可迁移流程规则而非表面过拟合;4B GAIA 40.65%,而 Manus 33.33、SkillX 28.86 均低于无技能的 34.55。学习动态(Figure 3):SWE 五轮持续爬升,SkillLearnBench 两轮内即收敛。结构分析(Table 3):SKILLER 技能 534.33 词、TF-IDF 0.07、脚本 2.96 个、LOC 15,747,实现“短指令+长代码”。成本(Table 4):9B 全套生成仅 $8.95、平均分 62.86,优于 SkillX 的 $14.55、52.60。消融(Tables 5–7):去掉 $x$ 或 $\tau_i$ 使 SkillsBench 崩至 1.45/2.44;critic 去掉 Generation 操作掉到 36.44;actor 去掉脚本合成掉到 55.34,证明脚本外化是语言反馈转化为可靠动作的关键桥梁。Table 8 进一步显示各步 token 消耗相近(235–289K)但收益非单调,step 2 最佳(30.67)。

Main results on five benchmarks. All scores are three-run average score, accuracy or pass rate (%).
Table 1: Main results on five benchmarks. All scores are three-run average score, accuracy or pass rate (%).
Zero-shot results on the rest of GAIA and EarthBench. Scores are three-run average score and accuracy (%).
Table 2: Zero-shot results on the rest of GAIA and EarthBench. Scores are three-run average score and accuracy (%).
Structural statistics of generated skills on SkillsBench.
Table 3: Structural statistics of generated skills on SkillsBench.
Cost analysis and average performance of skill generation on Qwen3.5-9B across five benchmarks.
Table 4: Cost analysis and average performance of skill generation on Qwen3.5-9B across five benchmarks.
State component ablation using Qwen3.5-9B as the executor.
Table 5: State component ablation using Qwen3.5-9B as the executor.
Critic prompt ablation using Qwen3.5-9B as the executor.
Table 6: Critic prompt ablation using Qwen3.5-9B as the executor.
Actor prompt ablation using Qwen3.5-9B as the executor.
Table 7: Actor prompt ablation using Qwen3.5-9B as the executor.
Detailed SkillLearnBench results and skill generation tokens using Qwen3.5-9B as the executor.
Table 8: Detailed SkillLearnBench results and skill generation tokens using Qwen3.5-9B as the executor.
Learning dynamics through five SKILLER iterations. The vertical axis is the three-repeat average pass rate and accuracy.
Figure 3: Learning dynamics through five SKILLER iterations. The vertical axis is the three-repeat average pass rate and accuracy.
查看结构化数据
任务指标本文基线提升
SkillsBench 单技能任务(Qwen3.5-9B,26 任务) 三跑平均得分/通过率 (%) 73.91 最佳开源基线 SkillX 60.87;Manus 57.97;人类技能 10.14;无技能 1.45 +13.04pp(对最佳基线)
SWE-Skills-Bench(Qwen3.5-9B,10 技能 117 实例) 三跑平均通过率 (%) 82.80 Manus 62.40;SkillX 58.80;无技能 26.20 +20.40pp
SkillLearnBench(Qwen3.5-9B,100 实例) 三跑平均准确率 (%) 32.11 SkillX 27.78;Manus 27.56;无技能 23.83 +4.33pp
GAIA 验证集(Qwen3.5-9B,165 任务) 三跑平均得分 (%) 49.40 SkillX 49.40(并列);Manus 46.18;无技能 44.58 并列第一;zero-shot 半区 49.59 超最佳基线 AutoSkill 47.97
EarthBench(Qwen3.5-9B,248 样本) 三跑平均准确率 (%) 76.08 AutoSkill 71.77;Manus 71.24;无技能 59.68 +4.31pp
SWE-Skills-Bench(Qwen3.5-4B) 三跑平均通过率 (%) 66.70 SkillX 48.40;Manus 53.40;无技能 17.60 +18.30pp,且超过 9B+Manus 的 62.40
技能生成成本与平均性能(Qwen3.5-9B,五基准合计) GPT-5.4 生成费用 ($) 与五基准平均分 $8.95,平均分 62.86 SkillX $14.55、52.60;AutoSkill $2.53、48.02;EvoSkill $1.95、46.39 比 SkillX 便宜约 38% 且平均分高 10.26

局限与改进

作者承认的局限:其一,流程约束无法替代缺失的事实知识——GAIA 这类多跳检索任务上(9B 49.40% 仅与 SkillX 持平、4B 43.78% 低于 SkillX 的 44.18%),如果相关外部证据根本没被找到,再严格的搜索纪律也无济于事,critic 只能重塑搜索策略而不能补齐事实。其二,优化轨迹非单调:SkillLearnBench 在 step 2 达到峰值 30.67 后不再提升,最优停止点随 benchmark 与执行器变化,目前依赖固定 5 步预算而非自适应早停。其三,成本并非最低:$8.95 与 2.68M 输入 token 高于 AutoSkill($2.53)与 EvoSkill($1.95)。我自己的观察:方法强依赖参考轨迹 $\tau^\star$,前提是强模型能先成功解题,对前沿难题这一前提本身可能失效,论文未讨论 $\tau^\star$ 生成失败时的退化路径;技能是 task-specific 的,评估子集较小且经过人工挑选(SWE 子集只保留技能有影响的 10 个任务 117 个实例),可能高估平均收益;全部实验限定在 Qwen3.5 家族,跨执行器族(如 Gemma 4)的可移植性未验证;奖励完全依赖可自动验证的 benchmark,开放式任务暂不适用。

独立分析的弱点

独立分析四个弱点。第一,$\tau^\star$ 瓶颈:参考轨迹要求强模型先成功解决任务,方法的能力上界被强模型的覆盖范围锁定;对强模型也失败的任务,框架退化为“无对照的盲修”。改进方向:利用多次失败 rollout 之间的对比归纳、基于 verifier 部分信号的课程式自举,或用测试时搜索(best-of-n 加 verifier 筛选)合成伪参考轨迹。第二,成本随任务数线性增长:每任务约 $8.95、5 轮强模型调用,构建数百任务的企业级技能库需数千美元。改进方向:任务聚类后共享“家族级”约束层、跨任务技能复用与终身技能库维护、用开源强模型替代 GPT-5.4 担任 actor/critic 降本。第三,停止准则与稳定性不足:Table 8 揭示各步 token 消耗相近(235–289K)但收益非单调,后期编辑可能收窄对其他实例仍然有用的指令,快照回滚只是事后补救而非预防。改进方向:引入验证集早停、基于多次运行的置信区间更新接受准则、多 rollout 证据聚合后再统一更新以降低对单条轨迹的过拟合。第四,防作弊审计目前以规则为主(检测 solve.sh、oracle 包装器、预计算答案的引用),更“聪明”的技能可能学会隐式泄漏答案信息,需要更形式化的信息流审计或运行时输入依赖性检验。

未来方向

论文结论未设专门的未来工作段落,但从现有成果可自然延伸出多个方向。其一,从 task-specific 走向终身技能库:把 SKILLER 的语言级策略迭代与 SkillFlow、SkillClaw 式的持续发现、维护、去重结合,让技能在任务间复用、组合与版本化管理。其二,语言级与参数级混合优化:语言迭代负责快速修复行为缺陷,参数级 RL(SKILLRL、Skill-Pro 方向)负责把高频技能内化进权重,两者交替可能突破纯文本策略的表达上限。其三,自适应披露与粒度学习:把渐进式技能披露从固定机制升级为可学习策略,按执行器容量动态决定技能长度、脚本化比例与披露时机。其四,奖励面扩展:为开放式任务引入 rubric 化的 LLM judge 并做校准,把方法推广到写作、研究等无自动 verifier 的场景。其五,多执行器条件化技能:学习以执行器特征为条件的技能模板,让一份技能家族同时服务 4B 到 70B 多档模型,降低逐模型重生成成本。其六,因果归因升级:把 critic 的“最早因果错误”定位与自动因果分析、程序切片工具结合,提升诊断精度并减少后期编辑对既有能力的误伤。

复现评估

复现条件相当友好。代码已在 GitHub 开源(DANG-ai/SKILLER),执行器 Qwen3.5-9B/4B 为开源权重,消费级 GPU 即可部署;五个 benchmark(SkillsBench、SWE-Skills-Bench、SkillLearnBench、GAIA、EarthBench)均为公开数据集,附录 D 给出精确的子集选择规则(26 任务、10 技能 117 实例、100 实例、GAIA 165 任务与 EarthBench 248 样本及分层对半切分)。附录 B/C 完整公开 critic 与 actor 提示词原文,附录 E 披露实现细节(SkillsBench 3 轮配置、每 rollout 30 步上限、执行器温度 0.2、actor/critic 温度 0.3、快照回滚与防作弊合并规则)。算力方面主要开销是 GPT-5.4 API:9B 全套五基准约 $8.95(2.68M 输入 + 0.15M 输出 token),SkillLearnBench 单基准每步约 235–289K token,个人花数十美元即可复刻主表;结果为三跑平均并披露了非单调轨迹。潜在障碍:各 benchmark 的 adapter(工具接口与 verifier 对接)和 $\tau^\star$ 参考轨迹的生成流程着墨较少,SWE 子集选择需人工核对原 benchmark 报告;总体复现难度中等偏易。