让 Agent 技能可训练的新方法
微软研究论文 SkillOpt 将 agent 的指令转为可训练参数,在不改动模型权重的情况下提高 agent 可靠性。
微软研究论文 SkillOpt 将 agent 的指令转为可训练参数,在不改动模型权重的情况下提高 agent 可靠性。
大型语言模型(LLM)越来越多地被部署为 agent,以收集证据、调用工具和执行多步任务。对于这些 agent,难题不再是它们是否能调用工具,而是它们是否能可靠且一致地完成任务。如今,agent 技能通常来自三个来源:专家手动编写、前沿模型一次性生成,或 agent 在执行后松散地修改。这些方法都不像深度学习优化器那样工作。它们缺乏步长控制、保留验证和任何失败修改的记忆。因此,技能倾向于随着每次重写而变长和漂移,一个看起来完全合理的修改可能会悄悄地降低实际任务性能。这种无控制的技能演变已成为从 agent 原型到可靠、生产级部署的主要障碍。
在我们最近的论文《SkillOpt: Executive Strategy for Self-Evolving Agent Skills》中,我们将问题从"我们如何写一个更好的 prompt?"重新框架化为"我们如何训练技能?"SkillOpt 将技能文件视为生活在冻结目标模型外部的可训练参数,带来了训练风格的优化循环、跨 52 个评估单元的一致收益,以及一个保持可读、可审计和可迁移的紧凑技能文件。
SkillOpt 将技能编辑组织为文本空间中的前向-反向-更新循环。在前向传播中,冻结的目标模型使用当前技能执行一批训练任务;推出批大小控制每次更新接收的证据量。在反向传播中,单独的优化器模型在反思小批次中读取生成的轨迹,从成功轨迹中提炼要保留的模式,从失败中提炼要纠正的模式。
在更新步骤中,优化器提出小的添加、删除和替换编辑;候选编辑被合并、去重、排序,并被一个文本学习率(每步编辑预算)剪辑。每个候选技能必须通过严格的验证门:只有在保留验证集上的得分严格高于当前技能时才被采用。被拒绝的编辑不会被丢弃;它们进入一个被拒绝编辑缓冲区,作为同一 epoch 中后续优化器调用的负反馈。在较慢的节奏上,一个 epoch-wise 的缓慢/元更新整合单个批次无法揭示的较长时间的教训(图 2)。总之,有界编辑、验证门控和最佳版本选择保持技能优化的可控和可审计,因此技能收敛而不是漂移。
我们在六个基准测试(SearchQA、SpreadsheetBench、OfficeQA、DocVQA、LiveMathematicianBench 和 ALFWorld)、从前沿规模的 GPT-5.5 到小型开放权重的 Qwen3.5-4B 的七个目标模型,以及三种执行模式(直接聊天、Codex 和 Claude Code)上评估了 SkillOpt。将每个组合计为一个评估单元,与人类编写的技能、一次性 LLM 技能、Trace2Skill、TextGrad、GEPA 和 EvoSkill 进行比较时,SkillOpt 在所有 52 个单元中都取得了最好或并列最好的结果。对于一个不更新模型权重的方法来说,这些性能改进异常地大。使用 GPT-5.5 在直接聊天中,SkillOpt 将六个基准的平均值从 58.8 提高到 82.3,绝对改进 +23.5 个点——比每个单元选择单个最好竞争方法的预言器还高 +5.4 个点。最大的收益出现在过程性基准上:SpreadsheetBench 从 41.8 上升到 80.7,OfficeQA 从 33.1 上升到 72.1,LiveMathematicianBench 从 37.6 上升到 66.9。同样的接口延续到 agentic 循环中,在 Codex 中将 GPT-5.5 提高 +24.8 个点,在 Claude Code 中提高 +19.1 个点,相比没有技能。
面向下一个模型层级,SkillOpt 也缩小了小型或开放权重模型与前沿模型之间的差距——无需改变任何权重或在推理时添加任何额外的模型调用。优化后,GPT-5.4-mini 的六个基准平均值(64.3)超过了更大的 GPT-5.4 的无技能基线(59.7),GPT-5.4-nano(57.4)超过了 GPT-5.2 的无技能基线(51.3)。Qwen3.5-4B 是一个 40 亿参数的开放权重模型,也超过了 GPT-5.2 的无技能基线。曾经需要更大模型才能获得的收益现在可以通过一个优化的技能文件来近似实现。
优化后的技能文件捕捉可重用的任务解决程序,而不是过拟合到单个模型、基准或执行环境的指令。这就是为什么相同的技能在跨模型规模、agent 框架和相关任务迁移时仍然可以改进性能。在我们的迁移实验中,技能在跨模型规模、跨执行框架和到相邻的数学基准迁移时继续取得收益。最清晰的例子是跨框架迁移:在 Codex 中训练的电子表格技能,没有进一步优化地放入 Claude Code 中,将无技能基线从 22.1 提升到 81.8(+59.7)——略高于在 Claude Code 中直接训练实现的 80.4。因为这两个框架暴露了不同的工具界面,这表明 SkillOpt 学习的是通用工作流逻辑,而不仅仅是框架特定的配方。
部署的工件 best_skill.md 既不是不透明的参数块,也不是不断增长的日志。在六个案例研究中,最终技能长度的中位数大约是 920 个 token,由于验证门控拒绝了大多数提议,只有一到四个编辑被接受到最终文件中。OfficeQA 的 +39.0 个点的收益来自单个接受的编辑。学到的规则读起来像是一个经验丰富的从业者的建议。组件消融确认了控制做了工作:移除被拒绝编辑缓冲区降低了所有三个消融基准的分数,同时移除元技能和缓慢更新将 SpreadsheetBench 从 77.5 降低到 55.0。SkillOpt 指向了 agent 时代的一个新的适应层,为领域适应 agent 指明了一条更轻量级的路径:团队可以训练一个小的、可版本控制的、可审计的自然语言技能层——而不是微调权重、硬编码任务逻辑或手动调整 prompt,只要存在自动评估或可靠的验证器即可。
通过为 agent 技能引入学习率、计划、验证分割、被拒绝的样本和缓慢更新,SkillOpt 表明训练不必局限于模型权重。模型外部的程序知识也可以被优化。
当这个过程受到控制、验证和记录时,自然语言技能就成为了前沿模型能力和真实工作负载之间的稳定的、可迁移的、可逆的适配器。阅读完整论文,访问项目页面 aka.ms/skillopt,或探索 SkillOpt GitHub 仓库 github.com/microsoft/SkillOpt。构建 agentic 工作流的团队可以使用 SkillOpt 作为基础,针对他们自己的任务和验证器训练可重用的技能。另请参阅我们的同伴项目 SkillLens。