
最近,AI 智能体的热度越来越高。从简单的问答机器人到复杂的多步骤工作流编排应用,智能体正在展现出惊人的能力。
但用过的人都知道,智能体的表现往往很不稳定——有时候能完美解决问题,有时候又会犯一些低级错误,让人哭笑不得。
传统的改进思路是微调模型(Fine-tuning),但这有几个致命的问题:
就在大家头疼的时候,微软 开源了一个革命性的项目——SkillOpt,它提出了一种全新的思路:不碰模型权重,只优化智能体的"技能文档"。

SkillOpt 是微软研究院最新开源的一个训练框架,它把训练神经网络的那套成熟方法论,完美地移植到了 AI 智能体的技能优化上。

核心就是:像训练神经网络一样训练智能体技能,但完全不需要修改模型权重。
什么意思呢?
传统的神经网络训练有 epoch(轮次)、batch size(批次大小)、learning rate(学习率)、validation(验证) 这些概念。
SkillOpt 把这些概念全部用到了智能体技能训练中:
神经网络训练 | SkillOpt 技能训练 |
|---|---|
调整权重参数 | 优化 Markdown 技能文档 |
Epoch(轮次) | 多轮迭代优化技能 |
Batch size(批次) | 每轮处理的任务数量 |
Learning rate(学习率) | 技能更新的激进程度 |
Validation(验证) | 在验证集上测试技能效果 |
这个项目的论文刚刚发布在 arXiv 上,编号 2605.23904,由微软研究院联合上海交大、同济大学、复旦大学的 15 位研究者共同完成。
GitHub 仓库短短几天就收获了 3100+ 关注。
SkillOpt 的核心假设非常大胆:智能体的能力主要取决于它的"技能文档",而不是模型本身。
什么是技能文档?
就是那些告诉智能体怎么完成任务的 Markdown 文件。
比如一个搜索问答技能文档可能长这样:
# 搜索问答技能
## 任务描述
根据提供的文档内容回答问题。
## 工作流程
1. 仔细阅读文档,提取关键信息
2. 分析问题,确定需要哪些信息
3. 在文档中定位答案
4. 给出准确、简洁的回答
## 注意事项
- 如果文档中没有相关信息,明确说明
- 不要编造文档中没有的内容
- 保持回答简洁,不要过度展开SkillOpt 的做法是把这个技能文档当成可训练的"参数",然后通过类似神经网络训练的流程来优化它:
整个过程中,目标模型的权重完全不会被修改,所有的改进都发生在技能文档这个外部文本上。
SkillOpt 使用两个不同的模型协作完成训练,这个设计非常巧妙:
这是实际执行任务的模型,它的权重完全不会被修改。可以是任何支持 API 调用的 LLM,比如 GPT-4、Claude,甚至是本地部署的通义千问。
这是负责分析和改进技能文档的模型,通常是一个更强的模型。它的任务是从执行结果中学习,提出对技能文档的改进建议。
这个架构的好处太多了:目标模型可以是任何支持 API 调用的 LLM,不需要模型权重访问权限;部署时零额外成本,只需要一个几百到几千 token 的 Markdown 文件;技能文档还可以跨模型、跨执行环境迁移。
Azure OpenAI、OpenAI 直接调用、Anthropic Claude、通义千问(本地 vLLM 部署) 等。SkillOpt 的实验结果可以用"碾压"来形容。

论文中测试了 7 个目标模型、6 个基准测试、3 个执行环境,总共 52 个(模型×基准×环境)组合,SkillOpt 在所有 52 个组合中都取得了最佳或并列最佳的成绩!
一些具体的数据:
而且,优化后的技能文档还具有很强的迁移能力:
首先需要 Python 3.10+:
git clone https://github.com/microsoft/SkillOpt.git
cd SkillOpt
pip install -e .
# 如果需要 ALFWorld 基准测试
pip install -e ".[alfworld]"
alfworld-download支持多种 LLM 提供商:
Azure OpenAI(推荐):
export AZURE_OPENAI_ENDPOINT="https://your-resource.openai.azure.com/"
export AZURE_OPENAI_API_KEY="your-key"OpenAI 直接调用:
export OPENAI_API_KEY="sk-..."Anthropic Claude:
export ANTHROPIC_API_KEY="sk-ant-..."通义千问(本地 vLLM):
export QWEN_CHAT_BASE_URL="http://localhost:8000/v1"
export QWEN_CHAT_MODEL="Qwen/Qwen3.5-4B"SkillOpt 期望数据按以下结构组织:
data/my_split/
├── train/items.json
├── val/items.json
└── test/items.json每个 JSON 文件是一个任务数组,具体格式取决于基准测试。比如 SearchQA 的格式:
[
{
"id": "unique_item_id",
"question": "Who wrote the novel ...",
"context": "[DOC] relevant passage text ...",
"answers": ["expected answer"]
}
]最小示例,在 SearchQA 上训练:
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主要的命令行参数:
参数 | 说明 | 示例 |
|---|---|---|
--config | 基准测试配置 YAML | configs/searchqa/default.yaml |
--split_dir | 数据分割目录路径 | /path/to/split |
--azure_openai_endpoint | Azure OpenAI 端点 URL | https://your-resource.openai.azure.com/ |
--optimizer_model | 优化器模型部署名称 | gpt-5.5 |
--target_model | 目标模型部署名称 | gpt-5.5 |
--num_epochs | 训练轮次数 | 4 |
--batch_size | 每步批次大小 | 40 |
--workers | 并行执行工作进程数 | 8 |
--out_root | 输出目录 | outputs/my_run |
只评估,不训练:
# 只在测试集上评估
python scripts/eval_only.py \
--config configs/searchqa/default.yaml \
--skill outputs/my_run/best_skill.md \
--split valid_unseen \
--split_dir /path/to/searchqa_split \
--azure_openai_endpoint https://your-resource.openai.azure.com/
# 在所有分割上评估(训练 + 验证 + 测试)
python scripts/eval_only.py \
--config configs/searchqa/default.yaml \
--skill outputs/my_run/best_skill.md \
--split all \
--split_dir /path/to/searchqa_split \
--azure_openai_endpoint https://your-resource.openai.azure.com/每次运行会生成结构化的输出目录:
outputs/<run_name>/
├── config.json # 扁平化的运行时配置
├── history.json # 每步的训练历史
├── runtime_state.json # 恢复检查点
├── best_skill.md # 最佳验证技能文档
├── skills/skill_vXXXX.md # 每步的技能快照
├── steps/step_XXXX/ # 每步的产物(补丁、评估)
├── slow_update/epoch_XX/ # 慢更新日志
└── meta_skill/epoch_XX/ # 元技能日志重新运行相同命令会自动从最后完成的步骤恢复。
启动监控面板(可选):
pip install -e ".[webui]"
python -m skillopt_webui.app还可以创建公共分享链接:
python -m skillopt_webui.app --shareSkillOpt 是一个真正革命性的项目,它把深度学习训练的成熟方法论,完美地移植到了智能体技能优化上,同时完全避免了修改模型权重带来的各种问题。
而且它支持多种主流模型,自带可视化 WebUI,内置丰富的基准测试,上手门槛很低。
如果你正在研究智能体,或者想要优化你的智能体应用,SkillOpt 值得一试!
GitHub:https://github.com/microsoft/SkillOpt
如果本文对您有帮助,也请帮忙点个 赞👍 + 在看 哈!❤️
在看你就赞赞我!