跳到主要内容

SkillOpt - Agent 技能优化工具

SkillOpt 是一个用于优化 AI Agent 技能的工具,它将深度学习训练范式引入到 Agent 提示词优化中。

核心概念

SkillOpt 的核心理念是:像训练神经网络一样训练 Agent 技能,但不直接修改模型权重。

工作原理

SkillOpt 通过以下流程迭代优化技能文档:

  1. Rollout(执行) - Target Agent 执行任务
  2. Reflect(反思) - Optimizer 分析执行轨迹
  3. Aggregate(聚合) - 合并编辑补丁
  4. Select(选择) - 排名并裁剪编辑
  5. Update(更新) - 应用到技能文档
  6. Gate(验证) - 验证并接受最佳结果

深度学习类比

深度学习SkillOpt
模型权重技能文档(Markdown)
前向传播Rollout(Agent 执行任务)
Loss/梯度Reflect(Optimizer 生成编辑补丁)
梯度裁剪编辑选择(learning_rate = 最大编辑数)
SGD 更新补丁应用到技能文档
验证集在验证集上的门控评估
学习率调度lr_scheduler: cosine, linear, constant
Epochs多轮训练(慢更新 + 元技能记忆)

支持的基准测试

基准测试类型配置
DocVQA文档问答configs/docvqa/
ALFWorld具身 AIconfigs/alfworld/
OfficeQA企业 QAconfigs/officeqa/
SearchQA开放域 QAconfigs/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_endpointAzure OpenAI 端点 URLhttps://your-resource.openai.azure.com/
--optimizer_modelOptimizer 模型部署名gpt-5.5
--target_modelTarget 模型部署名gpt-5.5
--num_epochs训练轮数4
--batch_size每步批次大小40
--workers并行 rollout workers8
--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

资源

引用

@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}
}