2026/04/28 追記: プレミアムリクエスト制が廃止されることで、とにかくsubagentに分割する戦略はコストがかさむだけの可能性があります。バランスを取る必要があるでしょう。
2026/05/01 追記: あといつの間にやらweekly limitが近づくと警告が出るようになってます。トークン使用量に配慮して使う必要がありますね。

いい加減、少しは使いこなさないといけないと思い、GitHub Copilot Chatで使うAgentSkillやらCustomAgentやらを書いている。
TL;DR
- GitHub Copilot ChatではSubAgentに作業をやらせましょう
chat.customAgentInSubagent.enabledを有効にすると、SubAgentを動かすときに過去の履歴を渡さなくなる- これに加えて
agent/runSubAgentを使えば SubAgentに先入観無しで作業させられる(検証作業向き、コンテキストトークンの節約) - 2026/02/20時点では、GitHub CopilotのPremium Requestにカウントされないのでお得(ただ、これは対策されるんじゃないかという気がする)
- SubAgentから
agent/runSubAgentは呼び出せない(SubAgentのネストはできない)ので、深さが1階層だけのワークフローしか組めなさそう
前提として、以下のVSCodeの設定例(試験機能なので明示的な有効化が必要)。
{ "chat.customAgentInSubagent.enabled": true, "chat.useAgentSkills": true, }
背景
Skillは、書いたはいいけど使ってくれないことがよくあった。GitHub Copilot ChatのSkillの仕組みとしては、単純に指示にnameとdescriptionを含めているだけなので、ここをタスクに応じて適切に引っかかるよう、良いものにする必要がある。
でも結局使うかどうかはLLMの匙加減次第なので、「指定したタスクでちゃんと使ってくれるの?」という不安をどうにかしたいと考えた。
そこで以下の指示を考えた。
「(スキルを使わせるようなタスク指示)」という内容をsubagentに対して指示して、(スキル名)を使って作業しているかどうかを検証してもらえますか? subagentには自発的に(スキル名)を使わせたいので、指示には含めないでください。 subagentには最後に使ったスキルを報告させてください。 報告で(スキル名)を使っているか確認し、使っていなければ(スキル名)のdescriptionを改善してください。ただし、文言を大量に足して引っ掛かりやすくするアプローチはしないでください。 これを5回繰り返して報告してください。
chat.customAgentInSubagent.enabled を有効にしておくと、これがうまくいく。(無効のままだと、過去の履歴で先入観(?)が入ってしまい、意図せずSkillを使ってしまう。)
上記の指示を2回に分けて行っていたので内容は一致しない。表には出せないスキル名などを伏せているが、動作の雰囲気はこんな感じ。reviewerがSubAgentとして別枠で作業している感じになっている(呼び元のAgentはSubAgentの中のことは指示と結果しか見えていない)。

これで、SubAgentの結果を受けてdescriptionを少し書き換えながら繰り返してくれる。
これができると、あとはモデルを変えながら「モデルを変えたので再度10回繰り返してください」と指示すれば実行してくれるので、追試もできる。(破壊的な操作を伴わないようにする指示をする必要があるけど。)
日本語がうまい人ならもっと一般化できると思うので、こういうこともあるという話。
…ちなみにSkillを使わせるには、単純に最近の賢いモデル(GPT-5.3-Codex, Gemini Pro 3.1, Claude 系4.5以降)を使うだけでだいぶ改善することが分かった。
発展
こういう感じで、検証系はSubAgentに任せるのがよいというのは、なんとなく感じている。今の仕様であれば、1 Premium Request内で時間を代償に品質を上げられる雰囲気を感じる。
そしてAgentに役割を与えて分割統治させる使い方ができるのではないかと思い、試している。サブエージェント内でサブエージェントに指示を出すこともできる。
例えば、実装後にコードレビューAgent、セキュリティレビューAgent、テストレビューAgentにチェックしてもらい、指摘がなくなるまで実装を直させるというような実装Agentを作るなどといった方法が考えられる。
ただ、実装Agentと直接やりとりさせてしまうと、スコープを絞ってレビューしてもらうようになってしまったので、それを監督するAgentにフローを回させる方がよさそう。だけど、現状はSubAgentからSubAgentを呼び出せないので複雑なフローだと厳しそうだなぁ、という感じで、今はちょっと試行錯誤している。
今までCustom Agentなどはただのおままごとではと思っていたが、モデルは賢くなっても扱えるコンテキストトークンは全然増えないし、相変わらず複数のタスクを詰め込むと精度が落ちるので、結局Agentで役割を分けてコンテキストトークンを少なくし(与える文脈を減らし)、1つのタスクに専念してもらうしかないのかなと思い始めている。(現状のLLMの限界に対するアプローチとしてCustom AgentやらSkillが出ているということに気づくのが遅すぎた。)
おわり
もう誰かがやっているとは思うけど、Claude Codeでごり押ししているのか、Custom Agentだけでエージェントループを回す試みのようなものは、あまり見かけなかったので書いてみた。
LangGraphなりMicrosoft Agent Frameworkなりでコードでエージェントループを作れる感触はあるのだけど、コードで書く時点で凝り固まるというかボトルネックになるのではないかという気がしていて、だったらもうClaude Codeとかの既製のエージェントループを回す仕組みに操作(tools)と決めたフロー(Agent群)を与えて、自律的に動いてくれたら楽なのになあ、という思いが少しあって今ちょっとやっている感じ。
(蛇足だが、LangGraph系のプロダクトであるLangChainは各バックエンド実装で振る舞いが違いすぎて気持ち悪くて使いたくない。そういうブラックボックスを挟むより、AIにアダプタパターンである程度抽象化しつつも、オリジナル実装をフルに使えばよいのではないかという気持ちがある。)
生成AIの時代になり、自然言語(日本語)がより必要になると感じている。考えも浅い、言語化もできない、入力も理解も出力も遅い自分には辛い時代になりそう。