编程 把写skill.md变成训练模型:微软开源SkillOpt,用前向传播和文本学习率持续打磨Agent技能文档

2026-09-05 19:15:32

把写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

推荐文章

程序员茄子在线接单