tech#github-copilot#copilot-cli#agent-harness#loop-engineering#multi-agent

GitHub Copilot の Local・Copilot・Cloud の使い分けと検証エージェント設計

公開 👁 —
GitHub Copilot の Local・Copilot・Cloud の使い分けと検証エージェント設計

GitHub Copilot(以下、Copilot)を使い続けていると、ある時から「書いてもらうこと」より「書かれた内容が妥当か確認すること」の方が重くなってきます。

最近の LLM は、変更できる範囲も、一度に扱える情報量も増えました。その結果、人が Copilot Chat の回答、変更差分、テスト結果を毎回すべて読み直す運用では、AI が速くなるほど確認する側が忙しくなります。

そこで重要になるのが、モデルを選ぶことだけではなく、どの Agent Harness(エージェントハーネス)で動かし、誰に実装させ、誰に検証させるかを設計することです。

この記事では、Visual Studio Code(以下、VS Code)の Session Target にある Local、Copilot、Cloud の違いを整理します。その上で、VS Code 内で対話しながら進める場合と、Copilot CLI(以下、CLI)を使って独立した検証エージェントに任せる場合の、チェックの進め方を比較します。

目次

先に結論

Local、Copilot、Cloud は、単純な「ローカルかクラウドか」の 3 択ではありません。

そして、チェック疲れを減らす本質は、VS Code から CLI へ操作画面を変えることではありません。

実装から人の判断までを独立したレビューと自動検証でつなぐ流れ実装エージェントが変更差分と要求をレビューエージェントへ渡し、レビューエージェントが自動検証を実行する。自動検証の結果は要約され、重要な指摘、実行証拠、未確認事項だけが人へ渡される実装と検証を分け、人には判断材料だけを返す1実装エージェント要求に沿って変更する対象テストを実行する2独立レビュー要求と差分だけを読む問題と根拠を示す3自動検証Build・Test・Lintセキュリティスキャン4人の判断重要な指摘と証拠を確認未確認事項を判断する人が読む対象:重要な指摘・実行証拠・未確認事項実装から人の判断までを独立したレビューと自動検証でつなぐ流れ実装エージェント、独立レビュー、自動検証、人の判断の順に処理し、判断に必要な情報だけを人へ渡す1実装エージェント要求に沿って変更する対象テストを実行する2独立レビュー要求と差分だけを読む問題と根拠を示す3自動検証Build・Test・Lintセキュリティスキャン4人の判断重要な指摘と証拠を確認未確認事項を判断する必要な判断材料だけを受け取る
実装者から人へ全量を直接渡さず、独立レビューと自動検証を通して、判断に必要な情報へ絞り込みます。

つまり、会話の中で同じエージェントへ「もう一度チェックして」と頼む状態から、独立したコンテキストと観測可能な完了条件を持つ検証工程へ移すことが重要です。

Local・Copilot・Cloud は同じ軸の名前ではない

VS Code の公式ドキュメントでは、Agent Harness はツール呼び出し、コンテキスト、コード変更など、エージェントセッションを調整する仕組みと説明されています。

VS Code のハーネス選択ガイドでは、Session Target を次のように整理しています。

Session Target主な実行場所コードを扱う場所向いている仕事
Local開発 PC 上の VS Code Extension Host現在のワークスペースVS Code 組み込みツール、拡張機能のツール、VS Code に設定したモデルが必要な対話
Copilot開発 PC 上の Agent Host現在のフォルダー、または Git worktree一般的な開発、バックグラウンドセッション、Copilot 固有機能
Cloudプロバイダーのリモート基盤GitHub リポジトリと Pull Requestローカルの Editor Context を必要としない、独立した委任

ここで紛らわしいのは、Local だけがローカル実行という意味ではないことです。Copilot、Claude、Codex も開発 PC 上で動かせます。Local は実行場所の総称ではなく、VS Code 組み込みハーネスの名前です。

また、ツールの実行場所と LLM のホスティング先は別です。開発 PC 上のファイルを読み、ローカルのターミナルでテストを実行していても、推論リクエストはホストされたモデルへ送られる場合があります。Local を選んだだけでモデル処理までローカルになるわけではありません。

Local と Copilot はどちらも開発 PC 上で動く

Local と Copilot の違いは、場所よりも実行基盤とセッションの性格にあります。

