SkillOpt:智能体技能优化器

通过将 Agent 作为神经网络来训练,教授 Agent 技能。

SkillOpt:智能体技能优化器
AI模型价格对比 | AI工具导航 | ONNX模型库 | Vibe Coding教程 | PLC在线仿真器 | Tripo 3D | Meshy AI | ElevenLabs | KlingAI | ArtSpace | Phot.AI | InVideo

在过去两年中,我们看到了 AI agent 的快速发展。特别是现代 agent,它们可以搜索网页、分析文档、编写代码、处理电子表格,甚至与软件环境交互。然而,有一个问题。

大多数 agent 仍然严重依赖已经存储在模型权重中的知识。当我们想让 agent 在特定任务上表现更好时,通常有三种选择:

  1. 手动编写指令。
  2. 使用另一个 LLM 生成指令。
  3. 微调模型。

每种方法都有局限性。

手动编写指令需要时间和专业知识。一次性生成的指令通常会过时或在新的场景中失效。微调代价高昂,尤其是在使用闭源前沿模型时。

1、什么是 SkillOpt?

SkillOpt 论文引入了一个不同的思路:不训练模型,而是训练技能。

它将技能视为一个独立的文档,包含程序、规则、工具使用指南、格式指令和领域特定知识。SkillOpt 不是改变模型权重,而是持续利用 agent 的性能反馈来改进这个技能文档。

其结果是一个行为类似于深度学习中的梯度下降的系统,但不是优化数值参数,而是优化文本。

这个简单的想法将 agent 技能变成了可训练的资产。

2、现有方法的挑战

要理解 SkillOpt,首先需要理解现有方法是如何失败的。

2.1 手工编写的技能

在使用 agent 时,我们根据任务手动编写指令,这通常被称为系统 Prompt,或者最近更常被称为技能

例如:

  • 始终验证电子表格公式。
  • 在回答之前搜索多个来源。
  • 对输出使用特定格式。

这些指令最初可以帮助,但当 agent 犯错时它们不会自动改进。每次改进都需要人类专家的手动干预。

2.2 一次性技能生成

有时,甚至技能生成的任务也会委托给 LLM。在这种情况下,我们要求一个强大的 LLM 生成技能文档。问题在于,生成的技能在观察到真实的失败之前就已经创建了。

如果 agent 反复犯错,技能保持不变。

2.3 Prompt 优化方法

一种鲜为人知的 prompt 优化方法是 TextGrad 和 GEPA,它们利用反馈来优化 prompt。

虽然有用,但它们主要关注 prompt 的演变,而不是维护一个可重用的技能工件。由此产生的改进通常与特定设置绑定。

2.4 技能演化系统

还有其他方法,如 Trace2Skill 和 EvoSkill 尝试从执行轨迹中学习技能。然而,它们缺乏机器学习优化中常用的一些控制:

  • 学习率
  • 验证检查
  • 受控更新
  • 被拒绝步骤的记忆

因此,大规模的技能变更有时会使性能变差。

如果技能是 agent 的主要适应层,那么技能必须以与神经网络优化相同的纪律来训练。这就是 SkillOpt 背后的核心理念。

3、SkillOpt:核心思路

SkillOpt 背后的关键洞察出人意料地简单:将技能文档视为 agent 的可训练状态。

在这里,目标模型保持冻结,一个单独的优化器模型分析 agent 的轨迹并提出对技能文档的修改。

Agent-技能优化循环如下:

  1. 使用当前技能运行 agent。
  2. 收集成功和失败的轨迹。
  3. 分析轨迹。
  4. 提出对技能的编辑。
  5. 验证更新后的技能。
  6. 只有当性能改善时才接受技能。

这创建了一个类似于训练神经网络的反馈循环。

4、深入 SkillOpt

步骤 1:收集部署证据

首先,agent 使用当前技能执行任务。在执行过程中,SkillOpt 收集:

  • 用户交互
  • 工具调用
  • 中间推理
  • 最终输出
  • 评估分数

这些收集的轨迹成为技能改进的训练数据。你可以把这看作在强化学习过程中收集训练样本。

步骤 2:反思和错误分析

SkillOpt 将成功和失败的轨迹分开,优化器模型分析这两种轨迹。

  • 失败揭示了缺失的程序。
  • 成功揭示了值得保留的行为。

SkillOpt 不是关注个别示例,而是处理轨迹的小批量以发现重复出现的模式。例如:

假设一个 agent 反复在电子表格任务中失败,因为它假设公式会自动重新计算。优化器可能会学习一条新规则:

写入求值的静态值,而不是依赖重新计算。

这条规则成为技能文档的一部分。

步骤 3:受控技能编辑

大多数之前的方法重写 prompt 的大部分内容,但 SkillOpt 改变了这一点。

