论文链接:arxiv.org/abs/2605.23904 代码仓库:aka.ms/skillopt 发表时间:2026年5月 机构:微软


一、论文背景

1.1 什么是 Agent Skill?

随着大语言模型(LLM)从"对话工具"进化为"行动主体",**AI Agent(智能体)**逐渐成为 AI 应用的核心形态。与仅能回答问题的聊天机器人不同,Agent 能够感知环境、自主规划、调用工具、执行多步操作来完成复杂任务。

在 Agent 的运行过程中,Skill(技能) 扮演着极其关键的角色。Skill 是一段结构化的自然语言策略文档,被插入到 Agent 的上下文中,为 Agent 提供特定领域的程序性知识。可以把它想象成给一位通才型员工发放的"岗位操作手册"——员工本身很聪明,但面对特定领域任务时,一份好的操作手册能让其表现产生质的飞跃。

具体来说,一个 Skill 通常包含:

  • 任务求解流程:应该先做什么、后做什么、遇到异常怎么办
  • 领域知识:该领域的专业术语、约定俗成的规则
  • 操作指南:哪些工具可用、如何调用、常见陷阱有哪些

例如,在 Claude Code 这类编程 Agent 中,Skill 可以是关于"如何调试 Python 异步代码"的专业指导;在电子表格处理 Agent 中,Skill 可以是"如何正确读取和写入 Excel 公式"的操作规程。

1.2 什么是 Harness?

Harness(执行线束) 是围绕 Agent 构建的运行时基础设施,相当于 Agent 的"操作系统"。模型本身只是一个文本输入/输出的"大脑",但要让 Agent 真正完成实际任务,还需要大量的支撑组件:

  • 系统提示(System Prompt):定义 Agent 的角色、行为边界
  • 工具系统(Tools):让 Agent 能够读写文件、执行命令、搜索网络
  • 执行环境(Sandbox):提供文件系统、浏览器、沙盒等运行时基础设施
  • 任务编排逻辑:子 Agent 调度、路由等
  • 执行控制逻辑:Hooks、中间件等

Claude Code、Codex CLI、OpenAI Codex 等都是典型的 Harness 实现。它们为 Agent 提供了"手脚"和"工作台",让模型从"能对话"进化为"能干活"。

1.3 当前 Skill 构建方式的困境

目前,Agent Skill 的来源主要有三种,但每种都存在根本性缺陷:

(1)手工编写

领域专家人工撰写 Skill 文档。这种方式质量上限高,但存在明显问题:

  • 极度依赖专家经验:需要既懂领域又懂 Agent 行为特性的人来写,人才稀缺
  • 脆弱且难以泛化:一个 Skill 往往只在特定场景下有效,换一个任务变体就可能失效
  • 无法根据反馈迭代:写完之后就固定了,无法根据 Agent 实际执行的效果自动改进

(2)一次性 LLM 生成

让 LLM 直接生成一个 Skill。速度快,但问题同样突出:

  • “一次性"意味着无法改进:生成后就不再调整,没有反馈循环
  • 质量参差不齐:LLM 对领域细节的理解往往不够深入,容易产生看似合理但实际有误的指导

(3)松散的自修订

让 Agent 或另一个 LLM 根据执行结果自行修改 Skill。看似合理,但缺乏控制机制:

  • 缺乏边界约束:修改可能删掉有用的规则、引入相互矛盾的指令、或者过拟合于少量样本
  • 无法保证优于起点:没有严格的验证机制,修改后可能反而变差
  • 不可复现:同一流程跑两次,可能得到完全不同的结果

核心矛盾:这三种方式都没有像深度学习中训练权重那样,给 Skill 一个系统化、可控、可验证的优化过程。深度学习之所以可靠,正是因为它有严格的优化范式——梯度计算、学习率控制、验证集门控、早停策略等。而 Skill 的构建至今仍是"手工作坊"式的。


二、论文定位和关联工作

SkillOpt 不是凭空出现的,它位于一条清晰的研究脉络之中。理解它在其中的位置,需要先了解几个关键的前序工作。

2.1 提示词自动优化(Automatic Prompt Optimization)