VS Code Agent Host の公式説明によると、Agent Host はエージェントを Extension Host から分離した専用プロセスです。複数のクライアントから同じセッションを扱うこと、Editor が接続されていない間も処理を続けること、複数の Agent Runtime を共通のセッションとして扱うことを目的としています。

観点LocalCopilot
エージェントの実行基盤Extension HostAgent Host
主な作業場所現在のワークスペース現在のフォルダー、または分離した worktree
VS Code 拡張ツール密接に利用しやすい接続中の VS Code から提供されるツールを利用できる場合がある
変更の扱い保留された編集を Keep / Undo する従来型フォルダーまたは worktree へ直接反映し、差分をレビューする
セッションEditor 内の対話に向くバックグラウンド、複数チャット、共有セッションに向く

どちらが上位という関係ではありません。VS Code の診断、ブラウザー、拡張機能固有のツールを使いながら一緒に考えたいなら Local が適しています。実装や検証を独立したセッションへ分け、必要なら worktree で変更を隔離したいなら Copilot が扱いやすくなります。

VS Code 内の対話は人が確認に加わりやすい

VS Code 内の Copilot Chat では、人と AI が一つの文脈を共有しながら進められます。

たとえば、画面を見て「この余白は少し広い」「この表現は自分らしくない」と返し、その場で修正してもらう流れです。正解を先に決めにくい UI、文章、設計の探索では、この近さが大きな利点です。

一方で、同じ会話の中で実装とレビューを繰り返すと、次の問題が起きます。

これは VS Code 内の Copilot Chat が弱いという話ではありません。発見のための会話と、反証するためのレビューでは、必要なコンテキストが違うという話です。

VS Code 内の対話は、次のようなチェックに向いています。

ここでは人が Human-in-the-loop として深く参加します。チェック結果は合否だけではなく、次に何を作るかを決める材料にもなります。

CLI ではチェックを独立した仕事にしやすい

CLI の強みは、ターミナル表示そのものではありません。検証を再実行可能なコマンドと、独立したエージェントの仕事として切り出しやすいことです。

GitHub の公式ドキュメントでは、CLI から /review で変更をレビューでき、対象パスや追加の観点を指定できると説明されています。

また、CLI のカスタムエージェントは、一時的な SubAgent として実行され、メインエージェントとは別の Context Window を持ちます。大きな作業の一部を別コンテキストへ移し、メインエージェントは計画と調整へ集中できます。

この性質は、チェック役と相性が良いです。

メインセッション
  ├─ 実装エージェント:要求を実装する
  ├─ レビューエージェント:要求と差分だけを読む
  └─ 検証エージェント:決められたコマンドを実行し、失敗原因を要約する

