こんにちは、AIニュースアプリ Morning AI 開発者の矢野哲平です。この記事ではGemini CLIに追加されたサブエージェント機能について触れます。
Subagents have arrived in Gemini CLI - Google Developers Blog
サブエージェントとは
簡単に言うと、メインのエージェントから専門的なエージェントにタスクを委譲する仕組みです。
すでにClaude Codeを使っている人なら馴染み深いと思います。
各サブエージェントは独立したコンテキストウィンドウ、カスタムシステム指示、キュレートされたツールセットを持ちます。
メインのエージェントは全体の目標や意思決定に集中し、調査やコード探索といった個別のタスクはサブエージェントに任せるという分担です。
コンテキストウィンドウが独立しているのがポイントで、サブエージェントは処理結果を要約して返すため、メインのコンテキストが肥大化しません。
そして、各サブエージェントは並列実行できます。
設定方法
サブエージェントはマークダウンファイル(.md)で定義します。YAMLフロントマターで名前や使用ツールを指定し、本文にシステムプロンプトを書く構成です。
配置場所は2つあります。
- グローバル:
~/.gemini/agents/ - プロジェクトレベル:
.gemini/agents/
個人的にはプロジェクトレベルで細かく設定することを推奨します。
例えば、フロントエンド専門のサブエージェントを作る場合、.gemini/agents/frontend-specialist.mdのようなファイルを作成します。フロントマターで使用可能なツール(read_file、grep_search、globなど)を指定し、本文にはアーキテクチャの方針やアクセシビリティ基準(WCAG 2.1+)といった専門知識を記述します。
組み込みエージェント
実はGemini CLIには最初から3つのサブエージェントが用意されています。
| エージェント名 | 用途 |
|---|---|
| generalist | すべてのツールにアクセス可能な汎用エージェント |
| cli_help | Gemini CLI自体に関する質問への対応 |
| codebase_investigator | コードベースの探索や依存関係の分析 |
自分でカスタムエージェントを定義しなくても、これらはすぐに使えます。
Gemini CLIが指示に基づきサブエージェントを稼働する必要があると判断した場合に自動的にサブエージェントを実行します。
明示的にサブエージェントを使う
@記号でサブエージェントを指定して委譲します。
@frontend-specialist アプリをレビューして改善点を指摘して
@codebase_investigator 認証フローをマッピングして
/agentsコマンドで、現在利用可能なサブエージェントの一覧を確認できます。
並列実行もできる
「各パッケージに対してfrontend-specialistを並列で実行して」のような指示を出すと、複数のサブエージェントが同時に動きます。
ただし、複数のエージェントが同じファイルを同時に編集すると競合やオーバーライトが発生する可能性があるため、大規模なコード変更を並列で走らせるときは注意が必要です。
Claude Codeのサブエージェントとの比較
Claude Codeにも同様のサブエージェント機能があります。仕組みはかなり似ていて、.claude/agents/にマークダウンファイルを配置し、@で呼び出す点は共通です。
どちらもエージェントごとに独立したコンテキストを持ち、使えるツールを制限できるという基本思想は同じです。
ターミナルベースのAIコーディングツールとして、サブエージェントによるタスク委譲は標準的な機能になりつつあるのかなと思います。
ターミナルAIツールの機能競争は続く
Gemini CLIのサブエージェント機能は、Claude Codeの既存機能と方向性が近いです。
マークダウンベースの設定ファイル、@による明示的な委譲、独立したコンテキストウィンドウといった設計はほぼ共通しています。
今後は各ツールがどう差別化していくかが気になるところです。