微软又开源一个神级 skill 神器 。

Skill微软又开源一个神级神器
\n

 

最近 SkillOpt 很火。

微软的这个开源项目已经拿下 9000+ Star。

图片

它把写Agent技能文档这件事也变成了一种真正的训练过程。

前向传播、反向传播、参数更新、门控验证等等全都用了上。

简单来说,SkillOpt 就是专门帮 Agent 打磨 skill.md 的,把原本靠经验写的技能文档,变成像训练模型一样不断迭代优化。

图片

平时写技能文档就是这样的:

写了份技能文档之后就把它丢给了 Agent 去执行任务,结果不理想就又改了文档再运行一次,还是不行……

错误率高,并且没有系统的办法。

整个过程就是补课,但是没有考试、没有分数、不知道是对是错。

SkillOpt 把整个过程变成了一种真正的训练过程。

图片

假如你要写一本《做菜指南》来教会一个初学者学会做饭。

01 先让他做一次,并且把整个过程都记录下来。

新手拿着你的指南走进厨房,你得让他把整个过程都记录下来:用了哪些食材、加了多少调料、温度是多少度、最后的味道如何。

SkillOpt 也是这样:让 Agent 用现有的技能文档来运行一些任务,并且把整个执行的过程、工具调用、验证反馈和最终得分全部记录下来。

这就如同深度学习中的“前向传播”,运行一次,观察一下结果。

02 查看记录,找到问题。

你看他做的记录,好的菜都有放盐,不好的就没有放盐。

找到问题了,在指南中没有提到“要放盐”。

SkillOpt 也是一样的:用一个单独的模型来分析这些轨迹,并找到哪里是错的、哪里是对的。

也就是说,它把失败与成功的过程分开来处理——失败的过程用来找出“哪些规则要修改”,而成功的过程则用来确定“哪些规则是有效的,不能随便改动”。

这就相当于在计算“梯度方向”,知道要朝哪个方向去修改。

图片

03 改指南但是不要改太多。

你要修改指南,但是每次只改一两个地方。

为什么不能一次性全部修改呢?因为改动太多,你就不知道是哪一个改动起了作用,如果改错了也无从得知哪里错了。

SkillOpt 也一样:提出具体的操作——增加新的规则、去掉无用的规则、修改要改正的规则。

有一个很重要的概念叫做“文本学习率”,默认值为4,表示每次最多修改4处。

这就如同在深度学习中使用的learning rate一样,避免一次改变过大而把之前学到的东西给覆盖掉了。

04 试过了才知道,改对了才会留下。

新手拿着新的指南再试一次,如果菜变好吃的话,就说明改对了;如果没有变好吃,那么这个改动就被否决了,你要把这一个方向错误记录下来。

SkillOpt 也一样:新技能文档要在验证集上严格提高性能之后才被接受。

图片

如果验证失败的话,那么这个编辑就会被拒绝并且记录在“拒绝编辑缓冲区”中,以防止下一次再出现相同的失败方向。

这就如同在深度学习中进行验证一样,保证修改的方向是正确的。

还有一个亮点:迁移能力。

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 个被接受的编辑。

训练中分数逐渐提高,被拒的编辑也可以看到。

图片

如果你也想试一下,可以参考下面的步骤。

01 安装。

git clone https://github.com/microsoft/SkillOpt.git
cd SkillOpt
pip install -e .

02 配置 API。

.env.example 复制一份到.env里,并把里面的API密钥填上:

# OpenAI
export OPENAI_API_KEY="sk-..."

# 或 Azure OpenAI
export AZURE_OPENAI_ENDPOINT="https://your-resource.openai.azure.com/"
export AZURE_OPENAI_API_KEY="your-key"

# 或 Anthropic Claude
export ANTHROPIC_API_KEY="sk-ant-..."

03 准备数据。

两种方式:

  • 自动划分:准备好原始数据,让 SkillOpt 自动划分训练集、验证集、测试集
  • 手动划分:自己准备好三个文件夹

04 开始训练。

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

05 查看结果。

训练完成后,输出目录结构:

outputs//
├── best_skill.md #最后训练出的技能文档
├── skills/       #每个步骤都对应一个技能快照
├── steps/        #每个步骤都做了详细的记录
└── history.json  #训练历史

06 部署使用。

把 best_skill.md 文件的内容直接放入到Agent的system prompt中就可以使用了。

整个训练过程中没有增加额外的推理开销,在部署的时候也不需要调用优化器模型,只是多了一个Markdown文件。

写到最后

SkillOpt 让我重新思考了一个问题:

Agent 的能力上限,到底是受限于模型本身,还是技能文档的质量?

过去人们只重视模型的能力,而现在发现技能文档的质量也很重要。

即使模型很强,但是文档写得不好,那么Agent也无法很好地发挥作用。

SkillOpt 提供了一个系统化的方案,让技能文档可以像模型一样不断训练和优化。

这可能会成为 Agent 工具链发展的重要方向。

项目基于 MIT 协议开放,感兴趣的同学可以去 GitHub 仓库看看源码和文档。

开源地址:https://github.com/microsoft/SkillOpt

 

暂无评论,快来发表第一条评论吧!

📮 需求咨询