微软开源SkillOpt:将Agent技能文档作为"可训练参数",52项评测全胜
2026/06/01
微软研究院在5月下旬开源了SkillOpt——一个将AI Agent技能文档当作"可训练参数"来优化的框架。上线一周在GitHub获得超3300颗星标,在6个基准、7个模型、3种执行环境组成的52个评测组合中,全部达到最优或并列最优,零败绩。
传统上,AI Agent的能力提升有三条路:微调模型权重(贵且每次模型更新都要重来)、手工调prompt(靠经验,不可复现)、RAG检索增强(增加推理延迟,提升有限)。SkillOpt开辟了第四条路——不碰模型权重,只优化一个Markdown文件。
把文本文件当成神经网络来训练
SkillOpt的核心做法是把一个skills.md文档当作Agent的"外部状态"。这个文档包含任务指令、工具使用规范、少样本示例和流程约束。然后引入一个独立的优化器模型,按照类似深度学习的训练循环来迭代改进这份文档。
训练循环分四步,每一步都对应深度学习训练中的一个环节:
- Rollout(前向传播):Agent带着当前版
skills.md执行任务,记录每步的消息、工具调用和评分。 - Reflect(梯度计算):优化器审查一批执行轨迹,找出成功和失败的模式。
- Edit(参数更新):优化器对文档做小步增/删/改操作,幅度由"文本学习率"限制,不做大幅重写。
- Validate(验证集评估):编辑后的文档上验证集测试,严格提升才接受;被拒编辑存入缓冲区防止重复犯错。
整个循环跨多个epoch运行,与训练神经网络别无二致,只不过操作对象是文字而非浮点数。
两个关键机制:文本学习率与拒绝编辑缓冲区
文本学习率控制每轮优化对技能文档的修改力度。设置得太高,技能文档会在文本空间中剧烈漂移,失去可读性和泛化性;设置得太低,优化速度过慢。论文中的类比很直观:就像训练神经网络时学习率太大模型不收敛,太小训练太慢。
拒绝编辑缓冲区解决了文本优化中的一个独特问题——"重复犯同样的错"。当优化器提出一个编辑方向(比如增加某条规则或删除某个示例),但验证分数下降了,这条编辑会被加入缓冲区。后续迭代中,优化器在提出新编辑前会检查缓冲区,避免再次走向已被证伪的方向。这一机制类似于防止灾难性遗忘,确保技能文档不会因为过度优化而退化。
52战全胜意味着什么
作者团队将SkillOpt与六类基线方法在52个实验组合中做了全面对比。对手包括Trace2Skill(从执行轨迹推导技能)、TextGrad(基于梯度的文本优化)、GEPA(遗传提示进化算法)、EvoSkill(进化式技能发现)、人工编写技能和一次性LLM生成技能。
SkillOpt在所有组合中达到最优或并列最优。具体性能提升:在GPT-5.5上直接对话模式准确率提升+23.5个百分点,在OpenAI Codex的Agent循环中提升+24.8个百分点,在Claude Code中提升+19.1个百分点。
更关键的是,优化后的best_skill.md文件是一个可移植的纯文本产物。它可以直接部署到不同的基座模型上,运行时零额外推理开销——不需要额外的模型调用、不需要检索、不需要微调。
这改变了什么
SkillOpt把Agent技能从"手工调试prompt"推进到了"系统化训练"。开发Agent的团队都知道,大量时间花在反复试prompt上——改几个词、调一下示例顺序、增减几条规则,然后跑一遍看效果。这个过程依赖工程师的经验和直觉,几乎无法系统化复现。
SkillOpt提供的是另一种工作流:把技能文档交给优化器,让它根据验证数据自动迭代,最终产出一个经过训练的最优版本文档。团队可以把精力从调试prompt转移到设计验证集和选择优化超参数上——这更接近一个ML工程师的工作方式,而非手工调参。
从产业角度看,这也降低了Agent技能的门槛。一个被SkillOpt训练过的技能文档可以零成本分发和部署,不依赖特定模型的API、不要求GPU算力。社区已经出现了基于SkillOpt的技能文档共享生态的可能性——就像Hugging Face上的模型权重共享一样。
但也有需要注意的限制。SkillOpt的优化效果取决于验证数据的质量和覆盖率——如果验证集没有覆盖到的场景,优化后的技能文档可能表现不佳。优化器模型本身也需要API调用成本,只是发生在训练阶段而非推理阶段。
52战全胜的背后是一条清晰的分界线:Agent技能的优化,正在从一个"手艺活"变成一门"工程学科"。
参考文献: