SkillOpt 核心洞察

核心思想:把 Skill 文档当作”可训练的外部状态”

SkillOpt 的本质洞见是:Agent 的 skill 文档可以像神经网络的权重参数一样被训练

传统上,一个 Agent 由两部分组成:模型权重(不变)和 prompt/skill 文档(手写或一次性生成)。SkillOpt 将 skill 文档重新定义为 Agent 的”外部状态”(external state)——虽然 Agent 本身被冻结(frozen),但这个外部状态可以通过一个有纪律的优化过程来改进。

优化过程由一个独立的优化器模型(optimizer model)驱动,它阅读 rollout 轨迹和分数,提出编辑建议,再由验证机制决定是否采纳。最终产物是一个纯粹的文本文件,部署时不引入任何额外推理开销。

为什么这个设计能工作

1. 有界编辑防止语义漂移

如果允许优化器自由重写整个 skill 文档,一次编辑就可能彻底改变语义,导致优化过程不可控。SkillOpt 将编辑操作限制为三种原子操作——add(增加)、delete(删除)、replace(替换)——每种都有词级的作用域。这确保每次更新是”小步快跑”,类似于梯度下降中的小学习率。

2. 验证门控防止性能回退

神经网络训练中,验证集用于检测过拟合。SkillOpt 借用了同样的思想:每次编辑候选生成后,用它替换当前 skill 并在留出验证集(held-out validation set)上执行 rollout。只有严格提升验证分数的候选才被接受。这确保了优化过程是单调改进的——skill 要么变好,要么不变,绝不会退化。

3. 被拒编辑缓冲区提供负反馈信号

在传统 prompt 优化中,失败的尝试通常被丢弃,计算资源白白浪费。SkillOpt 将被拒绝的编辑存入一个 rejected-edit buffer,作为优化器模型后续调用的上下文。这让优化器”记住”哪些方向已被证伪,类似于深度学习中的负梯度信号。

概念转变:从”写 Skill”到”训练 Skill”

维度传统方式SkillOpt 方式
核心动作写(Write)训练(Train)
优化方向人类直觉 / 一次性生成数据驱动的反馈循环
改进保证验证门控保证单调改进
编辑粒度全篇重写有界原子编辑
失败处理丢弃存入负反馈缓冲区
长期稳定轮次级反思更新
部署开销零(都是文本)零(都是文本)

权衡分析

优点

  • 零推理开销: 部署产物是纯文本 skill 文档,不增加任何模型调用
  • 单调改进: 验证门控保证 skill 只变好不变差
  • 可解释: 每一步编辑都是可读的文本 diff
  • 可迁移: 训练好的 skill 可直接用于不同模型和 harness
  • 数据高效: 不需要梯度回传,不需要模型权重更新

代价

  • 需要留出数据划分: 必须预留一部分 task 实例作为验证集,不能全部用于训练
  • 优化器模型成本: 优化过程中需要调用前沿 LLM 进行反思和编辑提案(但这是一次性训练成本)
  • 搜索空间限制: 有界编辑机制虽然保证稳定,但也限制了单次编辑的表达力

与各方法的对比

方法优化对象优化机制验证门控负反馈部署开销
人工手写 SkillsSkill 文档人类专家
一次性 LLM SkillsSkill 文档单次 LLM 生成
TextGradPrompt 文本文本梯度
Trace2SkillSkill 文档轨迹提取
EvoSkillSkill 文档演化算法
SkeMex多分支 Skill 仓库效用追踪+治理
SkillOpt单一 Skill 文档优化器纪律训练✓ 严格✓ 缓冲区

SkillOpt vs SkeMex 详解

这是两个最接近的工作,但设计哲学根本不同:

  • SkillOpt 像一个”教练”(trainer)——专注于训练一个紧凑的 skill 文档,通过优化器纪律反复打磨,直到它在目标场景上达到最优。类似于给一个运动员做专项训练。
  • SkeMex 像一个”记忆系统”(memory system)——构建一个多分支 skill 仓库,通过效用追踪(utility tracking)和治理机制(governance)来管理和选择技能。类似于建立一个图书馆,在需要时检索最合适的技能。

SkillOpt 适合”我有一个具体任务,想把 skill 优化到极致”的场景;SkeMex 适合”我有多种场景,需要管理和复用多种技能”的场景。

标签

#skill-optimization #conceptual-shift #text-space-training #comparison

相关笔记