论文链接: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 的核心流程:
- 执行当前提示词,获取结果
- 用 LLM 对结果给出文本反馈(“文本梯度”)
- 根据反馈修改提示词
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。
流程:
- 调度并行子 Agent 集群执行多样化的任务
- 收集执行轨迹(成功和失败都有)
- 通过归纳推理,将轨迹局部经验分层整合为统一的技能目录
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 问题定义的精妙之处
这个形式化定义有几个值得注意的设计:
技能作为"外部状态"而非"提示的一部分":这使得技能可以被独立地训练、验证、导出和复用,而不与特定的提示模板耦合。
三分数据集:训练集提供经验,选择集防止过拟合,测试集报告最终性能——这正是深度学习中防止过拟合的标准做法。
严格门控而非宽松选择:修改必须"严格优于"当前版本才被接受,平局也被拒绝。这避免了退化和振荡。
线束无关:同一个优化器可以通过轻量适配器接口适配不同的执行线束(直接聊天、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 通过轻量级适配器接口实现了线束无关:
适配器的职责:
- 构建执行批次
- 将技能注入到 Agent 的上下文中
- 运行原生线束
- 返回带评分的执行轨迹
这意味着同一套 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 知识融合的关键节点
这些知识并非简单叠加,而是在几个关键节点上产生了创造性的融合:
“Skill = 外部状态"的洞察:将领域知识(Skill 的实际形态)和深度学习知识(可训练参数的概念)融合。这不是简单的类比,而是看到了一个深层的结构相似性——Skill 对 Agent 的作用,恰好类似于权重对网络的作用:都是在不改变主体架构的前提下,通过调整"参数"来适应特定任务。
“文本学习率"的设计:将深度学习的优化稳定性机制(学习率)和文本操作的特性融合。在参数空间中,学习率控制的是连续数值的步长;在文本空间中,“步长"的对应物是"编辑数量”——这是从连续空间到离散空间的概念迁移,需要同时理解两个空间的特点。
“拒绝编辑缓冲区"的设计:将深度学习中的正则化/负梯度概念与文本编辑的实践融合。在参数空间中,梯度天然带方向;在文本空间中,“什么是好的修改方向"并不显然。通过缓冲被拒绝的编辑,为未来的反思提供了"负方向"的信息。
“分离失败与成功"的设计:将认知科学中"程序性错误 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 | 提升幅度 | 最强对手提升 |
|---|---|---|---|---|
| SearchQA | 77.7 | 87.3 | +9.6 | GEPA +7.1 |
| SpreadsheetBench | 41.8 | 80.7 | +38.9 | GEPA +31.8 |
| OfficeQA | 33.1 | 72.1 | +39.0 | Human +33.8 |
| DocVQA | 78.8 | 91.2 | +12.4 | Trace2Skill +11.8 |
| LiveMath | 37.6 | 66.9 | +29.3 | Trace2Skill +14.4 |
| ALFWorld | 83.6 | 95.5 | +11.9 | LLM +9.7 |
六基准平均提升 +23.5 个百分点。
学到的技能示例
每条规则都是程序性的(how to do),而非实例性的(what happened):
- SearchQA:“从线索措辞推断预期答案类型,然后选择由共现独特证据支持的最短规范实体。”
- SpreadsheetBench:“检查工作簿结构和公式,然后在整个请求的目标范围内写入评估的静态值,而非依赖 Excel 重新计算。”
- LiveMath:“在最强陈述 MCQ 中,按定理强度排序选项,偏好有依据的更强结果选项而非真实但较弱的推论。”
这些规则的共同特点:简洁、可操作、不依赖于具体样本——这正是"程序性知识"的特征,也是技能能够跨场景迁移的根本原因。