这是最直接的研究谱系。其核心思想是:既然 Prompt 对 LLM 的表现影响巨大,那就不应该完全依赖人工编写,而应该用算法自动优化。

  • AutoPrompt(2020):开创性地提出了自动搜索最优提示词的思路
  • APE(Automatic Prompt Engineer, 2022):用 LLM 生成候选提示词,再通过评估筛选
  • OPRO(2023):将提示词优化建模为优化问题,用 LLM 作为优化器迭代改进
  • DSPy(2023):提出了"声明式编程"范式,将提示词优化与程序结构解耦
  • EvoPrompt(2023):用遗传算法在提示词空间中搜索

这些工作为 SkillOpt 提供了"文本可以被优化"的核心思想,但它们的优化对象是短提示词(通常几十到几百个 token),而不是结构化的技能文档。Skill 文档更像是一份"操作手册”,远比一条提示词复杂、结构化。

2.2 文本空间梯度优化(TextGrad, 2024)

TextGrad 是一项重要的前序工作,它提出了"文本梯度"的概念——用 LLM 生成的自然语言反馈来模拟深度学习中的梯度信号,然后沿着这个"梯度方向"修改文本。

TextGrad 的核心流程:

  1. 执行当前提示词,获取结果
  2. 用 LLM 对结果给出文本反馈(“文本梯度”)
  3. 根据反馈修改提示词

SkillOpt 与 TextGrad 的关键区别:

  • TextGrad 的"梯度"是无界的文本反馈,可能导致大幅重写,破坏已有的有效内容
  • SkillOpt 引入了文本学习率来约束每次修改的幅度,类似于深度学习中控制梯度更新步长的学习率
  • TextGrad 没有严格的验证门控,修改后可能变差
  • SkillOpt 要求每次修改必须在验证集上严格提升才被接受

2.3 帕累托反思式提示进化(GEPA, 2025)

GEPA(Genetic-Pareto Prompt Evolution) 由 UC Berkeley 和 Stanford 联合提出,将提示词优化建模为多目标进化问题:

  • 维护一个种群(多个候选提示词)
  • 用 LLM 反思执行轨迹,生成语言反馈替代标量奖励
  • 通过 Pareto 前沿选择非支配个体
  • 用传统 RL 1/35 的计算量实现最高 19% 的性能提升

SkillOpt 与 GEPA 的关键区别:

  • GEPA 优化的是整个提示词(可能非常长),修改是无界的
  • SkillOpt 优化的是紧凑的技能文档,每次修改受文本学习率约束
  • GEPA 用 Pareto 前沿做种群级选择,SkillOpt 用严格的单点验证门控
  • SkillOpt 额外引入了拒绝编辑缓冲区和 epoch 级慢/元更新

2.4 轨迹蒸馏技能(Trace2Skill, 2026)

Trace2Skill 由 Qwen 团队提出,核心思路是:让 Agent 执行任务,记录执行轨迹,然后从轨迹中"蒸馏"出可复用的 Skill。

流程:

  1. 调度并行子 Agent 集群执行多样化的任务
  2. 收集执行轨迹(成功和失败都有)
  3. 通过归纳推理,将轨迹局部经验分层整合为统一的技能目录

SkillOpt 与 Trace2Skill 的关键区别:

  • Trace2Skill 是"从经验中提取"的蒸馏过程——一次性的,提取完就结束
  • SkillOpt 是"在验证信号驱动下迭代优化"的训练过程——可以多轮持续改进
  • Trace2Skill 缺乏对修改幅度的控制和验证门控
  • SkillOpt 明确区分训练集和验证集,防止过拟合

2.5 技能进化(EvoSkill, 2026)

EvoSkill 将技能发现问题建模为进化优化问题:

  • 维护候选技能集的种群
  • 通过 Pareto 前沿选择保留能改善验证性能的技能
  • 底层模型保持冻结,只优化技能

SkillOpt 与 EvoSkill 的关键区别:

  • EvoSkill 是种群级进化,修改是整体替换
  • SkillOpt 是单点级优化,修改是有界的增/删/改操作
  • EvoSkill 缺少文本学习率、拒绝缓冲区等稳定性机制
  • SkillOpt 在 Codex 和 Claude Code 线束上均显著超过 EvoSkill

2.6 技能评测基准(SkillsBench, 2026)

SkillsBench 是首个将 Agent Skill 作为"一等公民"来评估的基准框架,它系统性地评估 Skill 在不同 Agent、不同任务上的表现。SkillsBench 的一个重要发现是:LLM 自动生成的 Skill 往往不如人类编写的——这直接暴露了当前 Skill 构建方式的不可靠性,也正是 SkillOpt 试图解决的核心问题。

