「最新モデルの最強補完」は終わってる――VS Codeが「コーディングハーネス」に最も開発工数を注ぐ意味:「エージェントループ」がどう回るかを図解
Microsoftは、VS Codeの「GitHub Copilot」を支える「コーディングハーネス」の構造と評価手法を公式ブログで解説した。モデル選定よりも、コンテキスト構築やツール公開、エージェントループの設計こそがエージェント体験の品質を決めるとしている。
Microsoftは2026年5月15日(米国時間)、「Visual Studio Code」(以下、VS Code)の「GitHub Copilot」を支える「コーディングハーネス」の構造と評価手法を公式ブログで解説した。
新しいモデルが登場するたびに「どのモデルが最も賢いか」「どれが最速か」という議論が繰り返される。しかし、VS Codeのようなプロダクトにとってモデルはエージェント体験のごく一部に過ぎず、開発者が触れているのは「コーディングハーネス」だと説明している。
コーディングハーネスとは何か? 3つの主な役割
言語モデルそのものはファイルを編集したり、コマンドを実行したり、テストを走らせたりすることはできない。テキストを生成するだけだ。コーディングハーネスは、コードエディタと言語モデルの橋渡しをするシステムであり、モデルの出力をアクションに変え、その結果を再びモデルにフィードバックする役割を担う。
VS Codeのコーディングハーネスには、主に3つの役割がある。
コンテキスト構築
モデルにリクエストを送る前に、ハーネスがプロンプトを構築する。プロンプトには、動作指示を含むシステムメッセージ、ユーザーのクエリ、ワークスペース構造(言語、フレームワーク、開いているエディタ)、過去の会話履歴、ツール実行結果、カスタムインストラクション、過去セッションのメモリなどが含まれる。モデルに何を見せるかを決定するのはハーネスであり、その判断は出力品質に直接影響する。
ツール公開
ハーネスは、モデルが呼び出せるツールを定義する。例えば、ファイル読み込み「read_file」、コード編集「replace_string_in_file」や「apply_patch」、ターミナルコマンド実行「run_in_terminal」、コードベース検索「semantic_search」などだ。各ツールはモデルが従うべきJSON(JavaScriptオブジェクト記法)スキーマと、いつ呼び出すかを判断するための説明が付与される。
利用可能なツールセットはリクエストごとに変化する場合がある。特定モデル専用のツールもあれば、実行前にユーザー確認が必要なツールもある。ユーザーはツールピッカーでツールのオン/オフを切り替えることができ、MCP(Model Context Protocol)サーバや拡張機能は同じループに組み込める新たなツールを提供できる。カスタムエージェント(.agent.md)では、利用ツールを特定のサブセットに限定することもできる。
ツール実行
モデルがツール実行を要求すると、ハーネスは引数を検証し、ツールを実行し、エラーを処理し、結果をフォーマットして次のイテレーションに渡す。モデルがファイル編集を要求すれば、ハーネスがdiff(差分)を書き込む。シェルコマンドの実行を要求すれば、ハーネスがプロセスを起動し、出力をキャプチャーして中継する。
これらの処理はいずれも言語モデル単体では実現できない。しかし、これらの入力こそがモデルの挙動とコードエディタ上の体験を決定付ける。これらのタスクを調整し、いつ反復を続けるか、止めるかを決め、多ラウンドにわたる会話の一貫性を保つロジックが「エージェントループ」だ。
エージェントループの仕組み
VS Codeでエージェントを使うと、内部では「思考」→「行動」→「観察」→「再思考」のツール呼び出しループが回る。
各イテレーションで、エージェントハーネスはプロンプト(システム指示+コンテキスト+履歴+それまでのツール結果全て)を組み立て、モデルに送り、応答を確認する。応答にツール呼び出しが含まれていれば、ハーネスがそれらを実行し、結果を取り込んでループに戻る。ツール呼び出しがなければループは終了し、アシスタントのテキストが最終応答となる。
「ターン」とはユーザーから見えるチャット交換のことで、ユーザーがメッセージを送るとエージェントが最終的に応答を返す単位を指す。
ラウンドとは、エージェントループを1回通過する処理単位であり、プロンプト構築やモデル呼び出し、テキスト/ツール呼び出しの受信ツール実行、結果記録、継続判定を含む。
これら全ラウンドを含む一連の処理が「ループ実行(run)」だ。
1回のターンでも、モデルがファイル検索やコード読み取り、ファイル編集、テスト実行、出力確認、失敗時の再試行を繰り返すことで、多数のラウンドが発生する場合がある。
ツール呼び出しループは、ループ制御チェックによって制限されている。VS Codeでは、ツール呼び出し回数制限を適用し、各ラウンド間でキャンセル要求を確認し、さらに「停止フック(stop hook)」を実行する。
停止フックはエージェント状態を検査し、「ここで終了可能か」あるいは「さらに作業を継続すべきか」を判定する。
ループ内部では、イテレーションごとにプロンプトが再構築される。つまり、モデルは常に最新のワークスペース状態を参照する。例えば、3ラウンド前にファイルを編集していた場合でも、現在のプロンプトにはその編集結果が反映される。
ハーネスは会話要約も管理する。会話履歴が大きくなり過ぎた場合、過去ラウンドを要約へ圧縮し、コンテキストウィンドウ上限に到達せずにモデルが作業を継続できるようにする。
ハーネスこそが開発環境
VS Code上のGitHub Copilotは拡大し続けるモデルエコシステムをサポートしている。開発者はモデルを切り替えたり、自動選択を使ったり、自分のAPIキーを持ち込んだり、拡張機能経由で追加プロバイダーをインストールしたりできる。そのためVS Codeは、単一の安定したAPIではなく、広範かつ継続的に変化するエコシステムに対応しなければならない。
ハーネスは、開発者がモデルを切り替えたり、新しいプロバイダーを試したりしても、毎回製品の使い方を学び直さなくて済むようにする役割を果たしている。チャット、セッション、ツール、ターミナル出力、デバッグ、ソースコード管理といった体験は維持されるべきだという。
しかし、新しいモデルを統合することは、単にモデル選択メニューに項目を追加するだけでは済まない。プロバイダーごとに、ツール呼び出しや構造化出力、推論制御、プロンプトキャッシュ、コンテキスト長制限、エラー挙動などの実装方法が異なる。長期的な計画立案が得意なモデルもあれば、簡潔なコード編集に優れるモデルもある。
それぞれのモデルには異なる特性があり、VS Codeチームは各リリース前にモデルプロバイダーと密接に協力しながら、システムプロンプト、ツール説明、ループ挙動を調整している。プロバイダーは一般公開前のモデルチェックポイントへの早期アクセスを提供することが多く、VS Code側は正式リリース前からハーネスの最適化を開始できる。
評価によってハーネスの信頼性が保たれる
新機能の出荷前にテストするのと同じで、モデルにもテストが必要だ。そこで登場するのがモデル評価だ。Microsoftはモデルが製品に投入される前に、複数の角度から評価する。
オフラインベンチマークを走らせ、社内テストし、既存モデルと比較する。モデルが実稼働した後も計測を続ける。A/Bテストや集計利用シグナル、週次レポートが、モデルが実開発者ワークフローでどう振る舞うかの理解を助ける。
複数の公開モデルベンチマークが存在し、共通の参照点として有用だ。Microsoftはこれらを使ってより広いモデルエコシステムと比較し、明らかなリグレッション(回帰、退行)を検出している。
Microsoftは、VS Codeエージェントの挙動を評価するためのオフライン評価スイート「VSC-Bench」を構築した。VSC-Benchは、公開ベンチマークでは十分にカバーされていないVS Code固有の開発者タスクに焦点を当てている。
VSC-Benchでは、解決率やエージェントの作業量、トークン効率、レイテンシといった観点からモデルの挙動を測定する。そのモデルがVS Code内で開発者が期待する体験に対応できる準備が整っているかどうかを示す。
ハーネスはAIコーディング体験の中核
モデルは重要だが、それだけでは十分とは言えない。モデルが認識するコンテキスト、利用できるツール、動作を継続させるループ、それら全てが正しく機能することを保証する評価が重要だ。これらがハーネスであり、VS Codeが最も多くの開発工数を投入している部分だ。
モデルが、より長いコンテキスト処理能力、高度な計画立案、ネイティブなツール利用といった新たな能力を獲得するにつれて、ハーネスもそれらを活用できるように進化する。VS Codeの各リリースでは、モデル更新とともにハーネスの改善も提供される。
ハーネスの仕組みに興味がある場合は、VS Codeのソースコードを確認し、チャット内の「Tools UI」で利用可能ツールを見て、「Chat Debug View」でエージェント実行の裏側にあるプロンプトやツール呼び出し、結果を検査するとよい。モデルの切り替えや独自ツールの追加、フィードバックの共有はGitHubリポジトリで可能だ。
Copyright © ITmedia, Inc. All Rights Reserved.
関連記事
AIコーディングの「ループ」4種類を完全入門 Anthropic公式が分かりやすく整理して解説
Anthropicが、Claude Codeにおける「ループ」を4種類に整理して解説した。AIコーディングで何をAIに任せ、どこで止めるべきかを、初心者にも分かるようにかみ砕き、筆者なりの視点も添えて紹介する。
ソフトウェアエンジニアの仕事は「ループを書くこと」になる 内側ループと外側ループ(ハーネス)入門
AIコーディングにおける「ループ」には、エージェントが回す内側ループと、ハーネスが回す外側ループの2種類がある。両者の違いと外側ループがもたらす課題を、アルミン・ロナッハー氏の記事に沿って初心者向けに解説し、その「記憶」の扱いについての筆者の考えも添える。
ループエンジニアリングとは? チャットとAIコーディングの往復から卒業する新しい開発スタイル
AI開発で人間がプロンプトを書く時代は終わるのか。ループを回してAIエージェントを動かし続ける新概念「ループエンジニアリング」の基本を、提唱者の記事に沿って解説。チャットAIとAIコーディングの往復から卒業したい筆者の考えも示す。
「CやJavaはAIが苦手な言語」 Claude Codeを大規模レガシーコードで生かす3つの成功パターンとハーネス
Anthropicは公式ブログで、エージェント型コーディングツール「Claude Code」を大規模なコードベースに導入した事例の調査、分析を基に、成功事例に共通するベストプラクティスを紹介した。
「ハーネス」って結局、何? みんな使い方が違うAIエージェント用語をHugging Faceが整理
AIエージェント分野で人によって意味が揺れる「ハーネス」「スキャフォールド」などの用語を、Hugging Faceが整理した。AIエージェントを正しく理解し議論するために押さえておきたい基本用語を初心者向けに解説する。



