用 epoch、批大小、学习率 和 验证门控 来优化自然语言技能文档 —— 却不碰任何一个模型权重。
SkillOpt 把「技能文档」当作一个冻结智能体的可训练状态,用使权重优化得以复现的那套纪律来训练它。优化器模型把打过分的轨迹转化为有界的「增 / 删 / 改」编辑,唯有当编辑严格提升留出验证分数时才会被接受 —— 在部署时新增 零次推理调用。
现代智能体技能通常是手工编写、由强模型一次性生成,或在松散自我修订中演化 —— 没有哪一种像对技能本身做深度学习优化,也没有哪一种能在反馈下可靠地超越起点。
依赖专家直觉,无法系统迭代,难以复现与扩展,质量随人而异。
强 LLM 单次生成,没有基于真实反馈的闭环,无法稳定改进起点。
缺少验证门控与学习率约束,容易震荡、过拟合、灾难性遗忘。
把熟悉的训练范式逐项映射到技能文档优化上 —— 你已经懂的全部直觉都能直接复用。
| 深度学习 | SkillOpt |
|---|---|
| 模型权重 | →技能文档(Markdown) |
| 前向传播 | →Rollout(目标模型执行任务) |
| 损失 / 梯度 | →Reflect(优化器生成编辑补丁) |
| 梯度裁剪 | →编辑筛选(learning_rate = 最大编辑数) |
| SGD 单步 | →把补丁应用到技能文档 |
| 验证集 | →在 selection split 上的门控评测 |
| 学习率调度 | →lr_scheduler:cosine / linear / constant |
| 多轮 Epoch | →慢更新(slow update)+ 元技能记忆(meta skill) |
每一步都对应深度学习训练的一个环节:从执行任务、分析失败,到裁剪编辑、应用更新、门控验证 —— 形成一个稳定收敛的闭环。
目标模型执行任务,产出轨迹与分数
forward pass优化器分析失败轨迹,生成编辑补丁
backward语义相近的补丁分层合并去冗余
merge按相关度排序,按学习率裁剪编辑数
grad clip把选中的补丁应用到技能文档
SGD step在留出集验证,严格提升才接受
validation更新后的技能在 selection split(类比验证集)上评估,只有当分数严格提升才被永久接受,否则进入「被拒编辑缓冲区」。这从根本上阻断了回退与过拟合。
learning_rate 限制每步最多应用多少条编辑,等价于梯度裁剪,防止单步过冲。lr_scheduler 支持 cosine(先激进后收敛)、linear、constant。
从第 2 个 epoch 起,对上一轮与当前技能在同一批样本上做纵向对比,将样本分为「改进 / 回退 / 持续失败 / 稳定成功」,进而生成注入文档的高层指导。
一份贯穿整个训练过程的元技能记忆,在每个 epoch 末反思轮次间的变化,凝练成紧凑记忆,作为后续 reflect 阶段的额外上下文。
横跨 6 个基准 · 7 个目标模型 · 3 种执行环境(直接对话、Codex CLI、Claude Code CLI),SkillOpt 在全部 52 个 (模型, 基准, 环境) 单元上取得最佳或并列最佳。
以上提分为 GPT-5.5 相对「无技能」基线的平均准确率提升。优化后的技能产物可跨模型规模迁移、在 Codex 与 Claude Code 环境之间互换,并迁移到相邻基准而无需再次优化。
如果说 SkillOpt 是在基准上离线训练技能,那么 SkillOpt-Sleep 把同一套纪律用到你的日常使用上 —— 给本地编程智能体一个夜间「睡眠周期」,越用越聪明,且无需训练权重。
它回顾你过去的会话,在你自己的 API 预算上重放高频任务,把学到的东西固化为经过验证的长期记忆与技能 —— 全部经过留出门控、暂存待你审核后采纳。它融合了 SkillOpt 的「门控有界文本编辑」、Claude Dreams 的「离线巩固、先审后用」,以及「短期经验 → 长期能力」的 agent sleep 思想。
作为插件市场安装,斜杠命令触发。
脚本一键安装为技能。
注册为 MCP 服务器。
在公开的 gbrain-evals skillopt-v1 基准上,有缺陷的技能在留出集上从 0.00 → 1.00(Claude 与 Codex 全部 4 个种子,含真实工具调用循环),跨模型迁移为正,门控成功拦截回退。无需 API Key 的确定性证明:python -m skillopt_sleep.experiments.run_experiment --persona researcher --assert-improves
需要 Python ≥ 3.10,以及至少一个模型 API Key(Azure OpenAI / OpenAI / Anthropic / 本地 Qwen)。已发布到 PyPI,pip install skillopt 即可。
# 直接从 PyPI 安装(v0.1.0) pip install skillopt # 验证安装 python -c "import skillopt; print('SkillOpt ready!')"
# 克隆仓库 git clone https://github.com/microsoft/SkillOpt.git cd SkillOpt # 可编辑安装 pip install -e .
# 按需安装基准 / 后端 / 工具的额外依赖 pip install -e ".[alfworld]" # ALFWorld 具身基准 pip install -e ".[claude]" # Claude 后端 pip install -e ".[qwen]" # 本地 Qwen(vLLM) pip install -e ".[webui]" # WebUI 监控面板 # 一次装齐 pip install -e ".[alfworld,claude,qwen,webui,dev]"
# 复制示例并填入你的凭证 cp .env.example .env # Azure OpenAI(默认后端) AZURE_OPENAI_ENDPOINT=https://your-resource.openai.azure.com/ AZURE_OPENAI_API_KEY=your-key # 或者直接用 OpenAI / Anthropic OPENAI_API_KEY=sk-... ANTHROPIC_API_KEY=sk-ant-...
SkillOpt 内置多个开箱即用的配置。SearchQA 最快,约 30 分钟即可完成一次完整训练。配置里的关键超参都带有深度学习类比。
一条命令启动「rollout → reflect → aggregate → select → update → gate」的完整循环,训练产物保存到 outputs/<benchmark>/<run_id>/。
训练结束后得到紧凑的 best_skill.md,在测试集上评估它对未改动目标模型的提升。
[Step 1/8] Rollout: 20 items, 4 workers... [Step 1/8] Score: 0.65 → Reflect... [Step 1/8] 6 edit patches generated [Step 1/8] Selected 4 edits (lr=8, cosine → 7.7) [Step 1/8] Gate: val score 0.68 > 0.65 ✓ ACCEPT [Step 2/8] Rollout: 20 items, 4 workers... ... ✓ best_skill.md saved (412 tokens, +23.5 over no-skill)
偏好图形界面?pip install -e ".[webui]" 后运行 python -m skillopt_webui.app,浏览器打开 localhost:7860 即可配置参数、启动训练、实时监控。支持 --port / --host / --share。
新增后端只需写一个 <name>_backend.py 并注册路由(qwen / minimax 是好模板);新增基准只需一个含 dataloader.py、rollout.py 与 initial.md 的环境包,约 100 行代码。已支持 OpenAI / Azure / Claude / Qwen / MiniMax 多后端。
@misc{yang2026skillopt,
title = {SkillOpt: Executive Strategy for Self-Evolving Agent Skills},
author = {Yifan Yang and Ziyang Gong and Weiquan Huang and others},
year = {2026},
eprint = {2605.23904},
archivePrefix = {arXiv},
primaryClass = {cs.AI},
url = {https://arxiv.org/abs/2605.23904}
}