SkillOpt
Executive Strategy for Self-Evolving Agent Skills — 凍結したエージェントのスキル Markdown だけを、epoch・learning rate・validation gate 付きの訓練ループで最適化する Microsoft 製フレームワーク。
従来のエージェントスキルは手書き・一発生成・緩い自己改稿が多く、フィードバック下で再現可能に改善する仕組みが弱い。SkillOpt はスキル文書を学習可能な状態として扱い、別の optimizer モデルがスコア付き rollout から bounded な add / delete / replace 編集を提案する。候補は held-out validation で厳密に改善したときだけ採用される。
成果物は通常 300–2,000 トークンの best_skill.md。ターゲットモデルはそのまま、デプロイ時の推論コストは増えない。
Python 3.10+ PyPI: skillopt MIT microsoft/SkillOpt
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
learning_rate が 1 step で適用する最大編集数を上限する。lr_scheduler は cosine / linear / constant。Epoch 境界
- Slow Update: epoch 2 以降、前 epoch と現スキルを同サンプルで rollout し improved / regressed / persistent_fail / stable_success を分類。高レベル guidance をスキルへ注入し忘却を防ぐ。
- Meta Skill: 訓練全体を通じた戦略メモを蓄積し、以降の reflect に追加コンテキストとして渡す。
SkillOpt の設計思想は「自然言語プロンプト最適化 ≒ ニューラルネット訓練」という対応に基づく。ML 実務者は hyperparameter の感覚をそのまま持ち込める。
| 深層学習 | SkillOpt | 説明 |
|---|---|---|
| Model weights | Skill document | 最適化対象 |
| Forward pass | Rollout | Target がタスク実行 |
| Loss / gradient | Reflect → edit patches | 失敗から改善案を生成 |
| Gradient clipping | learning_rate | 1 step の最大編集数 |
| LR scheduler | lr_scheduler | cosine / linear / constant |
| Validation set | Selection split | Gate で改善確認 |
| Early stopping | Gate patience | 改善しない更新を拒否 |
| Momentum | Slow update | Epoch 境界の longitudinal 比較 |
| Meta-learning | Meta skill memory | 跨 epoch の optimizer 戦略 |
| Batch size | batch_size | rollout でサンプルするタスク数 |
| Checkpoint | Skill snapshots | 採用 step ごとに保存 |
| ベンチマーク | 種別 | 設定 |
|---|---|---|
| DocVQA | Document QA | configs/docvqa/ |
| ALFWorld | Embodied AI | configs/alfworld/ |
| OfficeQA | Enterprise QA | configs/officeqa/ |
| SearchQA | Open-domain QA | configs/searchqa/ |
| LiveMathBench | Math reasoning | configs/livemathematicianbench/ |
| SpreadsheetBench | Spreadsheet agent | configs/spreadsheetbench/ |
各ベンチマークは skillopt/envs/<name>/ に dataloader.py・rollout.py・initial.md を持つ。7 ターゲットモデル × 3 実行ハーネス(direct chat / Codex CLI / Claude Code CLI)で評価済み。
# インストール
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.mdWebUI(任意)
pip install -e ".[webui]"
python -m skillopt_webui.app --port 7860| フラグ | デフォルト | 説明 |
|---|---|---|
--port | 7860 | サーバポート |
--host | 0.0.0.0 | バインドアドレス |
--share | off | Gradio 公開リンク |
バックエンド: OpenAI / Azure / Claude / Qwen / MiniMax / Codex exec / Claude Code exec など。skillopt/model/ に backend モジュールを追加して拡張する。
論文の skillopt/ とは独立した skillopt_sleep/ パッケージ。ローカルコーディングエージェント向けに、夜間の offline サイクルでセッションを harvest → 反復タスクを replay → gate 付き consolidate → ステージング → 人手 adopt する。
| プラットフォーム | 導線 |
|---|---|
| Claude Code | plugins/claude-code — marketplace 追加後 /skillopt-sleep |
| Codex | plugins/codex/install.sh → skillopt-sleep skill |
| Copilot | plugins/copilot/mcp_server.py を MCP サーバ登録 |
| OpenClaw | plugins/openclaw |
API キー不要の決定論的検証: python -m skillopt_sleep.experiments.run_experiment --persona researcher --assert-improves
新しい 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 例