🧬Skill Self-Play 深度分析 - 2026-07-28
00 分钟
2026-7-28
2026-7-28
type
status
date
slug
summary
tags
category
icon
password
一句话判断:Skill Self-Play 把 skill 从“运行时给 Agent 看的说明书”搬进训练闭环,让它同时负责出题、验题和记录课程进度。这个位置变化很有意思,但论文目前只在工具调用与逻辑题上成立,离通用 Agent 自我进化还有一段距离。

原始材料

论文由阿里巴巴 Qwen 大模型应用团队等机构的研究者完成,2026 年 7 月 24 日提交。代码采用 Apache 2.0 许可证,于 7 月 27 日公开。

为什么今天选它

7 月 27 日的 Hugging Face Daily Papers 里,Skill Self-Play 排到当日第 2。同期几个值得看的对象各有侧重:Molt 主要解决 Agent 强化学习框架太重的问题;Multi-Head Latent Control 研究模型何时调用工具、澄清、拒答或升级;IDEAgent 研究科研创意的质量与多样性搜索。Skill Self-Play 更适合今天拆,因为它把 skills、self-play、验证器、课程学习和训练闭环放进了同一套系统,而且代码已经公开。
【智汇AI】7 月 14 日写过 SkillOpt。两者看起来都在“让 skill 进化”,实际位置不同:SkillOpt 把 skill 当作运行时可加载的外部能力;Skill Self-Play 把 skill 当作训练时的课程接口。后者训练结束后,solver 推理时不再加载这些 skill。这个区别决定了它更像训练方法,而不是一个可直接接入产品的 Agent 插件系统。

它在解决什么问题

自我进化训练常卡在两头。
一头是固定环境。代码执行器、游戏模拟器和结构化 API 能给出可靠答案,但任务边界早已写死。模型变强后,环境未必能继续提供合适的新题。
另一头是开放生成。让模型自己出题可以扩大覆盖面,可一旦题目本身有歧义、答案错误或无法验收,错误奖励就会进入下一轮训练。普通格式检查只能拦住明显坏样本,拦不住“格式正确、逻辑有问题”的题。
Skill-SP 的做法是把 skill 定义成一份可执行的任务模式。它不只写“怎么做”,还带着出题约束、示例、验证器和使用统计。系统用这些结构先约束题目怎么生成,再检查题目是否有效;与此同时,它保留一条不受现有 skill 约束的探索通道,用来发现新模式。
notion image
图 1:论文 Figure 3,也是开源仓库的官方流程图。skill 库先指导 proposer 出题,验证通过后按难度组装课程;失败记录、新样本和成功率再回流给 controller。来源:官方仓库

系统怎么运作

1. skill 是训练资产,不是提示词片段

公开代码里的初始工具调用库有 15 个 skill package。每个目录包含 SKILL.md、规则、生成提示、示例、solver 侧规则、统计文件和可执行 validator。比如“地理编码结果转坐标服务”这一项会要求下一次调用复用已有经纬度,并禁止重复调用 geocoding;validator 会检查工具名称、必填参数和参数是否来自已有观察。仓库中的 package 说明能看到这套结构。
这说明论文里的 skill 不是一段泛化建议。它更接近“任务模板 + 局部验收器 + 课程状态”。加载也分层:发现时先读元数据,选中后再读规则,只有需要完整诊断时才展开示例。这套 progressive disclosure 与常见 Agent Skill 的工程形式相似,只是服务对象变成了出题模型。

2. proposer、solver、controller 各管一件事

Proposer 负责生成题目和隐藏的验收合同。Solver 解题,也被当成当前能力的经验评估器。Controller 不直接解题,它根据生成失败、题目新颖度、solver 成功率和任务效用来维护 skill 库。
每轮同时走两条数据通道:
  • skill stream 从库里抽取一项 skill,按它的结构生成题目;
  • exploration stream 不带 skill,自由探索新题型。
只用 skill 会过度收窄,只做自由探索又容易产生噪声。论文把两路有效样本混在一起,默认各占一半。

