CopilotのAgent・SubAgent・Skillをポケモンに例えて理解する


GitHub CopilotのAgent、SubAgent、Skillという用語は、公式ドキュメントを読んでもすぐには頭に入ってこない。特に「Agentの中でSubAgentが動き、Skillが読み込まれる」という階層構造は、文字で追うと混乱しやすい。ところが、これをポケモンに例えた瞬間、全体像がすっきり見えてくる。この記事では、その比喩を通じて三者の役割と使い分けを整理する。

Agentはトレーナー

Agentの役割は、目的を持ち、状況を判断し、手持ちを動かす存在である。これはポケモンのトレーナーそのものだ。たとえばサトシとゴウは、同じ世界を歩いていても目的がまったく違う。サトシは「ポケモンマスターになる」ことを目指し、ゴウは「すべてのポケモンを捕まえる」ことを目指している。目的が違えば、選ぶポケモンも、戦い方も、旅のルートも変わる。

Agentが存在する理由は、ここにある。「バグを直したい」「新機能を設計したい」「リリースノートを書きたい」という目的ごとに、最適な進め方は違う。Agentは、その目的を受け取り、どのSubAgentにどう動いてもらうかを判断する司令塔の役割を担う。

トレーナーとしてのAgentの仕事

トレーナーは自分で技を出すわけではない。代わりに、場面に応じて手持ちを選び、指示を出す。Agentも同じで、自分で細かい作業をこなすより、タスクの分解と委譲が主な仕事になる。

  • 目的を設定する
  • タスクをどう分割するかを決める
  • どのSubAgentに任せるかを選ぶ
  • 結果を受け取って次の手を考える

SubAgentはポケモン

SubAgentは、Agentに呼び出されて特定の仕事をこなす専門家である。これはポケモンに当たる。ピカチュウは電気技が得意で、リザードンは炎と飛行が得意、ゲンガーはゴーストとエスパー対策に強い、というように、ポケモンごとに得意分野がはっきりしている。

SubAgentも同じで、「コードレビュー担当」「テスト作成担当」「ドキュメント整備担当」「セキュリティ監査担当」のように、役割ごとに専門化されている。Agentはタスクの性質を見て、適切なSubAgentを選んで呼び出す。これは、岩タイプ相手にはミズタイプを出す、という戦略と構造的に同じだ。

手持ちを揃えるという発想

ポケモンバトルで手持ちを6匹編成するように、Agentも複数のSubAgentを組み合わせて運用すると強い。単一の万能SubAgentを作ろうとするより、役割を分けておいた方が、プロンプトもコンテキストもシンプルに保てる。結果として、一匹あたりの判断精度が上がる。

Skillは技

Skillは、SubAgentが実行する具体的な動きである。これはポケモンの技に相当する。ここが比喩のキモで、技はポケモンに固有ではない。たとえば「でんこうせっか」はピカチュウも覚えるし、ニャースも覚える。「かみなり」はピカチュウだけでなく、サンダースやエレブーも使える。

Skillも同じで、「Hugoフロントマター生成ルール」「PR説明文テンプレート」「テスト追加手順」といったSkillは、特定のSubAgentに紐付いているわけではなく、必要に応じて複数のSubAgentから再利用できる。これが「Skillは再利用可能な手順」と言われる理由だ。

技マシンとしてのSkill

ポケモンは技マシンを使うことで新しい技を覚えられる。Skillもこれに近い。SubAgentは自分の得意分野のコア能力を持ちつつ、必要なときにSkillを読み込んで能力を拡張する。Copilotの世界では、Agent Skillsが関連タスクのときだけコンテキストに注入される仕組みになっており、これはまさに「戦闘中に必要な技だけ繰り出す」構造と一致する。

三者の関係を一枚絵で

ここまでの対応関係を整理すると次のようになる。

  • Agent = トレーナー:目的を持ち、戦略を決める
  • SubAgent = ポケモン:得意分野を持つ専門家
  • Skill = 技:複数のポケモンで共有できる具体的な動き

バトルの流れに置き換えるなら、「トレーナーが目的に応じてポケモンを選び、場面に応じて技を指示する」という構造になる。実務に置き換えれば、「Agentがタスクを分解し、適切なSubAgentを呼び、SubAgentが必要なSkillを読み込んで実行する」となる。

比喩が効く理由

この比喩がわかりやすいのは、役割の粒度と再利用性がきれいに対応しているからだ。トレーナー同士は目的が違うから入れ替えにくい。ポケモンは得意分野で役割分担する。技はポケモンを跨いで共有できる。Copilotの三階層も、同じ粒度設計になっている。

比喩が崩れるところ

ただし、この比喩には一点だけ素直に対応しないところがある。ポケモンの世界ではトレーナーが直接技を繰り出すことはなく、技を出すのはあくまでポケモンだ。一方Copilotでは、AgentもSubAgentと同じようにSkillを読み込んで自分で実行できる。小さなタスクであればSubAgentを介さず、Agentがその場でSkillを使ってしまう方が速い場面も多い。トレーナーが必要に応じて自分でも技マシンを使えるイメージだと思っておくと、設計時にミスマッチが起きにくい。

設計で迷ったときは、この比喩に戻ると判断しやすい。「これはトレーナーの仕事か、ポケモンの仕事か、それとも技か」と問い直すだけで、Agentに書くべきこと、SubAgentに閉じ込めるべきこと、Skillとして切り出すべきことが見えてくる。AIエージェントの設計は抽象的になりがちだが、手に馴染んだ比喩を一つ持っておくと、チームでの議論もかなり速くなる。

関連記事