基于验证合成数据的技能使用训练(SKT) SKT: Skill-Use Training at Scale via Verified Synthetic Data Generation
三阶段验证合成流水线,用2000技能生成2.7万轨迹训练LLM用好技能
前置知识
Agent Skill(智能体技能)
Agent Skill 是把指令、元数据和可选资源(脚本、模板等)打包在一起的可复用程序性知识单元,可以被大语言模型发现、加载并利用。它封装了领域知识、流程化工作流和辅助工具,能扩展模型固有知识之外的能力、适配领域任务、支持专家知识共享复用,并允许多个技能组合求解复杂任务。自 2025 年 10 月起已有超过 60 万个公开技能发布。本文从公开 skills.sh 库中选取 2000 个技能作为训练池。
本文研究的核心对象就是 Agent Skill,理解技能是什么、为什么'有技能不等于会用技能',是理解论文动机与贡献的前提。
技能接地任务与可执行验证
技能接地任务指任务的设计明确依赖一个或多个指定技能(k∈{1,2,3})才能求解,并为每个技能分配明确角色。本文要求这类任务同时满足三个性质:可解性(附带参考解,能在干净工作区执行并获得评估器满分)、可验证性(提供可执行评估器,无需 LLM 打分即可客观评分)、复杂度可控(用难度控制过滤过易任务)。任务包还包含隔离运行时、task.toml 配置、test 评估器与 solution 参考解。
SKT 的三阶段流水线正是围绕构造可解、可验证、复杂度可控的技能接地任务展开,这是理解方法部分的关键概念。
Agent Harness(智能体交互框架)
Agent Harness 是定义模型如何与环境/工具交互的执行框架,规定消息协议、工具调用格式和上下文管理。本文使用两个框架:DeepAgents(LangChain,2025)和 OpenCode。同一任务在不同框架里的执行轨迹格式不同,因此训练和评测需要区分匹配框架(matched)与跨框架(cross)设置。两个框架各保留 14277 和 12887 条轨迹。
本文大量结论(匹配训练、跨框架迁移、混合训练)都建立在框架这一概念上,理解它能看懂为什么需要区分 harness。
掩码自回归监督微调(Masked Autoregressive SFT)
掩码自回归 SFT 是指在完整轨迹上只对模型自身生成的 token 计算损失、把系统/任务消息与工具观测等条件 token 从损失中掩码掉的训练方式。形式化目标为 $\mathcal{L}_{SFT}=-\sum_{t\in A(\tau)}\log p_\theta(x_t|x_{<t})$,其中 $A(\tau)$ 是助手生成的推理、工具调用与回复 token 集合。这样模型学的是'从定位相关指令到执行并检查技能引导动作'的完整过程,而非仅最终答案。本文用全参数 SFT,1 epoch,lr $5\times10^{-6}$,cosine,3% warmup,bfloat16,batch 8,≤64k token。
这是 SKT 把验证轨迹转化为模型能力的方式,理解损失掩码设计才能理解模型到底学到了什么、为什么不会把外部技能知识内化进权重。
反馈引导修复与技能依赖检查
反馈引导修复指任务在任一验证门(规则验证器/智能体验证器/难度控制)失败时,控制器把具体错误、语义反馈或基于轨迹的难度建议传给 TaskRepair,修订后从规则门重新验证,耗尽预算则丢弃,从而把数据质量推过关键门槛。技能依赖检查用成对 rollout:一组提供技能集 S、另一组扣留 S,其余设置固定,比较评估分差以判断技能访问是否真的有利于完成任务。
这是 SKT 区别于普通'强模型造数据再 SFT'的关键,消融证明跳过这些验证反而损害性能。
研究动机
Agent Skill 是把指令、元数据和可选资源(脚本、模板)打包的可复用程序性知识,自 2025 年 10 月以来已有超过 60 万个公开技能发布。然而技能的可用并不等于模型能用好它。多项研究(Han et al., 2026;Li et al., 2026b)表明,许多 LLM 并不天然具备有效利用技能的能力。有效的技能利用是一项非平凡的挑战:模型必须能在技能相关且适用时识别它、理解并遵循其操作约束、与其他互补技能协调、并按技能说明正确执行规定流程同时有效利用相关工具。现有方法大多关注技能的高效检索(Li et al., 2026a)、把技能内化进模型以减少对外部技能文档的依赖(He et al., 2026;Lin et al., 2026;Lu et al., 2026;Zhu et al., 2026a)、或利用技能支撑智能体自我改进(Shi et al., 2026;Vishe et al., 2026;Wang et al., 2025;Xia et al., 2026),却很少直接研究模型如何真正理解、协调并利用技能来求解多样化任务。
本文的目标是本文的目标是构建一个高质量训练数据合成框架 SKT(Skill-use Training),通过构造可解、可验证、复杂度可控的技能接地任务,让 LLM 学会在不同场景下何时以及如何应用技能。具体地,作者希望从 2000 个公开技能出发,合成 4000 个任务包(1520 单技能、1295 双技能、1185 三技能)并收集 27164 条经过严格验证的执行轨迹(14277 DeepAgents + 12887 OpenCode),用这些轨迹做监督微调,从而在不依赖大规模真实人工标注的前提下,系统提升开源模型(Qwen3.5-9B、Gemma 4 E4B-IT)在 SkillsBench、MolBench-Bind、AgentSkillOS-Bench、SkillEval 四个基准上的技能使用表现。此外作者还希望证明同一套流水线能用来构造留出评测集 SkillEval(100 任务)。
与已有工作不同的是,本文的独特切入角度是把研究焦点从'技能怎么被检索/表示/内化'转向'模型怎么真正理解、协调并使用技能'。与把技能作为持久可编辑记忆(SAGE、SkillRL、Skill1、Skill-R1)、作为内化脚手架(SKILL0、SkillC、SIRI、Skill0.5)、或参数化技能表示(Skill-to-LoRA、LatentSkill、ParametricSkills)的工作不同,SKT 不改变模型参数化技能的方式,而是通过经过验证的、组合感知的合成数据直接教会模型在推理时借助外部技能。与纯合成数据工作(STEPS、AgentSynth、TermiGen、CLI-Universe、SkillSynth、Terminal-World)相比,SKT 强调多层验证(规则验证器+智能体验证器+难度控制+技能依赖检查+反馈引导修复),并显式建模单技能到多技能(k∈{1,2,3})的组合,使训练数据同时具备可解性、可验证性和复杂度可控性。
核心方法
SKT 的整体思路是'先用强模型造出高质量、可验证的技能使用示例,再用掩码自回归 SFT 把这些示例蒸馏到开源模型里'。技术路线分三个阶段。阶段一技能筛选:用基于评分准则的 LLM 裁判从候选技能集合 C 中保留能支撑可执行、可客观判定任务的技能,并采样技能集合 S(基数为 k),对 k>1 的集合用组合裁判确认技能能形成连贯工作流。阶段二任务合成:TaskGen 读取技能并填充固定模板生成任务包 T(含指令、隔离运行时、执行设置、可执行评估器、参考解),随后依次过规则验证器、智能体验证器(含技能依赖的成对 rollout 检查)和难度控制三道关卡,失败则反馈引导修复。阶段三轨迹合成:教师模型在交互框架 h 里求解任务,保留完整轨迹,再用规则验证器和 LLM 验证器双重把关,只保留正确且忠实使用技能的轨迹。最终从 32000 个候选任务-教师-框架组合中保留 27164 条轨迹,用 DeepSeek V4 Pro 配 Claude Agent 框架做合成,难度控制用 Qwen3.5-35B-A3B 配 OpenCode。
核心创新点是'经过验证的、组合感知的合成数据'这一理念,即每条训练轨迹必须同时满足正确性(评估器满分、正常完整终止、工具轨迹良构、显式技能访问)和技能使用的忠实性(每个技能都在它应指导的动作之前被查阅、影响了具体决策或操作、并被正确应用)。与已有方法的本质区别有三:第一,它不是简单用强模型生成数据再 SFT,而是引入了任务级和轨迹级的双重多门验证(规则验证器+语义智能体验证器+难度控制+技能依赖检查+反馈引导修复),作者用消融证明跳过验证反而会损害性能——未验证 SFT 在四个基准上全部下降,AgentSkillOS 甚至降 19.5 分。第二,它显式建模技能组合 k∈{1,2,3},并要求每个任务为每个选中技能分配明确角色。第三,SKT 强调增强模型'利用外部供给技能'的能力而非把技能内化,技能扣留时增益骤降,这与大量内化工作形成鲜明对比。
方法步骤详情
流程分三个阶段共七个操作。阶段一技能筛选:从公开 skills.sh 库选 2000 个技能;k=1 直接采样,k>1 用组合裁判确认技能形成连贯工作流且角色互异(实验用 k∈{1,2,3}),被拒则重采样。阶段二任务合成:TaskGen 读技能填固定模板生成任务包 T(instruction、隔离 runtime、task.toml、test 评估器、solution 参考解),须可客观评分且为每个技能分配角色;随后依次过三道门——规则验证器检查组件/路径齐全、在干净工作区执行参考解须获评估器满分、检测参考值或技能规则被逐字泄漏;智能体验证器审查任务语义良好(指令清晰、信息在本地可得、可见材料不泄漏答案)并用成对 rollout(一组提供 S、一组扣留 S 比较分差)检查技能依赖;难度控制用固定求解器在 S 可用下做 $N=5$ 次 rollout,估算 $p_{pass}=\frac{1}{N}\sum_{j=1}^{N}\mathbb{1}[r_j=1]$,若 $p_{pass}\geq\theta_{easy}=0.6$ 则送回修复。失败经反馈引导修复(把规则错误/语义反馈/难度建议传给 TaskRepair,修订后从规则门重验,耗尽预算则丢弃)。阶段三轨迹合成与训练:教师模型(MiniMax-M2.5、GLM-5、Qwen3.5-397B-A17B、DeepSeek V4 Pro)在 DeepAgents/OpenCode 求解任务,规则验证器要求满分+完整终止+良构工具轨迹+显式技能访问,LLM 验证器检查每个技能在应指导动作前被查阅且影响决策并正确应用,首个通过的轨迹进入训练集;最终转为框架原生格式做掩码自回归 SFT,损失 $\mathcal{L}_{SFT}=-\sum_{t\in A(\tau)}\log p_\theta(x_t|x_{<t})$,$A(\tau)$ 含助手生成的推理/工具调用/回复 token,系统任务消息与工具观测作条件但被掩码。
技术新颖性
技术新颖性体现在几个层面。在数据合成上,SKT 首次系统地把'多层验证+反馈引导修复+复杂度可控+技能依赖探测'组合成一条端到端流水线,使合成的任务同时满足可解性、可验证性和组合可控性,并能复用于构造留出基准 SkillEval。在训练目标上,采用掩码自回归 SFT 完整建模技能使用全过程(从定位相关指令到执行并检查技能引导的动作),而非只学最终答案。在验证设计上,用成对 rollout 量化技能依赖、用难度阈值 $\theta_{easy}=0.6$ 过滤过易任务、用反馈引导修复循环,这三者协同把数据质量推到关键门槛以上——消融显示未验证数据反而使性能下降。在评测贡献上,SkillEval 作为跨领域可执行基准(软件开发调试、数据分析与机器学习、安全、金融商业分析,100 任务,30 单技能/46 双技能/24 三技能)填补了技能使用评测空白。在实验广度上,覆盖两个骨干、两个框架、四个基准、跨框架迁移与混合训练以及技能规模缩放,提供了较完整的证据链,并首次系统回答了'SKT 学到的是可迁移的技能使用行为还是框架特定的交互协议'这一关键问题。
实验结果
核心发现逐条如下。第一,总体有效(Table 1):2 骨干×2 框架×4 基准共 16 组对照中 SKT 每组均值都更高,绝对增益 3.20–18.91 分;最小在 Gemma 4 E4B-IT+OpenCode 的 SkillsBench(7.08→10.28),最大在 Qwen3.5-9B+DeepAgents 的 SkillEval(51.62→70.53);即便 AgentSkillOS/OpenCode 已 79.61,SKT 仍提到 84.70。第二,增益依赖外部技能(Figure 3):技能扣留时增益仅 0.53–5.69 分,提供时 8.68–18.91 分,证明 SKT 强化利用而非内化。第三,验证是关键(Figure 4):未验证 SFT 四基准全降(AgentSkillOS 降 19.5 分),SKT 全升,二者差 11.91–24.61 分。第四,跨框架迁移(Figure 5):交叉训练增益 4.35–9.86 分,保留匹配增益 49.1%–58.1%。第五,混合训练(Table 2):单检查点双框架增益 2.64–18.81 分,与专家均值差至多 2.71 分且三处反超。第六,规模扩展(Figure 6):SkillEval 从 100 技能单调上升到 2000 技能的 72.48。第七,技能基数细分(Figure 7):K=1 增益 7.4、K=2 增益 16.8、K≥3 增益 8.0。
查看结构化数据
| 任务 | 指标 | 本文 | 基线 | 提升 |
|---|---|---|---|---|
| 通用技能使用(匹配框架,提供技能) | SkillsBench 归一化奖励(0–100) | Qwen3.5-9B OpenCode 5.80→15.79;DeepAgents 4.94→13.62 | Original 开源检查点 | +9.99 / +8.68 分 |
| 技能使用自建基准(匹配框架) | SkillEval 归一化奖励(0–100) | Qwen3.5-9B OpenCode 55.24→72.48;DeepAgents 51.62→70.53 | Original 开源检查点 | +17.24 / +18.91 分 |
| 分子科学结合亲和力 | MolBench-Bind 精确匹配准确率(0–100) | Qwen3.5-9B OpenCode 33.11→44.59;DeepAgents 31.76→47.30 | Original 开源检查点 | +11.48 / +15.54 分 |
| 多格式产物生成 | AgentSkillOS-Bench 归一化产物分(0–100) | Qwen3.5-9B OpenCode 79.61→84.70;DeepAgents 74.03→79.84 | Original 开源检查点 | +5.09 / +5.81 分 |
| 验证 vs 未验证数据消融 | 相对 Original 的分数变化(点) | SKT 四基准 +5.1 ~ +17.2 | 未验证 SFT 四基准 -1.9 ~ -19.5 | 二者差距 11.91–24.61 分 |
| 混合框架训练(Qwen3.5-9B) | SkillEval 归一化奖励(0–100) | Mixed OpenCode 74.05 / DeepAgents 69.96 | Specialist OpenCode 72.48 / DeepAgents 70.53 | 与专家差至多 2.71 分,单检查点兼容双框架 |
局限与改进
作者承认的局限性包括:训练只跑一个 epoch、只评测两个骨干(Qwen3.5-9B、Gemma 4 E4B-IT),数据合成质量依赖教师模型(DeepSeek V4 Pro、MiniMax-M2.5、GLM-5、Qwen3.5-397B-A17B)和判定 LLM;SKT 只增强利用外部技能的能力、在技能扣留时增益很弱(SkillsBench/SkillEval 仅 0.53–5.69 分),说明它并未把技能知识固化进权重;训练与评测技能池虽不重叠但同源(都来自 skills.sh 生态),对完全不同领域的技能泛化未充分检验。我自己的观察:难度控制用单一固定求解器(Qwen3.5-35B-A3B+OpenCode)估计过易阈值,可能引入该求解器偏置;技能依赖检查是 bundle 级的成对 rollout,未必能精确捕捉单个技能的边际贡献;评测每个任务只跑 4 次取均值,方差提示某些增益(如 SkillsBench 个位数分数)统计稳健性有限;SkillEval 由同一流水线构造,存在自评式偏差风险,可能高估 SKT 的真实增益。
独立分析的弱点
弱点一:增益高度依赖推理时技能可见。技能扣留时 SkillsBench/SkillEval 增益骤降到 0.53–5.69 分,模型没把技能固化进权重,部署须配技能检索且对检索失败敏感。改进方向是结合内化方法(SkillC 对比式信用分配或 SKILL0 渐进撤除)联合训练。弱点二:数据质量受教师模型与框架约束。27164 条轨迹来自 4 教师×2 框架且依赖闭源商用 API,教师受限或框架有偏都会限制分布且难精确复现;改进方向是纳入更多开源教师与框架,或用拒绝采样+DPO 提纯。弱点三:难度控制与依赖检查较粗——难度只用单一求解器 5 次 rollout、依赖检查是 bundle 级成对;改进方向是多求解器集成、细粒度单技能边际贡献分析。弱点四:评测样本小且同源——SkillsBench 77 任务、SkillEval 100 任务且由同一流水线构造,存在自评偏差风险;改进方向是引入第三方独立基准、增加运行次数降方差。弱点五:只做 SFT 未做 RL,可用 SKT 轨迹 warm-start 再接 GRPO/RLHF 突破上限。
未来方向
作者隐含与显式提出的方向:扩展到更多骨干与框架、把训练数据规模从 2000 技能继续扩大(Figure 6 已显示 SkillEval 从 55.24 单调上升到 2000 技能的 72.48,收益未饱和)、把跨框架混合训练推广到更多框架的统一检查点。基于本文成果可延伸:第一,把 SKT 与技能内化方法结合,研究'先用 SKT 学会用技能、再选择性内化高价值技能'的两阶段范式,兼顾推理时依赖与权重固化。第二,将验证合成范式从技能使用推广到其他可执行可验证任务(如工具调用、代码生成、终端操作、SWE 任务)。第三,引入强化学习后训练以 SKT 轨迹为 warm-start,进一步突破 SFT 上限。第四,研究技能组合的可组合性与灾难性干扰,设计课程学习按 k 值从小到大训练。第五,把 SkillEval 扩展为动态生长的评测集,用流水线持续生成新任务以检测过拟合与分布漂移。第六,探索如何用 SKT 数据提升小模型蒸馏,使技能使用能力下沉到端侧部署模型,降低对闭源教师的依赖。
复现评估
复现性中等偏上。数据侧作者开源了 SkillEval(HuggingFace: Artemis0430/skilleval-v1),训练技能来自公开 skills.sh 库,但训练用的 27164 条轨迹与 4000 个任务包是否完全开源未在正文明确(只给 SkillEval 的 HF 链接和联系邮箱)。方法侧描述清晰:三阶段流水线、三道验证门、难度公式 $p_{pass}=\frac{1}{N}\sum\mathbb{1}[r_j=1]$、阈值 $\theta_{easy}=0.6$、SFT 配方(LLaMA-Factory、1 epoch、lr $5\times10^{-6}$、cosine、3% warmup、bfloat16、batch 8、≤64k token)原则上可复现。算力与外部依赖是主要门槛:全参数 SFT 9B 模型、合成阶段调用 DeepSeek V4 Pro 等闭源 API、32k 次 rollout 筛选,且 skills.sh 生态需对齐版本,成本不低。核心实验(SFT 复现+评测)可中等难度复现,完整端到端合成复现成本较高。
论文图表
图用 Before/After 对比直观展示了 SKT 的核心主张。左侧'Before SKT':一个 LLM Agent 面对一堆技能文件(pdf.md、pptx.md、docx.md、xlsx.md、markdown.md、to-prd.md、gif-creator.md 等)却不知所措,三个问号'Which skill? / When to use? / How to use?'点明模型不会用技能。右侧'After SKT':同一 LLM 在一个发票欺诈检测任务中,按顺序串起 pdf-scan-extract、xlsx-load-lookup、Fuzzy-math-vendor、Validate Fields、Generate Reports 等多个技能,协调处理 Invoices.pdf、vendors.xlsx、porders.csv 三类输入。canvas.md 等技能库置于模型之上作为可调用资源。
这张图是理解论文动机的最佳入口,它把'有技能不等于会用技能'这一核心问题以及 SKT 想达到的目标(多技能协调执行)用一张图讲透,读者据此可快速抓住全文价值主张。