2.7 SkillOpt 的定位

综合来看,SkillOpt 在这条研究脉络中的定位非常清晰:

维度之前的路线SkillOpt 的突破
优化对象短提示词结构化的技能文档
修改方式无界重写/整体替换有界的增/删/改操作
验证机制无或宽松严格的验证集门控
稳定性保障无文本学习率 + 拒绝缓冲 + 慢/元更新
优化范式进化/蒸馏/梯度类比完整的深度学习优化类比

SkillOpt 是首个将深度学习的完整优化纪律系统性地迁移到文本空间 Skill 优化中的工作。 它不仅仅是"又一个提示词优化方法",而是一次范式层面的升级——把 Skill 从"手工作坊"的产物,变成可以像训练神经网络一样系统化优化的对象。


三、问题定义

3.1 从具体困境到抽象问题

论文面对的具体场景是:一个通用 LLM Agent 需要在特定领域任务上表现出色,但通用模型缺乏领域专知。传统做法是人工编写一份"技能文档"贴在 Agent 的上下文里,但这种做法不可靠、不可复现、无法持续改进。

论文的核心洞察是:这个问题在本质上与深度学习中的"模型训练"问题同构。

让我们来建立这个类比:

深度学习训练Skill 优化
可训练参数(权重)技能文档(自然语言)
冻结的模型架构冻结的目标 Agent
训练数据上的前向传播Agent 用当前 Skill 执行任务
损失函数的梯度对执行轨迹的反思分析
学习率控制的参数更新文本学习率控制的文档编辑
验证集上的性能门控选择集上的分数严格提升门控
过拟合的防范训练/选择/测试集三分
动量/优化器状态拒绝缓冲区 + epoch 级慢/元更新

3.2 形式化的问题定义

给定:

  • 技能 s:一段自然语言策略文档
  • 冻结的目标模型 M:行为要被适应的 LLM
  • 执行线束 h:运行 Agent 的基础设施
  • 训练集 D_tr:提供优化经验
  • 选择集 D_sel:门控每次更新
  • 测试集 D_test:最终报告性能

当 Agent M 在线束 h 中使用技能 s 处理输入 x 时,产生执行轨迹 τ(s) 和评分 r(s):

(τ(s), r(s)) = h(M, x, s)

优化目标:在测试集上找到最优技能 s*,使得:

Test(s*_sel) = (1/|D_test|) * Σ r(s*_sel)

关键约束:技能 s 只能通过自然语言编辑来修改,不能修改目标模型 M 的权重。

3.3 问题定义的精妙之处

这个形式化定义有几个值得注意的设计:

  1. 技能作为"外部状态"而非"提示的一部分":这使得技能可以被独立地训练、验证、导出和复用,而不与特定的提示模板耦合。

  2. 三分数据集:训练集提供经验,选择集防止过拟合,测试集报告最终性能——这正是深度学习中防止过拟合的标准做法。

  3. 严格门控而非宽松选择:修改必须"严格优于"当前版本才被接受,平局也被拒绝。这避免了退化和振荡。

  4. 线束无关:同一个优化器可以通过轻量适配器接口适配不同的执行线束(直接聊天、Codex、Claude Code),说明问题定义不依赖于特定的运行时环境。


四、问题解法

SkillOpt 的核心思想是将深度学习的优化范式系统性地迁移到文本空间。整个优化循环可以类比为神经网络的训练过程,包含"前向传播"、“反向传播”、“参数更新"和"正则化"四个阶段。

4.1 前向传播:展开证据收集

类比:在深度学习中,前向传播是用当前参数在训练数据上计算预测值和损失。

SkillOpt 的做法:让目标 Agent 用当前技能 s 在训练集 D_tr 上执行一批任务,记录完整的执行轨迹。

每个轨迹包含:

  • 任务描述
  • Agent 的消息序列
  • 工具调用记录
  • 环境观测
  • 命令输出
  • 最终答案
  • 验证器反馈(对/错、分数等)

批次大小的选择与深度学习类似:

  • 小批次更新快但噪声大——单条轨迹可能只暴露轶事式的问题
  • 大批次计算成本高但暴露更多可复用的系统性模式
  • 支持累积模式:多个小批次分别反思后合并为一次更新

