SkillOpt:智能体技能训练框架
深入解析SkillOpt框架、实验结果及开源实现
AI模型价格对比 | AI工具导航 | ONNX模型库 | Vibe Coding教程 | PLC在线仿真器 | Tripo 3D | Meshy AI | ElevenLabs | KlingAI | ArtSpace | Phot.AI | InVideo
技能正迅速成为构建AI智能体的标准方式,将专业知识和工作流程封装为可复用的指令。Claude Skills帮助普及了这一理念,如今大多数智能体框架都依赖某种形式的基于技能的架构。
但目前还没有真正的科学方法来构建它们。大多数团队依赖的是反复编写、测试和修改指令的循环,直到获得可接受的结果。
SkillOpt采用了不同的方法。它不再将技能视为固定文本,而是将其视为可以通过评估和反馈来改进的东西——更像是在训练一个深度学习模型,而非传统的提示工程。
本文将探讨SkillOpt如何将模型训练的原则应用于自然语言技能,其实验揭示了什么,以及该方法的局限性在哪里。
1. 深入SkillOpt:工作原理
SkillOpt的核心思想是,技能可以使用类似于神经网络训练所用的原则来进行优化。
1.1 什么是技能?为什么手工设计的技能会停滞不前?
技能是一份紧凑的指令文档,用于引导一个冻结的智能体。它规定了智能体应该如何收集证据、使用工具、验证结果以及组织最终答案。模型权重保持固定,执行框架保持不变。只有技能文本在每次运行之间不断演化。
如今,大多数技能以三种方式之一创建,而这三种方法最终都会遇到瓶颈。
- 手工设计的技能:无论是由人类编写、由LLM生成,还是通过迭代提示来完善。它们严重依赖先验直觉。
- 一次性生成的技能:由LLM在单次过程中生成,没有来自实际任务结果的反馈。虽然它们通常看起来结构良好且内容全面,但并没有以实际观察到的表现为基础。
- 自我修订的技能:允许智能体在每次执行后重写自己的指令。然而,如果没有系统化的评估,有用的规则可能被较弱的替代方案所取代,导致技能漂移而非改进。
共同的局限在于缺乏优化纪律。 深度学习通过受控更新、验证和系统化地利用失败信号解决了类似的挑战。SkillOpt将相同的原则引入技能优化。它不更新隐藏参数,而是更新指令。它不依赖梯度,而是依赖从真实执行中收集的证据。其结果是一个可测量、可复现、可审计的技能训练过程。

1.2 一次训练步骤中会发生什么?
SkillOpt的单次迭代遵循与任何优化循环相同的模式:观察行为、识别问题、提出改进方案,然后测试是否真正有效。为了让这个过程更具体,考虑一个SearchQA的例子:
哪部1851年的小说中出现了捕鲸船 Pequod?
标准答案为:
Moby-Dick
在迭代结束时,技能可能获得了一条新指令,也可能保持不变。结果完全取决于提出的编辑是否能在未见过的示例上提升性能。
#1. 推演:收集行为数据
过程从推演开始。使用当前技能,冻结的目标模型回答一批问题,SkillOpt记录其行为。每条轨迹包含提示、模型响应、任何工具交互以及最终答案。然后,验证器对结果进行评分。
例如,模型可能回答:
小说是 Moby-Dick ,作者赫尔曼·梅尔维尔。
虽然在事实上是正确的,但在精确匹配评估下,该响应得分为零,因为期望的答案仅仅是Moby-Dick。因此,推演捕获了一个失败案例,尽管模型拥有相关知识。
#2. 反思:识别模式
一个独立的优化器模型审查成功和失败的示例。它不检查模型参数,而是分析行为。通过将失败与成功进行比较,它可以区分反复出现的弱点与已经运作良好的指令。
在这种情况下,优化器注意到许多不正确的示例包含被不必要的解释包裹的正确答案,而成功的示例倾向于返回简洁的答案片段。这种对比成为了学习信号。
反思扮演着类似于反向传播的角色:它将观察到的结果转化为改进方向。
#3. 编辑:提出变更
一旦识别出模式,SkillOpt将其转化为对技能的具体修改。
系统通过三种简单的编辑操作运行:
- 添加一句话
- 删除一句话
- 替换一句话
对于正在进行的示例,优化器可能会提出:
使用最短的精确匹配片段来回答,无需额外解释。
通常会生成多个候选编辑。它们被合并、排序,并通过编辑预算进行过滤,该预算限制了技能在单次迭代中可以改变的程度。
此时,编辑仍然只是一个假设。
#4. 验证:赢得在技能中的一席之地
在成为技能的一部分之前,提出的变更必须证明其价值。
SkillOpt在一个从未在反思过程中使用过的保留验证集上评估候选技能。这防止系统针对当前批次的特殊性进行优化,类似于监督学习中验证集的作用。
有了新指令后,模型现在回答:
Moby-Dick
如果验证性能提升,编辑被接受并纳入技能。如果性能持平或下降,编辑被丢弃,保留之前的技能。
这个验证门控正是赋予SkillOpt优化纪律的机制。一句话只有在展示了可衡量的益处之后才能进入技能。
一次完整的训练集遍历构成一个epoch。在批次和epoch之间,推演-反思-编辑-验证循环不断重复,通过一系列经过验证的改进逐步完善技能。

