type
status
date
slug
summary
tags
category
icon
password
原始链接
- GitHub 仓库:microsoft/SkillOpt
- 论文 PDF:arXiv PDF
- 项目页:SkillOpt 官方项目页
- 文档与复现说明:SkillOpt Documentation
- v0.2.0 发布说明:SkillOpt-Sleep
- SkillOpt-Sleep 说明:docs/sleep/README.md
为什么今天选它
Mako 的想法最激进,但论文主动隐藏了工具源码、攻击链和运行结果,现阶段很难独立核对。MiMo-Code 的重点更偏模型训练,Omnigent 的主要价值是统一调度。SkillOpt 则抓住了一个更容易被产品团队复用的问题:一个智能体反复做同类任务后,怎样把经验写成稳定、可验证、能直接交付的技能,而不是堆一批未经检查的“经验总结”。
热度也够。GitHub 在 7 月 14 日显示约 12.6k stars、233 次提交;7 月 2 日的 v0.2.0 又把论文里的离线训练扩成 SkillOpt-Sleep,让 Codex、Claude Code、Copilot、Devin 和 OpenClaw 可以在夜间回看会话、重放任务,再把通过检查的做法提交给人审核。GitHub README 与 v0.2.0 发布说明

这张图把意思画得很直白:模型参数可以不动,真正需要持续变化的是放在模型外面的程序性知识,例如工具怎么用、输出要满足什么格式、遇到失败先查什么、什么时候停止。
它要解决的问题
现在的 agent skill 大多来自三种方式:人手写、让强模型一次生成、或者每次失败后让模型自由改写。前两种不会根据真实运行结果继续学习,后一种又容易越改越乱。一次失败可能产生一条只适用于当前样例的规则,一次成功也可能让系统误删原本有用的约束。
SkillOpt 只追问一件事:能不能只训练一份技能文档,同时保留训练过程里最有用的纪律?
它不改目标模型,也不改执行外壳。目标模型继续在原来的 direct chat、Codex 或 Claude Code 环境里做任务;另一台“优化模型”读取运行轨迹,提出对技能文档的少量增删改。候选版本必须在单独留出的验证集上变好,才会成为新版本。最终发布的是一份通常几百到两千 token 的
best_skill.md,而不是新的模型。论文方法与实验系统怎么运作
SkillOpt 把数据分成三份。训练集用来产生经验;验证集决定某次修改是否值得留下;测试集锁到最后,只用于报告结果。系统内部同时保存当前技能、验证表现最好的技能、已经见过的技能版本、被拒绝的修改,以及跨轮次的慢速经验。论文 3.1
每轮大致这样走:
- 目标模型带着当前技能执行一批任务,留下消息、工具调用、命令输出、评分和检查器反馈。
- 成功轨迹与失败轨迹分开处理。优化模型寻找反复出现的模式,而不是为单个样例写补丁。
- 多批建议先去重、解冲突,再按预期收益排序。
- 系统只允许有限数量的 add、delete、replace 操作。论文把这个上限叫“文字学习率”,本质是控制一次能改多少。
- 新技能在验证集上重新跑。分数提高才接受;退步就拒绝,并记住这次失败方向。
- 一个阶段结束后,慢速更新比较前后技能在同一批任务上的差异,保存较稳定的经验;优化模型自己的 meta-skill 也会记录哪些修改有效、哪些无效。

这里有三种容易混在一起的 memory。被拒修改的缓存是短期负反馈;slow update 保存跨阶段仍然成立的任务经验;meta-skill 记的是“怎样改技能更有效”,服务于优化模型。它们都不等于用户画像或聊天记忆。
真正有用的机制
我最看重的是验证门。普通 reflection 只负责“想出修改”,SkillOpt 还要求它证明修改在没参与生成建议的数据上有效。论文的消融实验里,去掉 rejected buffer 后,SpreadsheetBench 从 77.5 降到 72.9;同时去掉 meta-skill 和 slow update 后,SpreadsheetBench 降到 55.0。不同任务对组件的敏感度不一样,但结果说明这些控制并非纯装饰。论文 Table 3
再看小步修改。自由重写看起来更聪明,却容易删除旧规则、把局部经验写成全局规则,或者让连续两版差得太远,无法判断哪条修改起了作用。SkillOpt 把候选修改限制成少量局部操作,并让修改预算逐步收紧。它借用了训练模型的语言,但实际做的是受控的文本版本迭代,没有梯度,也没有更新权重。
失败也没有被丢掉。被拒的修改不会部署,却会变成下一轮的反例。这比只保存“最佳经验”更完整:系统知道什么方向试过、为什么退步,下次就不必再次交学费。
实验结果该怎么读
论文在六类任务、七个目标模型和三种运行方式上做了 52 个组合。作者报告 SkillOpt 在 52 个组合里全部最好或并列最好。以 GPT-5.5 的直接对话为例,相比不加载技能,六项任务平均提高 23.5 个百分点;在 Codex 和 Claude Code 外壳中,论文分别报告平均提高 24.8 和 19.1 个百分点。论文摘要与主表
涨分最明显的是程序性要求很强的任务。例如 SpreadsheetBench 要先看工作簿结构和公式,再把结果写到正确范围;DocVQA 要把问题绑定到表格里的确切行、列或字段;ALFWorld 要记录已访问位置,避免在同一个地方反复搜索。最终学到的规则更像操作纪律,不像背答案。论文 Figure 4 与案例分析

