SkillOpt 方法详解

问题形式化

SkillOpt 将 Agent 的执行过程定义为:

执行(执行轨迹, 分数) = Agent(skill_doc, task_instance)

即:给定一个 skill 文档和一个任务实例,冻结的 Agent 产生执行轨迹和对应的评分。

优化目标:在训练集上找到最优的 skill 文档 s*,使得在测试分布上的期望分数最大化。

整个优化过程保持 Agent 模型权重完全不变——唯一变化的是 skill 文档的文本内容。

七步管道 (Pipeline)

第一步:Rollout 批次执行

使用当前 skill 文档,在训练集的一个 batch 上让冻结 Agent 执行 rollout:

  • 输入:当前 skill 文档 + batch 中的 task 实例
  • 输出:每个实例的 (执行轨迹, 分数)
  • 轨迹包含 Agent 的思考、工具调用、中间结果等完整执行记录

第二步:小批次反思 (Minibatch Reflection)

将 rollout 结果分成 K 个小批次(minibatch),优化器模型对每个小批次进行独立分析:

  • 阅读成功和失败的执行轨迹
  • 识别共通的错误模式和可改进点
  • 为每个小批次生成编辑提案(edit proposals)

这里使用独立优化器模型而非 Agent 自身的核心原因:Agent 本身可能不够强,用它来反思自己的错误存在盲点。

第三步:编辑提案生成 (Add / Delete / Replace)

优化器模型对每个小批次生成三种结构化编辑:

操作类型含义示例
Add在文档指定位置插入新内容在 “步骤3” 之后增加一个新的子步骤
Delete删除文档中的一段内容删除不再有效的错误指导
Replace替换文档中的一段内容将模糊的指令替换为更精确的描述

每次编辑都有明确的词级作用域(word-level scope),防止单次修改过大。

第四步:合并与排序 (Merge & Rank)

K 个小批次产生的编辑进行汇聚处理:

  1. 去重: 移除重复或高度相似的编辑提案
  2. 冲突解决: 当多个编辑涉及同一文档位置时,保留分数更高的
  3. 编辑预算裁剪: 按编辑预算 L 限制最终采纳的编辑数量

第五步:留出验证门控 (Held-out Validation Gate)

这是 SkillOpt 最关键的机制:

  • 将编辑候选应用到当前 skill,生成候选 skill
  • 留出验证集(训练时未曾见过的任务实例)上执行 rollout
  • 只有当候选 skill 的验证分数 严格大于 当前 skill 时才接受
  • 否则回退,保留当前 skill

这保证了优化过程是单调不退化的。

第六步:被拒编辑缓冲区 (Rejected-Edit Buffer)

被验证门控拒绝的编辑不会消失,而是存入一个专用缓冲区:

  • 缓冲区保存被拒编辑及其对应的验证分数
  • 在后续轮次中,优化器模型的 prompt 中会包含这些失败案例
  • 效果:优化器学习避开已被证伪的编辑方向

第七步:轮次级慢/元更新 (Epoch-wise Slow / Meta Update)

每轮(epoch)结束时执行全局反思:

  • 汇总本轮所有接受和被拒的编辑
  • 分析哪些编辑方向长期有效、哪些方向反复失败
  • 产生一个”元更新”信号,调整下一轮的编辑策略

作用类似深度学习中的 momentum:维持稳定的优化方向,抑制噪声。

深度学习类比表

DL 概念SkillOpt 对应说明
参数 (Parameter)Skill 文档 (markdown)被优化的对象
梯度方向 (Gradient)Add/delete/replace 编辑提案指向改进方向的信号
学习率 (Learning Rate)编辑预算 L控制每轮修改幅度
学习率调度 (LR Schedule)L 随轮次衰减初期大步探索,后期精细打磨
验证检查 (Validation)留出门控 (Held-out Gate)防止过拟合/退化
动量 (Momentum)轮次级慢/元更新累积有效方向,平滑噪声
负梯度 (Negative Gradient)被拒编辑缓冲区告诉优化器”不要往这里走”

实现细节

编辑预算调度 (Edit Budget Scheduling)

  • 编辑预算 L: 每轮最多采纳的编辑操作数量(文本空间的”学习率”)
  • 衰减策略: L 随轮次增加而减小
    • 早期:较大的 L → 允许较多编辑,快速探索
    • 后期:较小的 L → 精细调节,避免扰动已优化的结构

小批次大小 K

  • 将训练 batch 划分为 K 个小批次
  • 每个小批次独立运行优化器反思
  • K 的选择权衡:K 大 → 编辑多样性强;K 小 → 每个小批次数据更多,分析更准

验证集划分比例

  • 从可用任务实例中划分一部分作为留出验证集
  • 验证集始终不参与训练 rollouts
  • 典型划分:80% 训练 / 20% 验证(具体比例取决于任务数量和多样性)

优化器模型选择

  • 使用前沿 LLM(如 GPT-5.5 或更强)作为优化器
  • 优化器模型只需要”够强”——能理解轨迹并提出合理编辑
  • 优化器模型可以是任何支持长上下文和结构化输出的模型

标签

#skill-optimization #method #pipeline #deep-learning-analogy

相关笔记