4.2 反向传播:小批次反思

类比:在深度学习中,反向传播计算梯度——指出参数应该朝哪个方向修改。

SkillOpt 的做法:用一个独立的"优化器模型"分析执行轨迹,生成技能编辑建议。

这里有一个关键的精巧设计——分离失败与成功轨迹:

  • 失败轨迹的小批次反思→ 发现可复用的程序性错误,提出缺失或纠正性的规则
  • 成功轨迹的小批次反思→ 识别哪些行为已经有效,确保不丢失

为什么需要分离?因为如果混在一起,优化器可能会在尝试修复错误的同时意外删除有效的规则。分离处理使得两种信号的编辑意图清晰,不会互相干扰。

反思的输出是结构化的编辑操作,包括三种类型:

  • Add(增加):添加新的规则或指导
  • Delete(删除):删除已证实无效或冲突的规则
  • Replace(替换):修改现有规则的表述

这些编辑经过层次化合并:先分别在失败驱动和成功驱动的编辑内部合并,再以失败纠正优先级结合——确保解决已知问题优先于保留已知好的行为。

4.3 有界文本更新:文本学习率

类比:在深度学习中,学习率控制每次参数更新的步长——太大会振荡,太小会收敛过慢。

SkillOpt 的做法:引入文本学习率 L_t,限制每步允许的最大技能编辑数量。

优化器对合并后的编辑池按预期效用排序,截断至前 L_t 个。这是 SkillOpt 与 TextGrad 等前序工作的关键区别——TextGrad 的文本反馈是无界的,一次修改可能大幅重写整个文档,导致:

  • 删除有用的已有规则
  • 引入不兼容的新指令
  • 过拟合于当前批次的少数样本

文本学习率可以配合不同的调度策略:

  • 常数调度:每步固定编辑数量
  • 线性调度:从大到小线性衰减
  • 余弦调度(默认):从较大编辑开始快速探索,逐渐衰减到较小编辑精修——与深度学习中的余弦退火完全对应
  • 自主调度:让优化器自行决定

默认的余弦调度特别有意义:训练初期需要大幅调整,后期需要小幅精修——这与神经网络训练的直觉完全一致。

编辑模式也有两种:

  • Patch 模式(默认):对技能文档进行局部增/删/改操作,保留大部分内容不变
  • Rewrite 模式:全局重写,适合需要大幅重组的情况

4.4 验证门与拒绝编辑缓冲

类比:在深度学习中,我们用验证集来决定是否接受参数更新(早停、模型选择)。

SkillOpt 的做法:每个候选技能在选择集 D_sel 上评估,仅当严格大于当前选择分数时才被接受(平局也被拒绝)。

  • 接受 → 成为新的当前技能;如果超过历史最佳,则更新为 best_skill.md
  • 拒绝 → 当前技能保持不变

但被拒绝的编辑并非完全浪费——它们被记录到拒绝编辑缓冲区(Rejected-Edit Buffer)中。后续的反思调用可以查看此缓冲区,知道"哪些修改已经被试过且无效”,避免重复相同的失败编辑。这相当于深度学习中的负梯度信号或正则化——提供了"不要做什么"的信息,而无需在推理时增加任何额外成本。

4.5 Epoch 级慢/元更新

类比:在深度学习中,动量(Momentum)积累了历史梯度信息,使得优化更稳定。

SkillOpt 的做法:在每一个 epoch 结束时,执行额外的"慢更新"和"元更新"。

慢更新:

  • 对相同的训练任务,分别用上一个 epoch 和当前 epoch 的技能运行
  • 将结果分组为四类:改进、回归、持续失败、稳定成功
  • 优化器根据这些纵向对比,将简明的指导块写入技能文档的受保护区域
  • 仍需通过验证门控

元技能:

  • 优化器侧专用,总结哪些编辑模式有帮助、哪些被拒绝、哪些失败持续存在
  • 附加到未来优化器的提示中,不随部署技能发送
  • 实现了关注点分离:部署的技能保持紧凑,训练过程保留更丰富的编辑记录

消融实验表明,移除元技能和慢更新后,SpreadsheetBench 的性能暴跌 22.5 个百分点——这是所有消融中最大的退化,说明 epoch 级的纵向更新对于复杂程序性任务至关重要。