SkillOpt 执行结构化编辑,如 ADD、DELETE 和 REPLACE。系统引入了一个文本学习率的概念,即不是允许无限修改,每次更新只允许有限数量的编辑。

这类似于梯度下降使用学习率来避免不稳定的跳跃。好处包括:

  • 稳定的优化
  • 减少过拟合
  • 更容易调试
  • 更好地保留有用的规则

步骤 4:验证门控

每个提出的技能都会在单独的验证集上进行评估。如果更新后的技能表现更好,则接受;否则,拒绝。

这防止有害的修改进入最终技能。如果没有这一步,优化器可能会持续引入看似有用但实际降低性能的变更。

步骤 5:被拒绝编辑缓冲区

即使是被拒绝的编辑也不会被丢弃;SkillOpt 将它们存储在被拒绝编辑缓冲区中。

未来的优化步骤可以检查这段历史并避免重复相同的错误。这创建了一种负反馈记忆。

优化器不仅从成功中学习,也从失败中学习。

步骤 6:慢更新和元更新

SkillOpt 引入了第二种学习机制,称为慢/元更新。在每个 epoch 结束时,SkillOpt 比较:

  • 之前的技能版本
  • 当前的技能版本

从中识别改进、回归、持续失败和稳定成功。

这些长期观察被转化为未来优化的高级指导。你可以把这看作技能学习的动量机制。

5、结果和评估

评估在各种模型比较和基准数据集上进行了广泛测试。

SkillOpt 在以下方面进行了测试:

  • 6 个基准
  • 7 个目标模型
  • 3 个执行环境

主要结果: SkillOpt 在 52 个评估单元中的 52 个都取得了最佳或并列最佳的表现。这是一个异常强的结果。

5.1 跨模型迁移

另一个令人印象深刻的发现是可迁移性。为一个模型优化的技能通常会改善另一个模型。例如:

在 GPT-5.4 上训练的 SpreadsheetBench 技能改善了:

  • GPT-5.4-mini
  • GPT-5.4-nano

无需额外优化。

这表明学习到的技能捕获的是可重用的程序,而不是模型特定的技巧。

5.2 跨 Harness 迁移

SkillOpt 还测试了在以下环境之间迁移技能:

  • Codex 环境
  • Claude Code 环境

一些迁移的技能产生的增益超过基线 50 个百分点。这很重要,因为这意味着组织可以优化一次技能,然后在多个 agent 平台上重用它。

6、为什么 SkillOpt 有效

SkillOpt 有效的四个关键原因:

  • 有界更新: 小编辑防止灾难性变化。
  • 验证门控: 只有有益的技能才能存活。
  • 被拒绝编辑记忆: 过去的失败变成学习信号。
  • 慢元更新: 长期模式得以保留。

移除这些组件会导致明显的性能下降,特别是在复杂程序性任务上。

SkillOpt 的优势

  • 无需模型微调: 适用于闭源模型。
  • 可迁移的技能: 我们可以在模型和环境之间移动技能。
  • 人类可读: 最终技能保持紧凑和可解释。大多数学习到的技能只包含几百到几千个 token。
  • 稳定的优化: 学习率控制和验证检查减少了不稳定性。
  • 零部署成本: 优化器仅在训练期间运行。

在推理时,只使用优化后的技能。

SkillOpt 的缺点

  • 需要大型训练运行: 生成轨迹和评估可能代价高昂。
  • 需要强评估器: 验证门控的好坏取决于评估指标。
  • 额外的优化基础设施: 组织必须构建:轨迹收集、反思流水线、验证系统、技能管理工作流
  • 不能替代微调: 某些知识缺陷仍然需要模型更新。技能优化主要改善程序而非核心知识。

7、结束语

SkillOpt 引入了我们思考 agent 改进方式的一个重要转变。

多年来,默认的假设是改进 agent 意味着改进模型权重。SkillOpt 表明存在另一条路径,即改进技能。

通过将技能视为可训练的工件,并使用从深度学习借来的概念(如学习率、验证门控、反馈循环和受控更新)来优化它们,系统在不触碰底层模型的情况下实现了显著的增益。

结果令人印象深刻:在所有 52 个评估设置中取得最佳或并列最佳表现,在多个基准上有显著改善,并在模型和执行环境之间成功迁移。

最大的收获不是基准分数。而是 agent 技能可以成为 prompt 和模型权重之间的一个新优化层的想法。

随着 AI agent 在生产系统中变得更加普遍,像 SkillOpt 这样的方法可能成为持续改进 agent 行为同时保持部署简单、可解释和经济高效的最实用方式之一。


原文链接:SkillOpt: Integrating Skills into Agents

汇智网翻译整理,转载请标明出处