CLI では、カスタムエージェントを .github/agents/*.agent.md または ~/.copilot/agents/*.agent.md として定義できます。明示的にエージェントを指定するだけでなく、説明に合う仕事を Copilot が推論して SubAgent へ委任することもできます。

ただし、CLI を使えば回答が自動的に正しくなるわけではありません。同じ曖昧な要求を渡せば、チェック結果も曖昧になります。CLI で改善できるのは、誰が、何を入力として、どの証拠を使い、何を出力するかを固定しやすい点です。

チェックエージェントを作るだけでは足りない

レビューエージェントへ「内容が妥当かチェックして」とだけ頼むと、もっともらしい感想が返ってくるだけになりがちです。

チェック役には、少なくとも次を定義します。

定義するもの例
入力要求、変更差分、対象ファイル、既存テスト
観点要求との一致、回帰、セキュリティ、テスト不足、根拠のない主張
証拠ファイル位置、実行コマンド、終了コード、再現手順、公式資料
出力重要度順の指摘、確認済み事項、未確認事項
禁止事項指摘なしでコードを変更しない、推測を事実として書かない
停止条件対象チェック成功、試行上限到達、人の判断が必要

特に重要なのは、LLM のレビューと実行可能な検証を分けることです。

LLM に「テストが通りそうか」を推測させるのではなく、テストを実行させます。テストが通ったことだけで要件を満たしたと判断せず、別のレビューエージェントに要件との対応を確認させます。

実装と検証を分ける最小構成

最初から多数のエージェントを並列実行する必要はありません。まずは実装役とレビュー役を分けるだけでも効果があります。

1. 人が目的、外せない条件、完了条件を決める
2. 実装エージェントが変更し、対象テストを実行する
3. 独立したレビューエージェントへ要求と差分を渡す
4. レビュー結果に基づいて実装エージェントが修正する
5. 検証コマンドを再実行する
6. 人は重要な指摘、証拠、残余リスクを確認する

レビュー役には、実装中の長い会話をそのまま渡さない方が効果的です。必要なのは、なぜその実装を選んだかという自己説明より、要求、制約、実際の差分、テスト結果です。

CLI でカスタムエージェントを明示する場合は、たとえば次のように呼び出せます。

copilot --agent change-reviewer --prompt "Issue の要求と現在の差分を照合し、重大度順に指摘して。コードは変更せず、各指摘に証拠を付けて"

複数の独立した作業を並行化できる場合、CLI には SubAgent へ仕事を分ける /fleet もあります。ただし、同じファイルを変更する仕事や、判断が互いに依存する仕事を無理に並列化すると、統合コストが増えます。

最初は、次の 3 役で十分です。

役割責任
Implementer要求を実装し、対象チェックを通す
Reviewer要求と差分を独立して照合し、問題だけを報告する
Human目的、境界、例外、公開を判断する

ビルドやテストの出力が大きい場合だけ、結果を要約する Validator を追加します。

マルチエージェント化する判断基準

エージェントの数を増やせば、品質が比例して上がるわけではありません。分離する価値があるのは、役割によって必要なコンテキスト、ツール、評価基準が違う場合です。

状況選びやすい方法
方向性や好みを会話しながら決めたいLocal で Human-in-the-loop
VS Code や拡張機能のツールが必要Local
実装とレビューの先入観を分けたいCopilot ハーネスまたは CLI の独立セッション/SubAgent
テスト、Lint、差分レビューを繰り返したいCLI または Copilot のバックグラウンドセッション
変更を現在の作業から隔離したいCopilot の Git worktree
Issue から独立して実装し、PR で受け取りたいCloud

GitHub Copilot Cloud Agent の公式説明によると、Cloud Agent は GitHub Actions ベースの一時的な開発環境で、リポジトリの調査、変更、テストを行います。GitHub 上で処理が進むため、開発 PC を起動し続ける必要はありません。出発前にタスクを委任し、移動中に作業を任せ、到着後に結果を確認する使い方もできます。

ただし、ローカルの未コミット変更、開発 PC にしかないファイルやサービス、対話中の画面が必要なタスクには向きません。Issue とリポジトリだけで完結し、チームが PR でレビューできるタスクなら、人の作業から切り離して進められます。

人が確認する量をどう減らすか

人の確認をゼロにすることが目標ではありません。人が読む対象を、生成物の全量から意思決定に必要な差分へ変えることが目標です。

レビューエージェントの最終出力を、次の形に固定すると確認しやすくなります。

判定: pass / pass with risks / fail

重要な指摘:
- 重大度、場所、問題、根拠、修正案

実行証拠:
- 実行したコマンドと結果

未確認事項:
- 実行環境がなく確認できなかったこと

人の判断が必要:
- UX、費用、公開、破壊的変更など

ここまで整えると、人は数百行のログを読む代わりに、失敗したチェックと判断が必要な点へ集中できます。

以前の記事「Human-in-the-loop と Loop Engineering を組み合わせる Memolog の AI 開発」では、人と AI が正解を発見する外側のループと、AI が実装と検証を繰り返す内側のループを整理しました。

今回のハーネス選択と検証エージェントの分離は、その内側のループを具体的に設計する方法です。

この境界を設計することが、Human-in-the-loop から Human-on-the-loop、さらにマルチエージェントへ踏み出すときの土台になります。

まとめ

Local、Copilot、Cloud の違いは、単なる画面や実行場所の違いではありません。どのハーネスがセッションを調整し、どこでツールを動かし、どのように変更を分離するかの違いです。

LLM が賢くなるほど、人がすべての出力を細かく追い続ける方法は苦しくなります。次に必要なのは、さらに注意深く読むことだけではありません。

AI が検証できる仕組みを作り、その証拠と例外を人が判断することです。モデルへの指示から、エージェントが働くハーネスとループの設計へ視点を移すと、Copilot は「確認するものを増やす相手」から「確認可能な仕事を分担するチーム」へ変わります。