コンテンツにスキップ

開発手法・文化

重みを触らずスキルを「学習」させる:Microsoft SkillOptが示すエージェント最適化

対象 / ポイント

対象: Claude Code、Codex CLI、GitHub Copilotなどで SKILL.md やカスタム指示を書き、実行結果から品質を高める方法を探している開発者・技術リード。

ポイント:

  • SkillOptはモデルの重みを固定し、自然言語のスキル文書を訓練可能な外部状態として最適化する
  • 編集案はホールドアウト検証で改善したときだけ採用され、自己編集を検証付きの学習ループに変える
  • 成果物は小さな best_skill.md で、推論時に追加モデル呼び出しを増やさない

エージェントに渡すスキル文書は、書いたあとが難しい。 手順、検証方法、出力形式を SKILL.md にまとめても、それが本当に良くなったかは実行してみるまでわからない。 失敗ログを眺めて人間が直すか、強いLLMに「改善して」と頼むか。 多くの運用はそこで止まる。

この記事の問いは一つだ。 スキル文書を、モデルの重みを触らずに、実行結果からどう学習させるのか。

スキルはまだ手作業の外部記憶だった

SkillOptの出発点は、スキルが「手書きの指示」から抜け出せていないという問題意識である。 論文は、現在のスキル作成を手作り、一発生成、緩い自己修正の3つに分け、それらはフィードバックで出発点を安定して上回る仕組みではないと整理する1

SkillOptが変えるのは、モデルではなくスキル文書の扱いだ。 スキルを、固定されたエージェントの外側にある訓練可能な状態として置く。 ファインチューニングではない。 自然言語の手順書を、ロールアウトと検証で更新されるパラメータのように扱う。

この発想は、Claude CodeやCodexでスキルを書いている人にはかなり実務的だ。 チームが増やしている SKILL.md やプロジェクト指示は、暗黙のままだと「よく書けた気がする文書」になる。 SkillOptはそこに、スコア、候補編集、採否判定を持ち込む。

学習ループは4動作で回る

SkillOptの1ステップは、ロールアウト、反省、編集、ゲートでできている。 この順番が重要だ。 先に実行し、失敗と成功を見て、限定された編集だけを試し、検証で勝った候補だけを残す。

  • ロールアウト: 固定モデルが現スキルでタスクを実行し、メッセージ、ツール呼び出し、検証器の反応、最終スコアを記録する
  • 反省: 別の最適化モデルが成功例と失敗例を分けて分析し、再利用できる手順を探す
  • 編集: 追加、削除、置換の候補を編集予算の範囲で統合し、優先度を付ける
  • ゲート: ホールドアウト検証で現行スキルを上回った候補だけを採用する

プロジェクトページは、この対応を明示的に学習アルゴリズムへ重ねている。 ロールアウトは順伝播、反省は言語レベルの逆伝播、編集予算はテキストの学習率に相当する2。 ただし、動くのは重みではない。 動くのは文書だ。

ゲートがなければ、これは単なる自己編集になる。 ゲートがあるから、編集は「提案して検証で試す」操作になる。 失敗した編集は捨てられ、却下編集のバッファ、スロー更新、メタスキルが長い時間軸のフィードバックとして残る2

アブレーションもこの見方を支えている。 プロジェクトページの表では、メタスキルとスロー更新を外すとSpreadsheetBenchの値が77.5から55.0へ落ちる3。 派手な自己改善ではなく、地味な制約が効いている。

ALFWorldでは探索ルールが育った

具体例を見ると、SkillOptが何を「学習」しているかがわかる。 ALFWorldの例では、GPT-5.4-miniを固定ターゲット、GPT-5.5を最適化モデルとして使う。 選択ゲートのスコアは68.6%から81.4%へ上がり、最終テストのhardスコアは70.9%から85.8%へ伸びた4

このとき採用されたスキルは、抽象的な励ましではない。 家庭内タスクで失敗しにくくする、具体的な探索ルールである。

# best_skill.md(ALFWorld・抜粋)
- 汎用的なターゲット什器は、どのインスタンスも有効として数える
- 探索済みの場所は番号付きで管理し、同じ場所を二度見しない
- 同種の場所で何度か外したら、探索範囲を広げる

重要なのは、学習中に「訓練ロールアウトでは良いが検証で落ちる」候補が採用されなかった点だ。 ホールドアウトに負けた編集は、いくら見た目がもっともらしくても現在のスキルにならない。 ここが、プロンプトの自己改善とSkillOptの境目である。

成果物は1ファイルで持ち運べる