4.6 线束无关部署

SkillOpt 通过轻量级适配器接口实现了线束无关:

适配器的职责:

  1. 构建执行批次
  2. 将技能注入到 Agent 的上下文中
  3. 运行原生线束
  4. 返回带评分的执行轨迹

这意味着同一套 SkillOpt 优化器无需修改即可适配:

  • 直接聊天模式(技能前置到系统提示)
  • Codex 线束(通过 codex CLI 在沙箱中运行)
  • Claude Code 线束(通过 claude CLI 镜像相同的工作区契约)
  • 以及其他任何可提供"输入任务→输出评分"接口的线束

最终输出是一个紧凑的 best_skill.md 文件,通常只有 300-2000 个 token,部署时零额外优化器调用。

4.7 深度学习类比全景表

深度学习概念SkillOpt 对应作用
训练批次展开批次大小控制每次收集多少执行轨迹
梯度计算小批次反思从轨迹中提取修改方向
学习率文本编辑预算 L_t控制每步修改幅度
学习率调度余弦/线性/常数调度从探索到利用的过渡
验证集选择集 D_sel 门控防止过拟合,保证修改有效
动量Epoch 级慢/元更新积累历史信息,稳定优化
负梯度/正则化拒绝编辑缓冲提供负反馈信号,避免重复错误
早停严格门控(平局拒绝)确保每步改进都是真实的
模型部署best_skill.md紧凑的可复用产物

五、必要知识反推

假设找一位完全没有相关知识和信息的人来复现这项工作,他必须掌握哪些必要知识?这些知识又是如何融合最终完成这篇论文的?

5.1 领域知识层

(1)大语言模型与 Agent 的运作机制

必须理解 LLM 是如何工作的——它是一个文本输入/输出系统,通过上下文(包括系统提示、对话历史、工具定义等)来决定行为。必须理解 Agent 的基本架构:感知→规划→行动→反馈的循环。不理解这些,就无法理解"技能"如何影响 Agent 行为,也无法理解为什么修改一段自然语言文本就能改善 Agent 表现。

(2)Skill 和 Harness 的概念与实践

必须深入理解当前的 Skill 生态——Claude Code 的 .claude/skills/、Codex 的 AGENTS.md 等实践中,Skill 是如何组织、如何被 Agent 加载和使用的。必须理解 Harness 是什么——它提供了什么基础设施、如何调用工具、如何管理执行环境。这是问题的"原点",不知道当前系统怎么运作就无法知道如何改进。

(3)深度学习优化的完整范式

不是简单地知道"梯度下降"四个字就够了,而是必须深入理解:

  • 批次训练的原理和批次大小的权衡
  • 学习率的物理意义和调度策略
  • 训练/验证/测试集三分的必要性
  • 早停和模型选择策略
  • 动量、正则化的作用机制
  • 过拟合的识别和防范

只有对这些概念有深入理解,才能将它们准确映射到文本空间——否则类比会流于表面,无法产生真正有效的机制。

5.2 方法论知识层

(4)提示词优化的研究脉络

必须了解从 AutoPrompt 到 DSPy 到 TextGrad 到 GEPA 的完整脉络,知道每种方法的优缺点,才能在它们的基础上做突破。特别是 TextGrad 的"文本梯度"概念和 GEPA 的"反思式进化"思想,是 SkillOpt 的直接思想来源。

(5)进化计算与遗传算法

EvoSkill 和 GEPA 都使用了进化框架。理解进化计算中种群维护、选择压力、变异策略等概念,有助于理解 SkillOpt 为什么选择单点优化而非种群进化——以及如何在单点优化中保留进化思路的优点(如多样性)。

(6)程序性知识的表征与传递

必须理解"技能"在认知科学中的含义——它不仅是知识(knowing what),更是程序性知识(knowing how)。一条好的技能规则应该描述"怎么做"而非"做什么"。这决定了 SkillOpt 的反思机制为什么聚焦于发现可复用的程序性错误,而非实例级的修复。

5.3 工程知识层

(7)多线束适配的工程实现

要让 SkillOpt 同时适配直接聊天、Codex CLI、Claude Code 等多种线束,需要设计一个足够抽象又足够实用的适配器接口。这要求对各种线束的内部机制有深入了解,知道技能如何注入、执行如何启动、轨迹如何收集、评分如何获取。

