GeminiCLIで複数のAIエージェントを連携させよう


この記事ではGeminiCLIにおいて複数のAIエージェントを連携させるサブエージェントという機能について使い方や導入するメリットについて解説しています。




はじめに

こんにちはGeminiCLIは使っているでしょうか?


私は普段からメインに使うAIエージェントとしてGeminiCLIを重宝しています。

以下の記事でGeminiCLIに関しての解説をしています。

GeminiCLIガイド 高性能で無料のAIエージェントGeminiCLIを使いこなそう



GeminiCLIは無料版でも比較的大きなコンテキストサイズを持っており、広大なファイルでも問題なく理解してくれます。

しかしあまりにも複雑で広大なプロンプトを渡すと、時に出力の精度が落ちることがあります。

これはLLMが多すぎる情報量に混乱している際に発生します。

そこでサブエージェントという機能が役立ちます。


サブエージェントとは


GeminiCLIにおけるサブエージェントとは特定の役割を与えられた専門家です。


AIエージェントはサブエージェントに対し、必要に応じてタスクを細分化し丸投げすることができます。


そうして結論だけを報告させることで、無駄な情報をメインエージェントが抱えることなく複雑なタスクを実行することができます。


これはそのまま人間がタスクを細分化し、部下に与えるのと同じことをしています。


この機能のおかげでメインのコンテキストを綺麗に保ちつつ、より正確な成果を得ることができるのです。



サブエージェントの使い方


サブエージェントは特別明示しなくてもエージェントがタスクに必要だと判断すると勝手に使ってくれます。


その際必要な情報なども自動で判断され入力されます。


しかし@メンションを使うと明示的にサブエージェントを使用させることができます。


@と打つと候補がたくさん出てきます。




この場合[ Agent ]と書いてあるものが、使用できるサブエージェントです。


@[sub agent]と打ち込み、タスクのプロンプトを入力すると、サブエージェントを使わせることができます。


デフォルトで用意されているサブエージェント

GeminiCLIにはデフォルトで以下の3つのエージェントが実装されています。

これらは特に設定をせずともタスクに応じて自動で活用されます。


1. codebase_investigator  プロジェクトやプログラムの解析の専門家

役割: コード解析、アーキテクチャの把握、システムの全体像の理解。

プロジェクトの構造の把握時や、バグの原因究明といった、広範囲な調査が必要な時に呼び出されます。


2. cli_help  GeminiCLI自体の仕様や使い方に関する専門家

役割: Gemini CLIの機能、ドキュメント、現在の設定に関する質問への回答。

GeminiCLI自体の機能や、現在の設定などの質問の回答の時に呼び出されます。


3. generalist 反復的な作業や大量のデータ処理の雑用係

役割: バッチ処理、反復作業、広範囲な修正。

手数が多くなる作業や、メインの会話履歴を汚したくない重たいタスクなどの時に呼び出されます。


類似の機能 スキル(Skills)との違い

GeminiCLIにはサブエージェントの他にもスキル(Skills)という機能が存在します。

サブエージェントは別のエージェントに、タスクを丸投げし結果だけを報告させます。

このサブエージェントは独立しているので、メインエージェントが余計な情報を抱え込まずにタスクの遂行が可能です。

スキルはメインエージェントが必要に応じてスキルの内容を読み取り、自分自身の指示(プロンプト)の一部として取り込みます。

簡潔にまとめると

サブエージェントは「専門家への外注」であり、

スキルは、「知識や手順をまとめたマニュアルのインプット」です。



サブエージェントの作り方

サブエージェントは自作することができます。

プログラミングなどは必要ありません。自然言語だけで制御することが可能です。

さらにGeminiCLI自体に「こういうサブエージェントを作って」と指示すればサブエージェントの定義ファイルを作らせることも可能です。

具体的な手順は以下の通りです。


手順1. 設定ファイルからサブエージェントを有効化

お使いのGeminiCLIの設定ファイル( ~/.gemini/settings.jsonなど)に以下を追加してください。

{
  "experimental": {
    "enableAgents": true
  }
}


手順2. サブエージェントの定義ファイルを配置するディレクトリを作成

以下のようにagentsディレクトリを作成してください

注意agentではなく複数形のSが付いたagentsです。スペルミスをすると認識してくれないので気をつけてください。
- プロジェクト限定: .gemini/agents/


- PC全体(グローバル): ~/.gemini/agents/

サブエージェントの定義ファイルはMarkdown形式です。その定義ファイルを上記のディレクトリに入れるとサブエージェントを定義し活用することができます。


具体的な定義方法を以下の手順の通りです。



手順3. エージェントを定義

Markdownファイルの冒頭に、YAMLフロントマターという形式でエージェントの「スペック」を記述します。


以下は例です。


---
name: research-validator
description: Google検索を使用して最新情報を調査し、
             ユーザーの知識や解釈が正しいかを
検証して要点をまとめます。 tools: - google_web_search - web_fetch
model: gemini-2.0-flash ---
  • description: メインエージェントが「いつこの専門家を呼ぶべきか」を判断するための基準になります。具体的かつ明確に書きましょう。
  • tools: この専門家に許可するツールを制限・指定できます。
  • model: タスクに応じて最適なモデルを選択可能です。設定しなかった場合メインエージェントと同じものが使用されます。

手順4. サブエージェント自体の振る舞いを定義

YAMLの下の本文にそのエージェント自体の振る舞いを指示する文章を書き込みます。


あなたは「リサーチ & バリデーター」エージェントです。
あなたの任務は、提供されたトピックについて深く調査し、以下の3ステップで回答することです。 1. **最新情報の要約**: 指定されたトピックについて複数の信頼できるソースから検索を行い、
                       主要な事実を簡潔にまとめます。 2. **解釈の検証**: ユーザーが提示した「現在の知識・解釈」を、検索結果と比較します。 - 一致している点 - 誤解や古い情報である点 - 補足が必要な新しい視点 3. **最終的な見解**: 調査に基づいた最も正確で最新の解釈を提示します。 常に客観的であり、一次ソースや公式ドキュメント、信頼性の高いニュースソースを優先してください。
単なる要約に留まらず、ユーザーの理解を正すためのクリティカルな分析を行ってください。


上記のサブエージェントを定義するMarkdownファイルは、そのままGeminiCLIに頼めば出力してくれます。

なので気軽にサブエージェントを作らせてファイルを所定の位置におくことで簡単に自分だけのAIエージェントを作ることができます。


まとめ


サブエージェントは上記のように設定すればAIエージェントが必要に応じて自動で活用してくれます。

単純な仕組みですが、適切に活用すると驚くほど性能が向上します。

ぜひこの記事を参考にしてお使いのGeminiCLIを自分だけの最強エージェントに育成しましょう。