3. 先判断“题是不是题”,再判断“难不难”

每个任务被表示成用户可见问题和机器可读的隐藏合同。工具调用任务检查函数名、参数与格式;逻辑题使用确定性求解器确认约束成立且答案唯一。对 skill stream,系统还会运行 package 自带的 validator,并用 solver 的多次探测结果检查参考答案是否一致。
通过有效性门槛后,系统才计算 frontier reward。它偏好 solver 成功率接近 0.5 的题:太容易没有训练价值,太难又拿不到学习信号。这个门槛很重要,因为单纯奖励“把 solver 难住”会鼓励 proposer 造坏题。

4. 题库和模型一起变

Proposer 与 solver 都用 GRPO 更新。Solver 变强后,原来合适的题会逐渐变简单;controller 会降低这类 skill 的抽样权重,必要时归档。探索通道里出现有效且有难度的新模式时,controller 把它归纳成新 package。论文实现还会检查 package 是否完整,并用词面相似度过滤重复 skill。
训练共跑 5 轮。工具调用每轮选 8,000 道题,逻辑推理每轮选 1,920 道题。所有实验使用 8 张 NVIDIA A800。论文方法与训练细节给出了完整设置。

5. 最终推理不带 skill

这是最容易被误读的一点。skill 只帮助构造训练数据和更新模型;最终 solver 仍是普通 prompt-only 模型。论文没有证明运行时加载这些 skill 能带来同样的提升,也没有证明一个现成业务 Agent 接上 skill controller 后就能自行成长。

实验结果怎么看

notion image
图 2:根据论文 Table 1Table 2 重新绘制。图中是绝对百分点增益,不是相对百分比。
论文在两类任务上评测:API-Bank 与 BFCL 测工具选择、参数和格式,ZebraLogic 测约束推理。五个基础模型覆盖 3B 到 14B。
结果分成两种情况看更合理。
对本来就会工具调用的 Qwen 与 Granite,工具调用综合分提升 2.8 到 6.5 个点。这部分更像稳定增益。对 Ministral-3-8B 和 14B,工具调用分别提升 42.9 和 42.3 个点,数字很大,但基础分只有 20.7 和 22.2。论文自己把它解释为从严重的 zero-shot schema adherence 失配中恢复。换句话说,Skill-SP 很擅长补齐“知道任务,却不会按工具协议输出”的缺口;这不等于模型的通用推理能力增加了四十多个点。
逻辑推理也全部提升,但弱模型在 Large 和 X-Large 题上几乎没有起色。论文明确承认,自我训练需要最低能力门槛,否则系统无法产生足够可靠的学习信号。Ministral-3-14B 的整体网格准确率增加 12.0 点,主要来自更小的题,而不是最难规模。
消融实验比总分更能说明机制:
  • 去掉 skill 引导后,工具调用综合分从 66.7 降到 64.1;
  • 使用均匀路由降到 64.8;
  • 冻结 skill 库降到 64.4;
  • 只用 skill stream 也比双通道低 1.2 点。
这些对照支持三个判断:结构化 skill 有用,路由与持续更新有用,自由探索也不能拿掉。它们没有证明每个组件都是全新的。
论文还报告,skill stream 生成的题平均成功率约为 0.57,比自由探索的 0.75 更靠近目标难度;5 轮后有 86 个 active skills,按使用分布折算的 effective skills 为 46。Figure 5 和 Figure 6说明库没有完全被少数模式占据。这里仍要留个心眼:题目多样性主要靠句向量降维图和使用熵衡量,它们能发现明显聚类,却不能保证语义上没有重复。

真正的新意在哪里