(8)评估体系的设计

必须知道如何设计公平、可靠、有区分度的评估:

  • 为什么需要训练/选择/测试三分
  • 如何防止测试集泄露
  • 如何处理不同基准的评分口径差异
  • 如何设计消融实验来验证每个组件的贡献

5.4 知识融合的关键节点

这些知识并非简单叠加,而是在几个关键节点上产生了创造性的融合:

  1. “Skill = 外部状态"的洞察:将领域知识(Skill 的实际形态)和深度学习知识(可训练参数的概念)融合。这不是简单的类比,而是看到了一个深层的结构相似性——Skill 对 Agent 的作用,恰好类似于权重对网络的作用:都是在不改变主体架构的前提下,通过调整"参数"来适应特定任务。

  2. “文本学习率"的设计:将深度学习的优化稳定性机制(学习率)和文本操作的特性融合。在参数空间中,学习率控制的是连续数值的步长;在文本空间中,“步长"的对应物是"编辑数量”——这是从连续空间到离散空间的概念迁移,需要同时理解两个空间的特点。

  3. “拒绝编辑缓冲区"的设计:将深度学习中的正则化/负梯度概念与文本编辑的实践融合。在参数空间中,梯度天然带方向;在文本空间中,“什么是好的修改方向"并不显然。通过缓冲被拒绝的编辑,为未来的反思提供了"负方向"的信息。

  4. “分离失败与成功"的设计:将认知科学中"程序性错误 vs. 有效行为"的区分与优化方法融合。失败轨迹暴露的是"缺什么”(需要添加/修正),成功轨迹暴露的是"有什么”(需要保留),两者的编辑意图天然不同,需要分别处理再合并。


六、论文中可以提取的通用性灵感

灵感 1:将"手工作坊"升级为"系统化训练"的思路

核心思想:任何目前依赖人工经验、缺乏反馈循环、无法保证改进方向的实践,都可以考虑引入深度学习式的优化范式。

推广场景:

  • MLOps 中的超参数调优:当前很多超参数仍依赖经验设置,可以引入类似的"编辑预算 + 验证门控"机制
  • 教育领域的学习路径优化:学生的学习策略目前依赖教师经验,可以构建"策略 → 执行 → 反馈 → 策略编辑"的优化循环
  • 产品功能的迭代优化:产品功能的设计和迭代往往依赖 PM 经验,可以引入有界修改 + 严格验证的机制

灵感 2:有界更新优于无界重写

核心思想:在任何迭代改进的场景中,控制每次修改的幅度(“步长”),远比允许大幅重写更稳定、更可靠。

论文证据:SkillOpt 的消融实验表明,任何适中的有界编辑预算都击败无预算重写。TextGrad 等无界方法的实际效果往往不如有界的 SkillOpt。

推广场景:

  • 代码重构:每次只改一小块(有界修改),比一次性重写整个模块更安全
  • 组织变革:渐进式改革(有界更新)比激进式变革(无界重写)更可能成功
  • 文档迭代:对技术文档做少量精确修改,比大幅重写更容易保持质量
  • 法规修订:修订案(Patch 模式)比推倒重来(Rewrite 模式)更可控

灵感 3:拒绝信息是宝贵的学习信号

核心思想:被否决的方案不是垃圾,而是"负样本”——它们告诉你什么不该做,这种信息与"什么该做"同样重要。

论文证据:移除拒绝编辑缓冲区后,SpreadsheetBench 性能下降 4.6 个百分点。被拒绝的编辑提供了有效的负反馈信号,帮助后续反思避免重复错误。

推广场景:

  • 面试/招聘:记录被拒绝的候选人的特征,帮助未来更精准地筛选
  • 科研实验:记录失败的实验参数组合,避免重复探索已知无效的空间
  • 投资决策:记录被否决的投资标的及否决理由,形成"负向知识库”
  • 医疗诊断:记录被排除的诊断假设及排除依据,避免重复考虑

灵感 4:分离成功和失败信号,分别处理

核心思想:正反馈和负反馈承载着不同的信息——前者告诉你"保留什么”,后者告诉你"修正什么"。混合处理会互相干扰,分离处理再合并更有效。

论文证据:SkillOpt 将失败轨迹和成功轨迹分区为不同的小批次分别反思,再以失败纠正优先级合并。直接混合处理可能导致在修复错误的同时意外删除有效规则。