1.3 什么保持了优化循环的稳定?
SkillOpt通过四种机制避免失控的自我修改,这些机制类似于传统机器学习优化器中使用的保护措施。
1. 有界更新:文本学习率
在神经网络训练中,学习率控制优化器在单次更新中可以移动权重的距离。SkillOpt通过编辑预算将相同的思想应用于文本,有时被称为文本学习率。
预算限制了在一次优化步骤中可以执行多少添加、删除和替换操作。
默认预算是每步四个编辑操作。在论文的消融研究中,移除此约束将SearchQA性能从87.1降至84.6。
2. 验证:每个编辑都必须赢得自己的位置
反思只是一个假设。在成为技能的一部分之前,编辑必须证明它能提升性能。
SkillOpt在一个从未在反思过程中使用过的保留验证集上评估每个候选技能。这防止优化器对激发编辑的示例过拟合。
默认情况下,SkillOpt使用基于精确匹配准确率的硬门控。只有候选方案得分高于当前技能时才会被接受。对于较小的验证集,仓库还提供了使用token重叠等部分信用指标的软门控。
3. 记忆:从过去的错误中学习
与简单的自我修订循环不同,SkillOpt会记住之前优化步骤中发生的事情。
它通过两种机制实现这一点:
- 被拒编辑缓冲区:被拒绝的候选方案不会被丢弃。相反,它们被存储为负样本,在未来的反思过程中展示给优化器。这减少了重复错误,并阻止之前不成功的编辑方向。移除缓冲区将SearchQA性能从87.1降至85.5。
- 慢更新:个别批次是有噪声的。一个好的编辑可能仅仅因为批次变化而未能通过验证。慢更新机制定期从更广阔的视角重新审视技能。这平滑了噪声更新,捕获了个别批次遗漏的改进,并帮助训练从局部错误中恢复。
4. 元技能:改进优化器本身
SkillOpt维护着一份名为元技能的第二文档。
这一区别很重要:
- 技能 → 目标模型用来解决任务的指令。
- 元技能 → 优化器模型用来改进技能的指令。
将技能想象为球员的战术手册,元技能想象为教练的笔记本。球员遵循战术,但教练会记录哪些战术赢得了比赛、哪些错误反复出现、哪些战术不太可能成功。即使球员从未看到过笔记本,它也指导着未来的决策。
优势:
- 随时间积累优化知识。
- 提高未来编辑的质量。
- 不增加推理时的成本。
论文报告称,当同时移除元技能和慢更新机制时,性能下降最大,SpreadsheetBench从77.5降至55.0。
2. 实验的关键发现
为了评估这个问题,作者在不同的任务、模型和智能体框架上测试了SkillOpt。
2.1 SkillOpt是如何评估的?
评估涵盖了六个基准测试,覆盖了不同类型的智能体行为:

