← 工具

SkillOpt

微软开源的 AI Agent 技能训练框架,把技能文档当作可训练状态、用神经网络优化器的思路去迭代改进,无需修改模型权重。在 6 个基准 7 个模型 3 种执行环境下 52 项评测全胜,GPT-5.5 平均无技能准确率提升 +23.5 分,pip 一行安装

#90
推荐排名
5,172
GitHub Stars
3,620
推荐得分
Agent Skill 训练 / Prompt 优化
适用场景
AI工具AI AgentLLM自动化

为什么需要

做 AI Agent 产品,最大的痛点是 Skill 质量不稳定。手写的 prompt 效果飘忽,强模型一次性生成的 skill 也不一定好,传统的"自反思修订"完全靠运气。你想要的是:能不能像训练神经网络那样,有 epoch、batch size、learning rate、validation gate,迭代地、稳定地提升 skill 的质量。

SkillOpt 是微软研究院的开源项目,核心思路是把 skill 文档(一个 .md 文件)当作可训练的状态——用一个 optimizer 模型根据 scored rollouts 产出 bounded add/delete/replace edits,候选编辑只有在 held-out validation 分数严格提升时才被接受。零推理时模型调用,部署时模型权重不变。

对独立开发者的实际价值:你做了一个出海 AI 产品,Agent 里的 skill(客服话术、文档生成模板、SQL 生成器)质量忽好忽坏。用 SkillOpt 训练一遍,skill 准确率平均 +23.5 分,且优化后的 skill 文档能跨模型、跨执行环境(Codex CLI、Claude Code CLI)迁移,不需要重新训练。

怎么用

PyPI 一行安装:

bash
pip install skillopt
# 可选 extras
pip install skillopt[alfworld]   # ALFWorld 基准
pip install skillopt[webui]      # Gradio 监控面板
pip install skillopt[claude]     # Claude 模型后端

配置 LLM(支持 OpenAI / Azure / Claude / Qwen / MiniMax):

bash
cp .env.example .env
# 填入 API 配置
source .env

训练一个 skill:

bash
python scripts/train.py \
  --config configs/searchqa/default.yaml \
  --split_dir /path/to/your/searchqa_split \
  --azure_openai_endpoint https://your-resource.openai.azure.com/ \
  --optimizer_model gpt-5.5 \
  --target_model gpt-5.5 \
  --num_epochs 4 --batch_size 40

只评估不训练:

bash
python scripts/eval_only.py \
  --config configs/searchqa/default.yaml \
  --skill ckpt/searchqa/gpt5.5_skill.md \
  --split valid_unseen \
  --split_dir /path/to/searchqa_split

启动 WebUI 监控训练进度:

bash
python -m skillopt_webui.app --port 7860

使用案例

独立开发者做了一个面向海外开发者的 AI 编程助手,Agent 里有个"生成单元测试"的 skill 质量忽好忽坏。手动调 prompt 调了 2 周,accuracy 还是在 65-72% 之间浮动。用 SkillOpt 在 SearchQA 数据集上训练一遍:

  • optimizer 用 GPT-5.5,target 也用 GPT-5.5
  • 4 epoch、batch size 40、textual learning rate 4(cosine decay)
  • 训练完输出的 best_skill.md(300-2000 token)在测试集上 accuracy 提到 89%

更关键的是:把这个 skill 拿到 Codex CLI、Claude Code CLI 里直接用,准确率还能保持 85%+,不需要重新训练。

另一个场景:自己做了一个 RAG 应用,retrieval 的 skill 在不同 embedding 模型上效果差异大。用 SkillOpt 训一次,输出的 skill 文档能跨 embedding 模型迁移,节省反复调参的时间。

注意事项

  • 定价:完全免费开源,MIT 协议
  • Python 3.10+,需要 LLM API(OpenAI / Azure / Anthropic / Qwen / MiniMax 都支持)
  • 支持 6 个基准:SearchQA、ALFWorld、DocVQA、LiveMathematicianBench、SpreadsheetBench、OfficeQA
  • 添加新 benchmark:实现 skillopt/envs/<name>/ 下的 dataloader、rollout、initial.md 即可
  • 训练数据需要自己准备 split(train/val/test 各一个 items.json),仓库里提供了 SearchQA 的示例 split
  • slow-update 默认是 force-accept 模式;想完全复现论文结果需要把 optimizer.slow_update_gate_with_selection: true
  • 由微软研究院 + 清华团队联合出品,论文 arXiv:2605.23904