Aug 17, 2026

用微软 SkillOpt 自动生成 Agent Skill

SkillOpt 通过轨迹驱动的编辑,为冻结的 LLM agent 训练可复用的 best_skill.md 产物——在 GPT-5.5、Codex CLI、Claude Code CLI 上相对 SearchQA 的实测增益 +23.5 准确率点,且无需微调模型。

#tutorial#ai-agents#skill-creation#best-practices#developer-tools

这个目录里到目前为止的每个 skill 都是人写的。microsoft/SkillOpt 走另一条路:它是一个工具,观察 agent 的工作,从轨迹中学习,然后产出一份 best_skill.md 产物,agent 把它作为系统提示加载。模型本身保持冻结;得到改进的是 skill。

为什么这个 Skill 重要

手工写的 skill 很好,直到你的 agent 把同一个任务做了十次,你才发现本可以出现更好的模式。SkillOpt 把发现回路编码成:rollout、reflect、aggregate、select、update、evaluate。你把它指向一个 benchmark 或任务,它产出可部署的产物。

有三件事让它有用:

  • 无需微调。 模型是冻结的;优化目标是 skill。部署时零额外推理调用。
  • 跨 agent 可移植。 来自一个后端(比如 GPT-5.5 直聊)的 best_skill.md 可加载到 Codex CLI、Claude Code CLI、Cursor、Copilot——README 报告在它们之上都有增益。
  • 验证门控更新。 Skill 编辑都过过过保留集(hold-out)验证。不提升保留集准确率的编辑被拒绝,因此产物不会偏出分布。

如果你的 agent 任务做得不好、又不想动模型权重,这就是该用的工具。

安装

pip install skillopt

WebUI 控制台:

python -m skillopt_webui.app --port 8080 --host 127.0.0.1

--host 127.0.0.1,不要默认的 0.0.0.0,除非你确实想把它暴露到网络上。

实战:在 SearchQA 上提升编码 agent 准确率

真实场景,不是"hello world":你的编码 agent 在某个问答 benchmark 上 60% 失败,你想不微调就提上去。

工作流:

  1. 在 SearchQA 参考 benchmark 上定义一次带评分的 rollout。

  2. 对冻结的 GPT-5.5 跑 SkillOpt 的训练回路:

    skillopt train --benchmark searchqa --backend openai --validate-on held-out
    
  3. SkillOpt 跑 rollout → reflect → aggregate → select → update → evaluate。每一次更新由保留集准确率门控。

  4. 收敛后,SkillOpt 写出 best_skill.md(300–2,000 token)。

  5. best_skill.md 作为这个任务的 agent 系统提示加载。

预期输出:一份 best_skill.md 产物和一份带前后对比的指标文件。README 报告相对无 skill 基线,SearchQA 上 +23.5 准确率点(直聊)、+24.8(Codex CLI)、+19.1(Claude Code CLI)。具体数字按任务变化;期待的是有意义的提升,不是奇迹。

你也可以直接把产物丢给 Codex CLI 或 Claude Code CLI:

codex --system-prompt-file best_skill.md

同一个文件能用,因为它只是 markdown。

实战:跑 SkillOpt-Sleep 做夜间自我改进

SkillOpt-Sleep(0.2.0+)是离线自进化引擎:它从当天 agent 的日志里采集、挖掘模式、在保留集上回放,并把最佳编辑整合进第二天的 best_skill.md

工作流:

  1. 让 agent 正常运行;确保它的日志被 SkillOpt 能读到的地方采集下来。
  2. 调度 sleep 任务:
skillopt-sleep --logs ./agent-logs/2026-08-17 --output best_skill.md
  1. 第二天早上,best_skill.md 反映了当天的成功与被拒。
  2. 把它作为系统提示加载;agent 开始新一天时,比昨天好一点。

预期输出:一份刷新的 best_skill.md 和一份简短的变更报告(被接受的编辑、被拒的编辑、保留集增量)。每天跑,改进会累积;一周不跑,产物就会过时。

技巧

  • 从 benchmark 入手,而不是任意任务。 验证门需要带评分的 rollout;没有评分信号的随意对话不会驱动改进。
  • 用 WebUI 调试。 当更新停滞或在保留集上回退时,控制台让问题一目了然。
  • 算好 optimizer-model 的账。 SkillOpt 需要一个 LLM 来提议编辑。部署是零成本,但训练步骤不是——预算要算上。
  • 加载前审查 best_skill.md SkillOpt 优化保留集准确率,而不是人类可读性。2000 token 的 skill 可能不透明;依赖前先看一眼。

何时不用这个 Skill

  • 你定义不出保留验证集。 没有评分信号,优化器就没有门控编辑的依据。先找一个可度量的代理。
  • 你想要人类可读的 skill。 SkillOpt 的产物优化准确率,不优化编辑清晰度。如果团队要能理解、能改这个 skill,从手写基线起步。
  • 你需要细粒度控制。 默认训练回路偏保守。实验性的多目标、回放、dream-rollout 旋钮存在,但不是 main-CLI 开关——你得深入内部。
  • plugin/MCP 集成很关键。 PyPI wheel 不打包 Claude Code / Codex / Copilot 集成。从 GitHub 仓库拿,不要从 pip 拿。

查看 排行榜 了解更多 skill。