SkillOptの主張で一番実務に近いのは、配備物が小さいことだ。 最終的に使うのは、通常300から2,000トークン程度の best_skill.md である5。 実行時に最適化モデルも、学習中のメモリも持ち込まない。

評価では、6ベンチマーク、7ターゲットモデル、直接チャット・Codex・Claude Codeの3ハーネスを組み合わせた52の評価セルで、SkillOptが最良または同率最良だったと報告されている1。 GPT-5.5の直接チャットでは、スキルなし比で平均+23.5ポイントだった。

ハーネスGPT-5.5のスキルなし比・平均改善
直接チャット+23.5
Codex+21.8
Claude Code+18.6

この表は、公式プロジェクトページのベンチマーク別主表に基づく6。 なおarXivの要旨とREADME/PyPIの概要文では、Codex +24.8、Claude Code +19.1という概要値も記載されている157。 本記事では、各ベンチマーク値から平均を確認できる主表の値を採用した。

転用性も売りになっている。 プロジェクトページは、モデル間転移で+15.2、Codexで訓練したSpreadsheetBenchスキルをClaude Codeへ移したハーネス間転移で+31.8、ターゲット自身を最適化モデルにする設定で+10.4の改善を示す8。 どれも転移先のスキルなし実行に対する値で、追加のターゲット側最適化は使っていない。

効く条件は検証器で決まる

SkillOptは、どんな業務にもそのまま刺さる万能手法ではない。 最初の制約は、採点できるタスクが要ることだ。 ロールアウトにスコアを付けられず、ホールドアウト検証も作れないなら、ゲートは機能しない。

向いているのは、正誤や成功条件を比較的明確にできるタスクである。 検索QA、表計算、文書QA、数学、ALFWorldのような身体性タスクはこの条件に近い7。 一方で、曖昧な企画、交渉、文章の好み、長い業務フローの価値判断では、先に評価設計が必要になる。

コストも推論時から学習時へ移る。 本番実行は軽くなるが、学習中は多数のロールアウトと最適化モデル呼び出しが必要だ。 長く使うスキルなら償却できる。 短命なタスクや一度きりの調査では、最適化そのものが過剰になる可能性がある。

もう一つの制約は、最適化モデルの質である。 プロジェクトページは、強い最適化モデルほど改善が大きい一方で、ターゲット自身を最適化モデルにする設定でも改善が出ると説明する8。 つまり単なる強モデル蒸留ではない。 ただし、良い反省と良い編集候補を出せるモデルが上限を押し上げることは残る。

試すならWebUIより先に評価セットを作る

SkillOpt v0.1.0は2026年6月2日にPyPIで公開され、Python 3.10以上を要求する7。 READMEでは、OpenAI、Azure、Claude、Qwen、MiniMax系のバックエンド、6つの組み込みベンチマーク、WebUIダッシュボードが説明されている5

pip install skillopt

# WebUIを使う場合
pip install "skillopt[webui]"
python -m skillopt_webui.app

ただし、最初に触るべきなのはUIではない。 自分のスキルを鍛えたいなら、まず小さな評価セットを作る。 10件でもよい。 入力、期待結果、採点方法、ホールドアウトに分ける基準を決める。

ここを作らずにSkillOptを入れると、ただの自動プロンプト編集器になる。 逆に言えば、評価セットさえあるなら、手書きスキルにも同じ考え方を持ち込める。 候補編集を出す、固定セットで比べる、勝ったものだけ残す。 最小構成でも、運用はかなり変わる。

ローカルのコーディングエージェント向けには、SkillOpt-Sleepもプレビュー公開されている。 これはClaude Code、Codex、Copilotを対象に、過去セッションを夜間に振り返り、繰り返しタスクを再実行し、ゲートを通ったスキルだけを定着候補にする仕組みだ9。 Microsoftの関連プロジェクトとして、モデル生成スキルを分析するSkillLensも公開されている10

まとめ:学習させているのは文書ではなく規律だ

SkillOptの新しさは、「エージェントが自分で賢くなる」という言い方だけでは足りない。 本質は、自然言語のスキル文書に、最適化の規律を持ち込んだ点にある。

固定した検証ゲートと、動ける幅を縛るテキスト学習率。 この2つが、際限のない自己編集を、検証付きの改善手続きへ変える。 逆に言えば、ゲートと刻み幅を欠いた自動改善は、規模が大きいほどドリフトしやすい。

SkillOptをそのまま導入しなくても、この原則は使える。 SKILL.mdを直すときは、良さそうな文章を足す前に、落としてはいけないタスクを固定する。 そのうえで、差分を小さくし、検証に勝った編集だけを残す。 スキル運用の品質は、文章力より先に、採否の仕組みで決まる。

関連記事