实验使用了七个目标模型,从较小的GPT变体到前沿模型和开源Qwen模型。目标模型是被适配的智能体。一个独立的优化器模型负责提出对技能的编辑。在论文的主要配置中,GPT-5.5作为优化器,而目标模型在不同实验中变化。
SkillOpt与几类基线方法进行了比较:
- 无技能:模型在没有任何额外指令的情况下运行。
- 静态技能:手工设计或一次性LLM生成的技能。
- 提示优化器:如TextGrad和GEPA等方法,从轨迹反馈中改进提示。
- 技能演化方法:如Trace2Skill和EvoSkill等方法,在多次运行中重写技能,从智能体的行为和结果中学习。
2.2 结果如何评分?
每个基准测试定义了自己的成功标准,但报告遵循相同的模式。
每个任务从基准特定的验证器获得一个分数:
- SearchQA使用精确匹配准确率。
- OfficeQA和DocVQA将答案与参考输出进行比较。
- LiveMathematicianBench验证最终数学答案。
- SpreadsheetBench评估生成的电子表格是否满足目标规范。
- ALFWorld衡量任务完成度。
分数在0和1之间归一化,然后在评估集上取平均值。最终的基准测试分数以百分比报告。
阅读论文表格时有一个重要细节:大多数主要结果报告的是提升值,而非绝对分数。+9.6意味着SkillOpt相对于没有技能的同一模型,准确率提升了9.6个百分点。
2.3 主要结果是什么?
主要结果很直接:SkillOpt始终优于每个基线方法。 在所有52个评估设置中,涵盖不同模型、基准测试和执行环境(Claude code或codex),它要么是最佳方法,要么与最佳方法并列。

在GPT-5.5上,优化后的技能比无技能基线提升了23.5个百分点的平均准确率。
从表格中可以看出一个清晰的规律。
- 最大的提升出现在程序性任务上(SpreadsheetBench:+38.9,OfficeQA:+39.0,LiveMathematicianBench:+29.3)。这些任务受益于明确的程序、验证步骤和工具使用规则——这正是技能中编码的行为类型。
- 知识密集型问答任务提升较小,但仍然有提升。 SearchQA:+9.6,DocVQA:+12.4。当模型已经知道答案时,技能的辅助空间较小。它可以改进格式、检索策略和验证,但不能添加模型中尚未存在的知识。
同样的趋势也出现在较小的模型上:具体的提升幅度各不相同,但总体结论保持不变:技能对前沿模型和较小模型都有帮助。
还有两个发现对实践者特别有价值。
- 技能可以迁移:优化后的技能并不紧密耦合到训练它的模型或环境。论文报告了以下方面的成功迁移:不同模型大小、不同执行框架、同一领域内的相关基准测试。
- 技能保持轻量:最终的产物出人意料地轻量。典型的优化技能包含大约300-2,000个token,通常在只有一到四次被接受的编辑后就生成了。生成的指令也易于检查。SkillOpt倾向于学习直截了当的操作规则,而非发现晦涩的提示技巧。
2.4 该方法在哪里失效?
这个方法很强大,但有明确的局限性。
- 受限于目标模型。 技能可以改进模型的工作方式,但不能改变模型根本的知识或能力。
- 依赖于优化器质量。 更强的优化器倾向于发现更好的编辑,而较弱的优化器生成的提案更可能无法通过验证。
- 计算密集。 训练需要反复的推演、反思和验证,使优化比一次编写技能要昂贵得多。
- 对验证质量敏感。 门控的可靠性取决于保留验证集的质量。小的验证集可能使有用的改进难以被检测到。
- 任务相关的增益。 最大的提升出现在结构化的程序性任务上,如电子表格和办公工作流,而开放式问答通常看到的提升较小。
在实践中,当目标模型已经具备底层能力、验证集足够大以提供可靠反馈、并且任务奖励一致性的程序而非广泛的世界知识时,SkillOpt效果最好。
3. 在实践中应用SkillOpt
论文中的主要结果令人印象深刻,但更实际的问题是:如果你在自己实际使用的小模型上运行这个,经过训练的技能是否比没有技能要好?为了回答这个问题,我们将在单个notebook中端到端地复现一小部分SearchQA实验,看看这些提升在实践中是否站得住脚。
如果你想跟着操作或自己运行实验,欢迎联系我,我会分享notebook。
3.1 实验设计:三个分支,一个模型
设置的目标是将技能隔离为唯一的变量。目标模型、数据集和评估程序在所有运行中保持相同。唯一变化的是注入提示中的技能文档。
三个评估分支是:
- baseline(基线):模型不接收任何技能。
- paper_ckpt:使用论文作者训练的技能,在无需进一步优化的情况下进行评估。它作为迁移测试,测量在其他地方优化的技能在不额外训练的情况下应用于目标模型时是否仍然有效。
- self_trained:使用通过运行完整SkillOpt优化循环产生的技能。这测量训练过程本身是否可以在可用的计算预算和实验设置下生成有用的技能。
每次运行使用两个指标评估:
hard:精确匹配准确率,论文中使用的SearchQA主要指标。soft:token级别的F1,当答案包含正确的片段但不完全匹配时给予部分信用。
同时报告两个指标可以揭示模型知道答案但格式不佳的情况。高soft分数配以低hard分数,恰好指出了技能可以帮助的地方。
3.2 设置:模型、优化器和数据
实验使用了一种反映现实部署设置的非对称配置:
- 目标模型:
gpt-5-nano:一个小型、低成本的模型,在所有三个评估分支中回答每个问题。 - 优化器模型:
gpt-5:一个更强的模型,在训练期间分析轨迹并提出技能编辑。仅在self_trained分支中使用。
这遵循了论文的核心设计:更强的优化器为较弱的目标模型训练技能。虽然技能不能添加目标模型不具备的知识,但有能力的优化器可以发现更好的程序、指令和格式规则供目标遵循。
最终的数据划分包含:
- 训练集: 400个示例,用于生成推演轨迹和优化技能。
- 验证集: 200个示例,用于保留接受门控。
- 测试集: 1,400个示例,保留用于最终评估,在训练中从未见过。
标准答案仅用于评分和验证。它们从不包含在推理期间的模型输入中。
3.3 结果
在100项SearchQA评估切片上,两个基于技能的分支都击败了无技能基线。

