SkillOpt

Executive Strategy for Self-Evolving Agent Skills — 凍結したエージェントのスキル Markdown だけを、epoch・learning rate・validation gate 付きの訓練ループで最適化する Microsoft 製フレームワーク。

1 — 概要

従来のエージェントスキルは手書き・一発生成・緩い自己改稿が多く、フィードバック下で再現可能に改善する仕組みが弱い。SkillOpt はスキル文書を学習可能な状態として扱い、別の optimizer モデルがスコア付き rollout から bounded な add / delete / replace 編集を提案する。候補は held-out validation で厳密に改善したときだけ採用される。

6組込みベンチマーク
52/52評価セルで best/tied
+23.5ptGPT-5.5 平均 (direct chat)
0推論時の追加モデル呼び出し

成果物は通常 300–2,000 トークンの best_skill.md。ターゲットモデルはそのまま、デプロイ時の推論コストは増えない。

Python 3.10+ PyPI: skillopt MIT microsoft/SkillOpt

2 — 訓練ループ
Rollout→ Reflect→ Aggregate→ Select→ Update→ Gate
flowchart TD
  R[Rollout
Target がタスク実行] --> RF[Reflect
Optimizer が edit patch 生成] RF --> AG[Aggregate
類似 patch をマージ] AG --> SL[Select
learning_rate で clip] SL --> UP[Update
スキル文書へ適用] UP --> GT[Gate
selection split で検証] GT -->|accept| R GT -->|reject| R subgraph epoch["Epoch 境界"] SU[Slow Update] MS[Meta Skill memory] end GT -.-> SU SU -.-> MS
01
Rollout(順伝播)
Target が現在のスキル文書をプロンプトにタスクを実行。各 trajectory にスコアが付く。
02
Reflect(逆伝播)
Optimizer が失敗 trajectory を解析し edit patch を生成。Shallow / Deep の 2 モード。
03
Aggregate
意味的に近い patch をマージし冗長編集を抑える。
04
Select(勾配クリップ)
learning_rate が 1 step で適用する最大編集数を上限する。lr_scheduler は cosine / linear / constant。
05
Update
選ばれた patch をスキル Markdown に適用し新バージョンを作る。
06
Gate(検証)
selection split で再評価。スコアが厳密に上がった候補だけ採用。rejected-edit buffer で不安定化を抑える。

Epoch 境界

  • Slow Update: epoch 2 以降、前 epoch と現スキルを同サンプルで rollout し improved / regressed / persistent_fail / stable_success を分類。高レベル guidance をスキルへ注入し忘却を防ぐ。
  • Meta Skill: 訓練全体を通じた戦略メモを蓄積し、以降の reflect に追加コンテキストとして渡す。
3 — 深層学習との対応

SkillOpt の設計思想は「自然言語プロンプト最適化 ≒ ニューラルネット訓練」という対応に基づく。ML 実務者は hyperparameter の感覚をそのまま持ち込める。

深層学習SkillOpt説明
Model weightsSkill document最適化対象
Forward passRolloutTarget がタスク実行
Loss / gradientReflect → edit patches失敗から改善案を生成
Gradient clippinglearning_rate1 step の最大編集数
LR schedulerlr_schedulercosine / linear / constant
Validation setSelection splitGate で改善確認
Early stoppingGate patience改善しない更新を拒否
MomentumSlow updateEpoch 境界の longitudinal 比較
Meta-learningMeta skill memory跨 epoch の optimizer 戦略
Batch sizebatch_sizerollout でサンプルするタスク数
CheckpointSkill snapshots採用 step ごとに保存
経験則: cosine schedule と moderate LR (4–16) が有効。batch を大きくしすぎても API コスト対効果は頭打ち。スキルは NN より早く収束し、2–4 epoch で足りることが多い。
4 — ベンチマーク
ベンチマーク種別設定
DocVQADocument QAconfigs/docvqa/
ALFWorldEmbodied AIconfigs/alfworld/
OfficeQAEnterprise QAconfigs/officeqa/
SearchQAOpen-domain QAconfigs/searchqa/
LiveMathBenchMath reasoningconfigs/livemathematicianbench/
SpreadsheetBenchSpreadsheet agentconfigs/spreadsheetbench/

各ベンチマークは skillopt/envs/<name>/ に dataloader.py・rollout.py・initial.md を持つ。7 ターゲットモデル × 3 実行ハーネス(direct chat / Codex CLI / Claude Code CLI)で評価済み。

5 — クイックスタート
# インストール
pip install skillopt
# または開発版
pip install -e .

# 認証(Azure OpenAI の例)
export AZURE_OPENAI_ENDPOINT="https://your-resource.openai.azure.com/"
export AZURE_OPENAI_API_KEY="your-key"

# SearchQA で訓練
python scripts/train.py --config configs/searchqa/default.yaml

# 最良スキルで評価のみ
python scripts/eval_only.py \
  --config configs/searchqa/default.yaml \
  --skill outputs/best_skill.md

WebUI(任意)

pip install -e ".[webui]"
python -m skillopt_webui.app --port 7860
フラグデフォルト説明
--port7860サーバポート
--host0.0.0.0バインドアドレス
--shareoffGradio 公開リンク

バックエンド: OpenAI / Azure / Claude / Qwen / MiniMax / Codex exec / Claude Code exec など。skillopt/model/ に backend モジュールを追加して拡張する。

6 — SkillOpt-Sleep

論文の skillopt/ とは独立した skillopt_sleep/ パッケージ。ローカルコーディングエージェント向けに、夜間の offline サイクルでセッションを harvest → 反復タスクを replay → gate 付き consolidate → ステージング → 人手 adopt する。

harvest→ mine→ replay→ consolidate→ gate→ stage
プラットフォーム導線
Claude Codeplugins/claude-code — marketplace 追加後 /skillopt-sleep
Codexplugins/codex/install.sh → skillopt-sleep skill
Copilotplugins/copilot/mcp_server.py を MCP サーバ登録
OpenClawplugins/openclaw

API キー不要の決定論的検証: python -m skillopt_sleep.experiments.run_experiment --persona researcher --assert-improves

7 — 拡張性

新しい backend

skillopt/model/<name>_backend.py を追加し、common.py・backend_config.py・__init__.py の router に登録。qwen_backend.py / minimax_backend.py がテンプレート。

新しい benchmark

skillopt/envs/<name>/ に dataloader・rollout・initial.md seed skill。skillopt/envs/searchqa/ が最小参照。

リポジトリ構成(主要)

skillopt/          # 訓練エンジン(engine, gradient, optimizer, envs, model)
skillopt_sleep/    # 夜間自己進化(論文コード非依存)
skillopt_webui/    # Gradio ダッシュボード
configs/           # ベンチマーク別 YAML
scripts/           # train.py, eval_only.py, run_*.sh
plugins/           # Claude Code / Codex / Copilot / OpenClaw 連携
ckpt/              # 公開済み best_skill.md 例