我认为最值得带走的不是“模型会自己写 skill”,而是 skill 在训练系统里的职责变了。
常见 Agent 设计把 skill 放在推理阶段:收到任务后检索一份说明,执行工具,再把结果写进记忆。Skill-SP 把 skill 提前到训练数据生成阶段。一个 skill 同时携带任务结构、局部验证器、难度统计和生命周期状态,因此它可以成为 proposer、solver 与 controller 之间共享的中间层。
这带来三个实际变化:
  • 长轨迹不必整段塞回上下文。系统把失败原因和有效模式压缩成可复用 package;
  • 验证从全局规则下沉到具体任务模式。不同 skill 可以有不同的检查器;
  • curriculum 不再只是一个静态数据集。skill 的成功率、有效性和饱和度决定下一轮出什么题。
真正新的是这些职责被放进一个共同进化的训练闭环。其余部分多数有成熟来源:proposer-solver 自博弈、GRPO、可验证奖励、中等难度课程、双通道探索、package 式 progressive disclosure 都不是第一次出现。论文的贡献在组合方式和系统位置,不在发明全部零件。

对产品和研发的启发

如果团队想让 Agent 从运行记录中改进,别把“经验”只存成聊天摘要。更实用的沉淀单元应该包含触发条件、执行规则、正反例、自动验收和使用统计。没有验收器的 skill 只能提供建议,很难安全地进入自动优化闭环。
课程也不该只追求更多数据。让当前 Agent 反复失败的超难任务没有训练价值,已经稳定通过的任务也不值得占预算。可以用历史成功率建立一个能力边界池,把训练和评测资源集中在“有机会学会,但尚未稳定”的任务上。
探索与复用要分开记账。稳定 skill 负责高质量产出,开放通道负责找新模式;新模式经过验证后再升格为 skill。这样比让一个生成器同时兼顾可靠与新颖更容易治理。
对于普通应用团队,这套方法目前更适合借鉴结构,而不是原样复刻训练。8 张 A800、双模型滚动生成与多次 probe 的成本不低。更轻的做法是先在运行时收集轨迹,用确定性测试维护 skill 库,再定期离线训练或人工审核。

风险、局限和尚未验证的问题

notion image
图 3:根据论文实验范围与 Limitations 章节整理。绿色部分有公开实验支撑,橙色部分还没有。来源:论文附录 H
第一,实验只有工具调用预测和逻辑网格题。它们都能写出确定性验收器,和长周期浏览器、computer use、多人协作、状态恢复、人机确认不是一类难题。论文标题里的“LLM capability frontier”说得比证据范围更宽。
第二,skill induction 仍依赖基础模型具备最低能力。作者也写明,复杂领域可能要用少量人工示范启动。所谓“开放式自我进化”目前不是从零开始。
第三,路由有固定参数。skill 与探索数据的混合比例、难度区间和归档门槛需要为新任务重新调。自动生成规则与 validator 也被列为未来工作,说明当前验证边界仍有人工设计成分。
第四,语义新颖性检查使用词面相似度阈值。它可能保留换了说法的重复 skill,也可能误删表述接近但约束不同的 skill。validator 一旦写错,错误会比普通提示词更隐蔽,因为它会直接决定训练奖励。
第五,训练只观察 5 轮,没有报告更长周期下的库膨胀、遗忘、退化、训练耗时或成本。跨模型迁移 skill 库也只是未来方向。
第六,开源仓库是一次性首发提交。它包含训练脚本、评测数据和 15 个初始工具调用 package,README 假设 8 张 GPU。我拉取仓库做了静态检查,Python 文件能通过语法编译;但仓库没有自动化测试目录,也没有论文训练日志或现成 checkpoint。我没有条件复跑 8×A800 实验,因此正文中的分数仍属于作者报告,不能写成独立复现结果。

今日沉淀

  1. 能进入自我优化闭环的 skill,至少要有触发条件、规则、validator 和使用统计。
  1. 自博弈需要两条数据线:结构化复用保证质量,开放探索负责发现新模式。
  1. 好课程不追最难题,而追当前成功率接近一半的能力边界。
  1. 训练时 skill 与推理时 skill 是两种产品,不能把结论混用。
  1. 弱模型的大幅增益先检查是否只是协议与格式对齐,不要直接解释成通用智能跃升。