← 返回 2026-08-04

基于验证合成数据的技能使用训练(SKT) SKT: Skill-Use Training at Scale via Verified Synthetic Data Generation

Zelin Tan, Yiqun Zhang, Hao Li, Zhiyao Cui, Hejia Geng, Shao Zhang, Hangfan Zhang, Yang Chen, Xiaosong Wang, Lilong Wang, Zhenfei Yin, Shuyue Hu, Chen Zhang, Lei Bai 📅 2026-08-03 👍 30 2026-08-09 18:30
Agent技能 数据合成 智能体训练 监督微调 验证流水线

三阶段验证合成流水线,用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 学到的是可迁移的技能使用行为还是框架特定的交互协议'这一关键问题。

Overview of SKT.
Figure 2: Overview of 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。

Matched-harness performance with externally supplied skills.
Table 1: Matched-harness performance with externally supplied skills.
Mixed-harness training for Qwen3.5-9B.
Table 2: Mixed-harness training for Qwen3.5-9B.
Absolute Original and SKT scores for Qwen3.5-9B with task-designated skills withheld or provided.
Figure 3: Absolute Original and SKT scores for Qwen3.5-9B with task-designated skills withheld or provided.
Change from Original after Qwen3.5-9B–OpenCode SFT on unverified or SKT trajectories (four-run means).
Figure 4: Change from Original after Qwen3.5-9B–OpenCode SFT on unverified or SKT trajectories (four-run means).
Qwen3.5-9B cross-harness transfer.
Figure 5: Qwen3.5-9B cross-harness transfer.
SkillEval by training-skill budget for Qwen3.5-9B–OpenCode (four-run mean ± standard deviation; equal x spacing).
Figure 6: SkillEval by training-skill budget for Qwen3.5-9B–OpenCode (four-run mean ± standard deviation; equal x spacing).
SkillsBench reward by skill count for Qwen3.5-9B–OpenCode. Gray is Original; blue is the SKT gain.
Figure 7: SkillsBench reward by skill count for Qwen3.5-9B–OpenCode. Gray is Original; blue is the SKT gain.
查看结构化数据
任务指标本文基线提升
通用技能使用(匹配框架,提供技能) 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 复现+评测)可中等难度复现,完整端到端合成复现成本较高。