把写skill.md变成训练模型:微软开源SkillOpt,用前向传播和文本学习率持续打磨Agent技能文档
微软开源的 SkillOpt 已经拿下9000+ Star。它把写Agent技能文档这件事变成了一种真正的训练过程——前向传播、反向传播、参数更新、门控验证全都用上了。
简单来说,SkillOpt就是专门帮Agent打磨skill.md的工具,把原本靠经验写的技能文档,变成像训练模型一样不断迭代优化。
平时写技能文档的过程往往是:写了份文档丢给Agent执行,结果不理想就改了再跑,还是不行再改……错误率高,没有系统方法,整个过程只有补课没有考试,不知道是对是错。
四步训练流程
SkillOpt把整个过程变成了系统化的训练循环:
第一步:运行并记录(前向传播)
让Agent用现有技能文档运行一批任务,把整个执行过程、工具调用、验证反馈和最终得分全部记录下来。就像深度学习中的前向传播,运行一次观察结果。
第二步:分析轨迹找问题(计算梯度)
用一个单独的模型分析这些轨迹,把失败和成功的过程分开处理:失败的过程用来找出"哪些规则要修改",成功的过程用来确定"哪些规则有效、不能随便动"。这就相当于计算梯度方向,知道该朝哪个方向改。
第三步:小步修改(文本学习率)
提出具体操作——增加新规则、去掉无用规则、修改有问题的规则。有个重要概念叫"文本学习率",默认值为4,表示每次最多修改4处。这就像深度学习中的learning rate,避免一次改动过大把之前学到的东西覆盖掉。
第四步:验证后才接受(验证集门控)
新技能文档必须在验证集上严格提高性能才被接受。如果验证失败,这个编辑会被拒绝并记录在"拒绝编辑缓冲区"中,防止下次再走同样的失败方向。这就像深度学习中的验证,保证修改方向正确。
迁移能力
GPT-5.5训练出的技能文档可以直接应用到GPT-5.4-mini上;在Codex上训练出来的也可以用在Claude Code上。这意味着不用为每个模型重新编写技能文档,训练一次就可以重复使用。
测试结果
- 52个测试场景中,全部为最优或并列最优
- GPT-5.5平均提高23.5个百分点
- ALFWorld上,GPT-5.4-mini从70.9%提升到85.8%
- 只用了4个被接受的编辑就达到了上述效果
使用步骤
1. 安装
git clone https://github.com/microsoft/SkillOpt.git
cd SkillOpt
pip install -e .
2. 配置API
把 .env.example 复制为 .env,填入API密钥,支持OpenAI、Azure OpenAI和Anthropic Claude。
3. 准备数据
可以让SkillOpt自动划分训练集、验证集、测试集,也可以手动准备三个文件夹。
4. 开始训练
python scripts/train.py --config configs/searchqa/default.yaml
可指定teacher和student模型:
python scripts/train.py \
--config configs/searchqa/default.yaml \
--teacher_model gpt-5.5 \
--student_model gpt-5.5
5. 查看结果
训练完成后输出目录结构:
outputs/<run_name>/
├── best_skill.md # 最终训练出的技能文档
├── skills/ # 每个步骤的技能快照
├── steps/ # 每个步骤的详细记录
└── history.json # 训练历史
6. 部署使用
把 best_skill.md 的内容直接放入Agent的system prompt即可。整个训练过程不增加额外推理开销,部署时也不需要调用优化器模型,只是多了一个Markdown文件。
项目基于 MIT 协议开放。
开源地址:https://github.com/microsoft/SkillOpt