Gemini CLIにサブエージェント機能を導入
(developers.googleblog.com)- Gemini CLIが、複雑で反復的な作業を専門サブエージェントに委任できるマルチエージェントアーキテクチャを正式にサポート開始
- 各サブエージェントは、独立したコンテキストウィンドウ、カスタムのシステムインストラクション、専用ツールセットを備え、分離された環境で実行
- MarkdownファイルとYAML frontmatterでカスタムサブエージェントを定義し、グローバルまたはプロジェクトレベルでチームと共有可能
- 複数のサブエージェントを並列実行できるため、リサーチやリファクタリングなど複数作業の総所要時間を大幅に短縮
- 標準の組み込みエージェント(generalist、cli_help、codebase_investigator)とあわせて、@agent構文で明示的な作業委任が可能となり、CLIベースの開発ワークフローの拡張性を確保
サブエージェントの概念と主な利点
- サブエージェントは、基本のGemini CLIセッションとともに動作する専門エージェントであり、複雑な作業を受けるとGemini CLIが戦略的オーケストレーターとして機能し、最適なサブエージェントにサブタスクを委任
- 各サブエージェントは独自のtools、MCPサーバー、システムインストラクション、コンテキストウィンドウを持ち、完全に分離された状態で実行
- サブエージェントの一連の実行全体(数十回のツール呼び出し、ファイル検索、テスト実行を含む)が単一の応答に統合されてメインエージェントへ返される
- メインのコンテキストウィンドウが埋まるのを防ぎ、その後のやり取りの速度とコスト効率を維持
- 主な利点は3つ:
- 基本エージェントが全体目標、意思決定、最終応答に集中可能
- リサーチ、コード探索、分析、テストなどに特化したサブエージェントを並列実行して作業速度を向上
- サブエージェントが要約または整形済みの応答を返すため、基本セッションのcontext rotやcontext pollutionを防止
カスタムサブエージェントの作成
- Markdownファイル(
.md)でYAML frontmatterを使ってカスタムサブエージェントを定義 ~/.gemini/agentsに配置すると個人ワークフロー向けのグローバルエージェントとして登録され、リポジトリの.gemini/agentsにコミットするとプロジェクトレベルでチームと共有可能- Gemini CLI extensions の
agents/ディレクトリにエージェント定義ファイルを含めることで、拡張機能の一部としてバンドルすることも可能 - 例として示された
frontend-specialistエージェント構成:name、description、tools(read_file, grep_search, glob, list_directory, web_fetch, google_web_search)、model: inheritなどをfrontmatterに定義- システムインストラクションでSenior Frontend SpecialistおよびUI/UX Architectの役割を指定
- 主要原則として、モジュラーアーキテクチャ設計、Core Web Vitalsベースのパフォーマンス最適化、WCAG 2.1+アクセシビリティ準拠を明記
- ガイドラインとして、ブラウザネイティブAPIの優先活用、Atomicコンポーネント設計、状態ごとの視覚的フィードバック(ローディング、スケルトン、エラー、空状態、成功)、Progressive Enhancement、保守性重視の設計を含む
- このエージェントの役割は分析と改善提案に限定され、直接コードを修正しない
- ファイルを
.gemini/agents/frontend-specialist.mdに配置すると、Gemini CLIが即座に新しい専門家として認識
並列実行
- Gemini CLIは並列サブエージェント実行をサポートしており、複数のサブエージェント、または同一サブエージェントの複数インスタンスを同時に実行可能
- 5つの異なるトピックを調査したり、複数の個別コンポーネントをリファクタリングしたりする際に、複数エージェントを同時にディスパッチして総所要時間を大幅に短縮
- 明示的なリクエスト方法の例: "Run the frontend-specialist on each package in parallel."
- 注意点:
- 大規模なコード編集作業で並列サブエージェントを使うと、競合の発生やエージェント間でコードを上書きするリスクがある
- 並列実行ではリクエストが同時送信されるため、**使用量制限(usage limits)**により早く達する可能性がある
組み込みサブエージェントと使い方
- Gemini CLIに標準搭載されているサブエージェントは3種類:
- generalist: すべてのツールにアクセスできる汎用エージェントで、バッチリファクタリングや大量出力コマンドの実行など、ターン集約型の作業に適している(通常のGemini CLIエージェントのコピーをサブエージェントとして使う形)
- cli_help: Gemini CLI自体に関する専門エージェントで、Gemini CLIドキュメントに直接アクセスして機能関連の質問に回答
- codebase_investigator: コードベース探索、アーキテクチャマッピング、バグの根本原因分析、システム全体の依存関係把握に特化
- Gemini CLIはサブエージェントのdescriptionに基づいて自動ルーティングを行うが、@agent構文を使って特定のエージェントに明示的に作業を委任することも可能
- 例:
@frontend-specialistにアプリのレビューと改善点のフラグ付けを依頼 - 例:
@generalistにプロジェクト全体のライセンスヘッダー更新を依頼 - 例:
@codebase_investigatorに認証フローのマッピングを依頼
- 例:
- @記号の後ろにサブエージェント名を付けると、そのエージェントの分離されたコンテキストウィンドウ内で作業を処理
- 現在設定されているすべてのサブエージェントを確認するには、Gemini CLI内で
/agentsコマンドを実行
1件のコメント
gemini cli は、せめてちゃんと動くだけでもしてほしいのに、いつもクラッシュしてる