SkillOpt - Agent 技能优化工具
SkillOpt 是一个用于优化 AI Agent 技能的工具,它将深度学习训练范式引入到 Agent 提示词优化中。
核心概念
SkillOpt 的核心理念是:像训练神经网络一样训练 Agent 技能,但不直接修改模型权重。
工作原理
SkillOpt 通过以下流程迭代优化技能文档:
- Rollout(执行) - Target Agent 执行任务
- Reflect(反思) - Optimizer 分析执行轨迹
- Aggregate(聚合) - 合并编辑补丁
- Select(选择) - 排名并裁剪编辑
- Update(更新) - 应用到技能文档
- Gate(验证) - 验证并接受最佳结果
深度学习类比
| 深度学习 | SkillOpt |
|---|---|
| 模型权重 | 技能文档(Markdown) |
| 前向传播 | Rollout(Agent 执行任务) |
| Loss/梯度 | Reflect(Optimizer 生成编辑补丁) |
| 梯度裁剪 | 编辑选择(learning_rate = 最大编辑数) |
| SGD 更新 | 补丁应用到技能文档 |
| 验证集 | 在验证集上的门控评估 |
| 学习率调度 | lr_scheduler: cosine, linear, constant |
| Epochs | 多轮训练(慢更新 + 元技能记忆) |
支持的基准测试
| 基准测试 | 类型 | 配置 |
|---|---|---|
| DocVQA | 文档问答 | configs/docvqa/ |
| ALFWorld | 具身 AI | configs/alfworld/ |
| OfficeQA | 企业 QA | configs/officeqa/ |
| SearchQA | 开放域 QA | configs/searchqa/ |
| LiveMathBench | 数学推理 | configs/livemathematicianbench/ |
| SWEBench | 软件工程 | configs/swebench/ |
快速开始
安装
git clone https://github.com/microsoft/SkillOpt.git
cd SkillOpt
pip install -e .
配置 API 凭证
cp .env.example .env
# 编辑 .env 文件,填入你的 API 凭证
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-..."
Qwen (本地 vLLM):
export QWEN_CHAT_BASE_URL="http://localhost:8000/v1"
export QWEN_CHAT_MODEL="Qwen/Qwen3.5-4B"
数据准备
SkillOpt 期望数据在包含 train/, val/, test/ 子目录的分割目录中:
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
主要 CLI 参数:
| 参数 | 说明 | 示例 |
|---|---|---|
--config | 基准配置文件 | configs/searchqa/default.yaml |
--split_dir | 数据分割目录路径 | /path/to/split |
--azure_openai_endpoint | Azure OpenAI 端点 URL | https://your-resource.openai.azure.com/ |
--optimizer_model | Optimizer 模型部署名 | gpt-5.5 |
--target_model | Target 模型部署名 | gpt-5.5 |
--num_epochs | 训练轮数 | 4 |
--batch_size | 每步批次大小 | 40 |
--workers | 并行 rollout 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/
输出结构
每次运行会写入结构化的输出目录:
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/ # 元技能日志
WebUI
启动监控仪表板(可选):
pip install -e ".[webui]"
python -m skillopt_webui.app
默认访问 http://localhost:7860
资源
- 项目主页: https://microsoft.github.io/SkillOpt/
- GitHub: https://github.com/microsoft/SkillOpt
- 论文: https://arxiv.org/abs/2605.23904
- 演示视频: https://youtu.be/JUBMDTCiM0M
引用
@misc{yang2026skilloptexecutivestrategyselfevolving,
title={SkillOpt: Executive Strategy for Self-Evolving Agent Skills},
author={Yifan Yang and Ziyang Gong and Weiquan Huang and Qihao Yang and Ziwei Zhou and Zisu Huang and Yan Li and Xuemei Gao and Qi Dai and Bei Liu and Kai Qiu and Yuqing Yang and Dongdong Chen and Xue Yang and Chong Luo},
year={2026},
eprint={2605.23904},
archivePrefix={arXiv},
primaryClass={cs.AI}
}