6 ポイント 投稿者 GN⁺ 15 일 전 | 1件のコメント | WhatsAppで共有
  • Gemini CLIが、複雑で反復的な作業を専門サブエージェントに委任できるマルチエージェントアーキテクチャを正式にサポート開始
  • 各サブエージェントは、独立したコンテキストウィンドウ、カスタムのシステムインストラクション、専用ツールセットを備え、分離された環境で実行
  • MarkdownファイルとYAML frontmatterでカスタムサブエージェントを定義し、グローバルまたはプロジェクトレベルでチームと共有可能
  • 複数のサブエージェントを並列実行できるため、リサーチやリファクタリングなど複数作業の総所要時間を大幅に短縮
  • 標準の組み込みエージェント(generalist、cli_help、codebase_investigator)とあわせて、@agent構文で明示的な作業委任が可能となり、CLIベースの開発ワークフローの拡張性を確保

サブエージェントの概念と主な利点

  • サブエージェントは、基本のGemini CLIセッションとともに動作する専門エージェントであり、複雑な作業を受けるとGemini CLIが戦略的オーケストレーターとして機能し、最適なサブエージェントにサブタスクを委任
  • 各サブエージェントは独自のtoolsMCPサーバーシステムインストラクションコンテキストウィンドウを持ち、完全に分離された状態で実行
  • サブエージェントの一連の実行全体(数十回のツール呼び出し、ファイル検索、テスト実行を含む)が単一の応答に統合されてメインエージェントへ返される
    • メインのコンテキストウィンドウが埋まるのを防ぎ、その後のやり取りの速度とコスト効率を維持
  • 主な利点は3つ:
    • 基本エージェントが全体目標、意思決定、最終応答に集中可能
    • リサーチ、コード探索、分析、テストなどに特化したサブエージェントを並列実行して作業速度を向上
    • サブエージェントが要約または整形済みの応答を返すため、基本セッションのcontext rotcontext pollutionを防止

カスタムサブエージェントの作成

  • Markdownファイル(.md)でYAML frontmatterを使ってカスタムサブエージェントを定義
  • ~/.gemini/agentsに配置すると個人ワークフロー向けのグローバルエージェントとして登録され、リポジトリの.gemini/agentsにコミットするとプロジェクトレベルでチームと共有可能
  • Gemini CLI extensionsagents/ディレクトリにエージェント定義ファイルを含めることで、拡張機能の一部としてバンドルすることも可能
  • 例として示されたfrontend-specialistエージェント構成:
    • namedescriptiontools(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件のコメント

 
chlrhdmltkfkd 14 일 전

gemini cli は、せめてちゃんと動くだけでもしてほしいのに、いつもクラッシュしてる