主要结果很简单:在保持模型、数据和评估器不变的情况下,添加SkillOpt训练的技能比没有技能提高了性能。
论文技能 vs. 自训练模型
paper_ckpt分支不是一个干净的跨域迁移测试,因为它是在非常相似的SearchQA设置上训练的。self_trained分支表现最好。相对于paper_ckpt的提升很小,因此不应将其解读为自训练技能在一般情况下更好的有力声明。
hard/soft的划分也很有启发性。
基线已经有了0.867的高soft F1,这意味着模型经常检索或生成正确的答案片段。较低的hard EM表明一些错误可能是格式化或归一化错误,而非纯粹的知识缺失。两种技能都提高了hard EM和soft F1,表明改进来自于更干净的提取、更严格的答案格式化以及更好的线索到答案的匹配。
技能比较支持这一解读。
论文技能广泛且可复用,涵盖答案归一化、证据匹配、线索解读和常见知识陷阱。自训练技能保留了这一基础,但为本次运行添加了更严格的规则,特别是围绕<answer>...</answer>格式化、答案类型、日期、数量、完形填空问题、冠词和数字答案。
注意:这不是对论文的完整复现。它是在一个基准测试切片和一个小目标模型上的小规模复现。尽管如此,它回答了这个设置中的主要问题:训练过的技能优于没有技能,主要通过改进程序而非添加知识。
4、结束语
✓ 技能是可训练的外部状态。 SkillOpt更新技能文档,同时保持模型权重和执行框架不变。每项改进都可以追溯到一条明确的、可检查的编辑。
✓ 循环行为像一个优化器。 推演、反思、编辑和验证分别对应前向传播、反向传播、有界更新和验证检查。编辑只有在提升保留集性能时才能存活。
✓ 控制机制很重要。 论文的消融研究表明,文本学习率、被拒编辑缓冲区、慢更新和元技能各自都贡献了可衡量的提升。
✓ 结果很强但取决于任务。 SkillOpt在所有52个报告的评估单元中都是最佳或并列最佳,在结构化的程序性任务上获得最大提升,在开放性问答上提升较小。
✓ 天花板仍然是模型本身。 SkillOpt可以改进模型应用其能力的方式,但不能改变能力本身。成功依赖于有能力的优化器、可靠的评估和可以一致测量的任务。
原文链接:SkillOpt Explained: From Prompt Engineering to Skill Training
汇智网翻译整理,转载请标明出处