[{"data":1,"prerenderedAt":317},["ShallowReactive",2],{"content-query-XOhhKhs4af":3},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":8,"description":9,"date":10,"tags":11,"eyecatch":12,"eyecatchEmoji":13,"body":14,"_type":311,"_id":312,"_source":313,"_file":314,"_stem":315,"_extension":316},"/article/260422/gemini-cli-sub-agents","260422",false,"","Gemini CLI のサブエージェントを試してみた","Gemini CLI でもサブエージェントが使えるようになったらしいので、試してみました。","2026-04-22","IT",null,"👯‍♀️",{"type":15,"children":16,"toc":304},"root",[17,25,30,42,56,62,67,82,87,92,97,102,124,133,146,159,164,169,197,202,227,232,237,242,247,252,257,262,267,272,285,289,294,299],{"type":18,"tag":19,"props":20,"children":21},"element","p",{},[22],{"type":23,"value":24},"text","こんにちは、だいちゃんです。",{"type":18,"tag":19,"props":26,"children":27},{},[28],{"type":23,"value":29},"以前、このブログで「myHub」という僕専属の AI チームを作った話を書きました。",{"type":18,"tag":19,"props":31,"children":32},{},[33],{"type":18,"tag":34,"props":35,"children":39},"a",{"href":36,"rel":37},"https://blog.udcxx.me/article/260323/gemini-cli/",[38],"nofollow",[40],{"type":23,"value":41},"Gemini CLIで専属チームを組成してみる | 無趣味の戯言",{"type":18,"tag":19,"props":43,"children":44},{},[45,47,54],{"type":23,"value":46},"元々は、Claude Code で会社を組織する YouTube 動画を見て、無料で使える Gemini CLI でどこまでイケるかを試してたんですが、 ",{"type":18,"tag":34,"props":48,"children":51},{"href":49,"rel":50},"https://developers.googleblog.com/subagents-have-arrived-in-gemini-cli/",[38],[52],{"type":23,"value":53},"Gemini CLI にも「サブエージェント機能」が追加された",{"type":23,"value":55}," らしいので、より近いことができるんじゃないかなと思い、早速試してみました。",{"type":18,"tag":57,"props":58,"children":60},"h2",{"id":59},"サブエージェントが使えるメリット",[61],{"type":23,"value":59},{"type":18,"tag":19,"props":63,"children":64},{},[65],{"type":23,"value":66},"実際、1つのエージェントの中で複数の役割を演じる以前のやり方でも、困る場面はあまりなかったですが、以下の2点でメリットを享受できそうでした。",{"type":18,"tag":68,"props":69,"children":70},"ul",{},[71,77],{"type":18,"tag":72,"props":73,"children":74},"li",{},[75],{"type":23,"value":76},"並行処理が可能になる",{"type":18,"tag":72,"props":78,"children":79},{},[80],{"type":23,"value":81},"コンテキストの負担軽減",{"type":18,"tag":19,"props":83,"children":84},{},[85],{"type":23,"value":86},"一番デカそうなのが、並行処理が可能になる点です。これにより、裏でAIに作業をさせつつ、別の相談ができたりするらしい。これを活かすべく、今回チームメンバーの入れ替えで「スタッフ」を追加しました。裏で簡単な作業をやってもらうアルバイト的な使い方をしてみます。",{"type":18,"tag":19,"props":88,"children":89},{},[90],{"type":23,"value":91},"コンテキストの負担軽減は、あまり困ることはなかったのですが、今後ガンガン使っていく上でメリットが効いてきそうだと感じました。これまでは複数の役割を1つのコンテキストとして扱っていたので、例えば記事を書かせたあとに「今日の残りタスクは？」と聞いてもうまく返してくれない、みたいなことが無くなるようです。",{"type":18,"tag":19,"props":93,"children":94},{},[95],{"type":23,"value":96},"元々コンテキストが溢れる懸念はしていたので、myhub/logs/ に1日毎のログファイルを作り、常に更新するよう指示しているので、コンテキストが分かれる効果は...って気もしますが、余計なコンテキストが別枠で管理されるのは良いことです。",{"type":18,"tag":57,"props":98,"children":100},{"id":99},"変更箇所",[101],{"type":23,"value":99},{"type":18,"tag":19,"props":103,"children":104},{},[105,107,114,116,122],{"type":23,"value":106},"前回の記事からの変更箇所としては、各チームメンバー（旧：役割・現：エージェント）ごとの指示ファイルの置き場所が ",{"type":18,"tag":108,"props":109,"children":111},"code",{"className":110},[],[112],{"type":23,"value":113},"/instructions/",{"type":23,"value":115}," から ",{"type":18,"tag":108,"props":117,"children":119},{"className":118},[],[120],{"type":23,"value":121},"/.gemini/agents/",{"type":23,"value":123}," に変更になります。加えて、各ファイルの冒頭部分にYAMLフロントマターを記載してエージェントとして認識できるようにしてあげます。",{"type":18,"tag":125,"props":126,"children":128},"pre",{"code":127},"---\nname: engineer\ndescription: 技術参謀。プロジェクトの仕様策定、ドキュメント編集を担当。\ntools:\n  - read_file\n  - grep_search\n  - glob\n  - list_directory\n  - write_file\n  - google_web_search\nmodel: inherit\n---\n",[129],{"type":18,"tag":108,"props":130,"children":131},{"__ignoreMap":7},[132],{"type":23,"value":127},{"type":18,"tag":19,"props":134,"children":135},{},[136,138,144],{"type":23,"value":137},"エンジニアエージェントだと上記のようなブロックを入れて ",{"type":18,"tag":108,"props":139,"children":141},{"className":140},[],[142],{"type":23,"value":143},"myhub/.gemini/agents/engineer.md",{"type":23,"value":145}," として保存します。",{"type":18,"tag":19,"props":147,"children":148},{},[149,151,157],{"type":23,"value":150},"特にエージェントを指定しなかった時に読み込まれる ",{"type":18,"tag":108,"props":152,"children":154},{"className":153},[],[155],{"type":23,"value":156},"GEMINI.md",{"type":23,"value":158}," の変更箇所は、上記の新しいフォルダ構成に書き換えたり、“役割” と書かれている箇所を “エージェント” に置換する程度です。",{"type":18,"tag":19,"props":160,"children":161},{},[162],{"type":23,"value":163},"また、前述の通り、今回はチームメンバーの入れ替えも行いました。",{"type":18,"tag":19,"props":165,"children":166},{},[167],{"type":23,"value":168},"旧メンバー：",{"type":18,"tag":68,"props":170,"children":171},{},[172,177,182,187,192],{"type":18,"tag":72,"props":173,"children":174},{},[175],{"type":23,"value":176},"秘書",{"type":18,"tag":72,"props":178,"children":179},{},[180],{"type":23,"value":181},"PM",{"type":18,"tag":72,"props":183,"children":184},{},[185],{"type":23,"value":186},"エンジニア",{"type":18,"tag":72,"props":188,"children":189},{},[190],{"type":23,"value":191},"ライター",{"type":18,"tag":72,"props":193,"children":194},{},[195],{"type":23,"value":196},"カウンセラー",{"type":18,"tag":19,"props":198,"children":199},{},[200],{"type":23,"value":201},"新メンバー：",{"type":18,"tag":68,"props":203,"children":204},{},[205,209,213,217,222],{"type":18,"tag":72,"props":206,"children":207},{},[208],{"type":23,"value":176},{"type":18,"tag":72,"props":210,"children":211},{},[212],{"type":23,"value":186},{"type":18,"tag":72,"props":214,"children":215},{},[216],{"type":23,"value":191},{"type":18,"tag":72,"props":218,"children":219},{},[220],{"type":23,"value":221},"メンター",{"type":18,"tag":72,"props":223,"children":224},{},[225],{"type":23,"value":226},"スタッフ",{"type":18,"tag":19,"props":228,"children":229},{},[230],{"type":23,"value":231},"カウンセラーはメンターに名称を変更して、もっと幅広い相談ができるように位置づけを変えてみました。",{"type":18,"tag":19,"props":233,"children":234},{},[235],{"type":23,"value":236},"そして、バックグラウンドで処理ができるメリットを活かすべく「スタッフ」を新たに入れてみました。エンジニアにスクリプトを書いてもらって自動化するほどでもない、1度きりの単純作業とかに使おうと思います。",{"type":18,"tag":19,"props":238,"children":239},{},[240],{"type":23,"value":241},"また、PMはクビになりました。わざわざPMエージェントを立ち上げて相談するほどのタスクもなさそうなので、秘書が担ってくれます。",{"type":18,"tag":57,"props":243,"children":245},{"id":244},"スタッフへの依頼",[246],{"type":23,"value":244},{"type":18,"tag":19,"props":248,"children":249},{},[250],{"type":23,"value":251},"早速、note のエクスポートデータ（巨大な XML ファイル）を解析して、記事ごとに分割して Markdown 形式で保存するというタスクを振ってみました。1回きりのタスクだし、自分でスクリプトを書くのも地味に面倒だし、手動ではやりたくない作業です。",{"type":18,"tag":19,"props":253,"children":254},{},[255],{"type":23,"value":256},"処理内容としては、実際にファイル操作をしているというよりは、Python スクリプトを作って、実行して、作ったスクリプトを削除して実現しているようでした。",{"type":18,"tag":19,"props":258,"children":259},{},[260],{"type":23,"value":261},"とはいえ、自然言語でサクッと依頼できるし、スクリプトの検証とかも不要なので色んな場面で活用できそうな気はします。",{"type":18,"tag":57,"props":263,"children":265},{"id":264},"運用方法",[266],{"type":23,"value":264},{"type":18,"tag":19,"props":268,"children":269},{},[270],{"type":23,"value":271},"運用方法はこれまでと変わらず、毎朝の紙にジャーナリングした内容を inbox 内の Markdown ファイルに記載して、Gemini CLI を立ち上げて整理を依頼する流れです。",{"type":18,"tag":19,"props":273,"children":274},{},[275,277,283],{"type":23,"value":276},"その際、サブエージェントに任せられそうなタスクは提案してくれるので、必要に応じて ",{"type":18,"tag":108,"props":278,"children":280},{"className":279},[],[281],{"type":23,"value":282},"@agent",{"type":23,"value":284}," の形で別途依頼をしていく流れになります。",{"type":18,"tag":286,"props":287,"children":288},"hr",{},[],{"type":18,"tag":19,"props":290,"children":291},{},[292],{"type":23,"value":293},"日々いろんなサービスが切磋琢磨して機能追加しているので、ぶっちゃけどこに課金すべきか分からなくなってきましたね。",{"type":18,"tag":19,"props":295,"children":296},{},[297],{"type":23,"value":298},"個人的にはGoogle系サービス使うことが多いのでGeminiには頑張ってもらいたいところ。",{"type":18,"tag":19,"props":300,"children":301},{},[302],{"type":23,"value":303},"とはいえ、無料で使える範囲は使い倒したいと思うので、しばらくは Gemini CLI のチューニングでどこまでいけるか頑張ってみたいと思います。",{"title":7,"searchDepth":305,"depth":305,"links":306},2,[307,308,309,310],{"id":59,"depth":305,"text":59},{"id":99,"depth":305,"text":99},{"id":244,"depth":305,"text":244},{"id":264,"depth":305,"text":264},"markdown","content:article:260422:gemini-cli-sub-agents.md","content","article/260422/gemini-cli-sub-agents.md","article/260422/gemini-cli-sub-agents","md",1776847642283]