推广场景:

  • 代码审查:分别收集"bug 报告"(失败信号)和"良好实践"(成功信号),分别分析再综合
  • 用户反馈分析:将投诉和建议分开处理,投诉用于修复问题,建议用于保留优势
  • 教学设计:分别分析学生做错的题(缺什么知识)和做对的题(已掌握什么),针对性地设计教学内容

灵感 5:关注点分离——训练态与部署态解耦

核心思想:训练过程中需要的丰富信息(元数据、编辑记录、失败日志)不应随部署产物一起发布。部署产物应该尽可能紧凑,训练态的额外信息通过独立通道传递。

论文证据:SkillOpt 的"元技能"只附加到优化器的提示中,不随部署技能发送。最终部署的只是紧凑的 best_skill.md(300-2000 token),而非训练时的完整编辑历史。

推广场景:

  • 软件发布:开发时的调试日志、性能分析数据不应打包到生产发布中
  • 模型蒸馏:大模型的训练数据、训练日志不应影响推理时的资源消耗
  • 知识管理:专家思考过程的完整记录是训练材料,但最终交付给执行者的是精炼后的操作手册

灵感 6:跨域迁移——优化产物而非优化过程的可移植性

核心思想:优化过程往往是环境特定的(需要特定的训练数据、计算资源、反馈信号),但优化产物(最终得到的技能/知识/策略)可能在更广的范围内迁移。

论文证据:SkillOpt 优化后的技能可以跨模型规模(GPT-5.4 → GPT-5.4-mini/nano)、跨线束(Codex → Claude Code)、跨基准(OlympiadBench → Omni-MATH)迁移,无需再次优化。所有迁移行为均为正向。

推广场景:

  • 管理方法论:在特定公司/团队中提炼的管理方法论,可能在不同规模、不同文化的组织中也能适用
  • 个人学习策略:在某门学科中总结的学习方法,可能迁移到相近学科
  • 工程最佳实践:在某个项目中沉淀的最佳实践,可以推广到同类项目
  • 关键前提:迁移的"技能"应该是程序性知识(how to do),而非实例性知识(what happened)——前者可迁移,后者不可

灵感 7:紧凑性是可靠性的基础

核心思想:在复杂系统中,更紧凑的表征往往更可靠、更可迁移。冗余和膨胀带来的是脆弱和过拟合。

论文证据:SkillOpt 优化后的技能极其紧凑——379 到 1995 个 token,中位数约 920 个 token。仅 1-4 次接受编辑就产生了巨大的性能提升。相比人类编写的冗长技能,紧凑的优化技能反而更有效。

推广场景:

  • API 设计:精简的 API 比臃肿的 API 更稳定、更易用
  • 法规制定:简洁的法律条文比复杂冗长的条文更易执行
  • 技术文档:简明扼要的操作指南比详尽的手册更实用
  • 沟通效率:一句话说清楚的要点,胜过十页的详细报告

附录:实验结果速览

核心数据

SkillOpt 在 52 个评估单元(7 模型 × 6 基准 × 3 线束)中全部最佳或并列最佳。

在 GPT-5.5 直接聊天模式下的提升:

基准无技能基线SkillOpt提升幅度最强对手提升
SearchQA77.787.3+9.6GEPA +7.1
SpreadsheetBench41.880.7+38.9GEPA +31.8
OfficeQA33.172.1+39.0Human +33.8
DocVQA78.891.2+12.4Trace2Skill +11.8
LiveMath37.666.9+29.3Trace2Skill +14.4
ALFWorld83.695.5+11.9LLM +9.7

六基准平均提升 +23.5 个百分点。

学到的技能示例

每条规则都是程序性的(how to do),而非实例性的(what happened):

  • SearchQA:“从线索措辞推断预期答案类型,然后选择由共现独特证据支持的最短规范实体。”
  • SpreadsheetBench:“检查工作簿结构和公式,然后在整个请求的目标范围内写入评估的静态值,而非依赖 Excel 重新计算。”
  • LiveMath:“在最强陈述 MCQ 中,按定理强度排序选项,偏好有依据的更强结果选项而非真实但较弱的推论。”

这些规则的共同特点:简洁、可操作、不依赖于具体样本——这正是"程序性知识"的特征,也是技能能够跨场景迁移的根本原因。