迁移实验也值得看。一个在 GPT-5.4 上训练的 SpreadsheetBench 技能,能给更小的 GPT-5.4-mini 和 nano 带来提升;Codex 训练出的表格技能转到 Claude Code 后提高 59.7 个百分点,反方向转移提高 43.6 个百分点;OlympiadBench 技能转到 Omni-MATH 后,三个模型都获得小幅提升。论文 Table 4
先别把这些数字读得太满。它们仍来自项目作者自己的实验。跨外壳的表格任务提升很大,但数学任务的跨外壳提升只有 1.6 或 12.8 个百分点;跨 benchmark 的提升更小,只有 1.3 到 3.7 个百分点。所以更稳妥的说法是:某些程序性规则确实能迁移,远未证明“一份技能到处通用”。
哪些是新东西,哪些是工程包装
SkillOpt 真正的新意,是把单份技能当成有版本、有训练数据、有验证门、有发布物的外部状态。它把 agent 自我改进从“读完日志后自由反省”变成“提出少量修改,跑检查,退步就回绝”。被拒修改的缓存和慢速更新,也让系统有了比单轮 reflection 更完整的状态。
“前向传播、反向传播、学习率、动量”这些叫法更多是类比。系统没有梯度,修改方向仍由另一台语言模型生成。把修改数量叫学习率很直观,但不等于文本空间真的有连续、可微的优化结构。
WebUI、多模型接口、命令行工具和各类 agent 插件让项目更容易使用,却不是方法上的突破。SkillOpt-Sleep 也还处在 preview。它把真实会话转成可重放任务这一步最难:如果任务不能稳定复现,检查器不可靠,夜间“学习”只会把偶然经验固化下来。SkillOpt-Sleep 说明
对产品和研发的启发
它适合重复任务,不适合一次性需求。客服质检、报表处理、代码检查、固定研究流程、内部运营自动化,都能积累可重放样例和明确检查器;临时战略咨询、审美判断、开放式写作,很难靠一个分数决定修改是否更好。
真要落地,我会先做四件事:
- 先建稳定的任务集和检查器,再谈“自我进化”。没有可靠反馈,任何自动改写都只是猜。
- 把训练、验证、最终测试分开。尤其不要用刚失败的样例同时提出规则又验收规则。
- 每次只允许小改,并保存修改理由、前后分数和回滚点。
- 发布前保留人审。SkillOpt-Sleep 采用 stage proposal → human adopt,这个边界比全自动覆盖现有技能更稳。
技能还得按产品资产来管。每份技能应有适用范围、来源、版本、验证记录、过期条件和负责人。否则技能数量一多,冲突、重复、过时规则会重新制造一套难以维护的“外部参数”。
风险、局限和没验证清楚的地方
第一道限制是评分。论文也承认,开放式任务需要人评或模型评审,验证门的成本和偏差都会上升。论文限制
第二个现实问题是成本。论文表 6 中,六项 GPT-5.5 实验各自消耗约 20.8M 到 213.8M 训练 token;DocVQA 每提升一个百分点约消耗 46.4M token。成本可以被多次复用摊薄,但对低频任务不划算。论文 Table 6
第三,验证集会被反复使用。即使测试集最后才打开,优化过程仍可能逐渐贴合验证集。图 3 里已经能看到训练、验证和测试走势不同,说明门控不是泛化保证。
第四,论文只优化单份技能。一个领域如果包含互不相干的几十种流程,单文件会变长、规则会冲突,最终仍需要技能路由、依赖和淘汰机制。
第五,强优化模型通常带来更大收益。论文显示同模型自我优化也有效,但多数场景下 GPT-5.5 作为优化器更强。这意味着“智能体自己学会”有时其实包含了更强模型的离线指导,只是部署时不再调用它。论文 Table 5
最后,仓库虽然公开,完整论文结果仍需要大额模型调用和多个数据集环境才能复现。我实际拉取了当前仓库并运行公开测试,结果为 260 项通过、6 项跳过;这能说明代码中的版本控制、验证门、SkillOpt-Sleep 流程等基础部件可运行,不能替代论文级实验复现。
今日沉淀
- Agent 的经验要经过验证后再写进技能。
- 小步修改、独立验收、随时回滚,比自由重写更可靠。
- 被拒的经验也有价值,它能阻止系统反复犯同一种错。
- Skill 是可发布的外部状态,不只是提示词附件。
- 自我进化的前提不是更会反思,而是任务能重放、结果能检查。