AI のコンテキストを管理する
適切なコンテキストを提供することで、VS CodeのAIからより関連性の高く正確な応答を得ることができます。この記事では、チャットでコンテキストを管理する方法について説明します。これには、#-メンションを使用してファイル、フォルダー、シンボルを参照する方法、Webコンテンツを参照する方法、またはカスタム指示を使用してAIの応答をガイドする方法が含まれます。
コンテキストとは何か、またVS Codeがそれをどのように組み立てるかについての背景情報については、コンテキストの概念を参照してください。
#メンション
プロンプトに明示的にコンテキストを追加するには、#に続けてメンションしたいコンテキスト項目を入力します。VS Codeは、ファイル、フォルダー、コードシンボル、ツール、ターミナル出力、ソース管理の変更など、さまざまな種類のコンテキスト項目をサポートしています。
チャット入力フィールドに#記号を入力すると、利用可能なコンテキスト項目の一覧が表示されます。または、チャットビューでコンテキストの追加を選択してコンテキストピッカーを開きます。

サポートされているコンテキスト項目の全リストを表示します。
ファイルをコンテキストとして追加する
デフォルトでは、VS Codeはワークスペースインデックスを使用して、会話に基づいて関連ファイルを自動的にコンテキストとして含めます。ただし、#-メンションまたはコンテキストピッカーを使用して、特定のファイル、フォルダー、またはシンボルを明示的にコンテキストとして追加することもできます。これは、質問が曖昧で、コーディングプラクティスに関する一般的な質問と見なされる可能性があり、AIが応答でコードベースの特定の箇所を考慮するようにしたい場合に役立ちます。
特定のファイル、フォルダー、またはシンボルをコンテキストとして提供するには、以下の方法でチャットに追加します。
-
チャットメッセージでファイル、フォルダー、またはシンボルを#-メンションするには、
#に続けてファイル、フォルダー、またはシンボルの名前を入力します。シンボルを参照するには、まずそのシンボルを含むファイルをエディターで開いていることを確認してください。 -
エクスプローラービュー、検索ビュー、またはエディタータブからチャットビューにファイルやフォルダーをドラッグアンドドロップして、コンテキストとして追加します。
-
チャットビューでコンテキストの追加を選択し、クイックピックからファイルとフォルダーまたはシンボルを選択します。
コードベース全体をコンテキストとして使用したいことをAIに明示的に伝えるには、#codebaseをプロンプトに追加できます。
Webからのコンテンツを参照する
チャットプロンプトでWebからのコンテンツを参照できます。例えば、最新のAPIリファレンスやコード例を取得する場合などです。
プロンプトに直接URLを含めてそのWebページから情報を取得することも、#fetchツールを使用してWebからコンテンツを取得したいことを示すこともできます。例:
「最新のVS Codeリリースでのハイライトは何ですか #fetch」「asp.netアプリを.net 9に更新してください #fetch https://learn.microsoft.com/en-us/aspnet/core/migration/80-90」
VS Codeは、パフォーマンスを向上させるため、Webページの内容を一定期間キャッシュします。ページの内容が変更された場合、VS Codeを再起動することで強制的に更新できます。ページに到達できない場合、キャッシュは短時間(約5分)で期限切れになります。
VS Codeは、プライバシーとセキュリティを保護するため、外部URLにアクセスする前に確認を求めます。URLの自動承認の構成について詳しくはこちらをご覧ください。
チャットでのツールの追加と使用について詳しくはこちらをご覧ください。
@メンション
チャット参加者は、チャットでドメイン固有の質問をすることを可能にする専門アシスタントです。チャット参加者を、チャットリクエストを渡し、残りの処理を行ってくれるドメインエキスパートと考えてください。
チャット参加者は、エージェントフローの一部として呼び出され、特定のタスクに貢献し実行するツールとは異なります。
チャット参加者を呼び出すには、@-メンションします。@に続けて参加者名を入力します。VS Codeには、@vscodeや@terminalのような組み込みのチャット参加者があります。これらはそれぞれのドメインに関する質問に答えるように最適化されています。
以下の例は、チャットプロンプトで@-メンションを使用する方法を示しています。
「@vscode 改行を有効にする方法」「@terminal 現在のディレクトリで最大の5つのファイルは何ですか」
チャット入力フィールドに@を入力すると、利用可能なチャット参加者の一覧が表示されます。
拡張機能は、独自のチャット参加者を提供することもできます。
ビジョン (プレビュー)
チャットはビジョン機能をサポートしており、画像をコンテキストとしてチャットプロンプトに添付し、それについて質問することができます。例えば、コードブロックのスクリーンショットを添付して説明を求めたり、UIのスケッチを添付してエージェントに実装を依頼したりできます。
Webブラウザから画像をチャットビューにドラッグアンドドロップして、コンテキストとして追加できます。
ブラウザコンテキストの追加 (実験的)
VS Codeには、Webアプリケーションのクイックテストやデバッグなど、VS Code内でWebページをプレビューしたり操作したりできる組み込みの統合ブラウザがあります。
ブラウザツールバーには、チャットに追加という分割ボタンがあり、現在表示しているページからさまざまな種類のコンテキストをチャットプロンプトに添付できるアクションが含まれています。
- 要素をチャットに追加: ページからHTML要素を選択してコンテキストとして追加します。CSSスタイルやスクリーンショットも含まれます。
- スクリーンショットをチャットに追加: 現在のブラウザビューポートのスクリーンショットをキャプチャし、画像として添付します。
- コンソールログをチャットに追加: ページからのコンソール出力をキャプチャし、コンテキストとして添付します。これはランタイムエラーのデバッグに役立ちます。
統合ブラウザから要素をチャットプロンプトに追加するには
-
Webアプリケーションを開始します。
-
コマンドパレットからブラウザ: 統合ブラウザを開くコマンドを実行して、統合ブラウザを開きます。
-
操作したいWebページのURLを入力します。
-
要素をチャットに追加ボタンを選択します。これで、Webページの要素にカーソルを合わせ、選択してチャットプロンプトにコンテキストとして追加できます。
要素を追加する際に含める情報を設定できます
- CSSを添付: chat.sendElementsToChat.attachCSS 設定
- 画像を添付: chat.sendElementsToChat.attachImages 設定
ブラウザからチャットへのアクションについて詳しくはこちらをご覧ください。
ブラウザページとのインタラクション
エージェント向けブラウザツールは現在実験段階です。
エージェントは、組み込みのブラウザツールを使用して、統合ブラウザのページを直接読み取り、操作できます。これにより、エージェントは外部MCPサーバーを必要とせずに、URLに移動したり、ページコンテンツやコンソールエラーを読み取ったり、スクリーンショットを撮ったり、要素をクリックしたり、テキストを入力したりすることができます。
ブラウザツールを有効にするには、 workbench.browser.enableChatTools この設定は組織レベルで管理されています。変更するには管理者にお問い合わせください。 設定をtrueに設定します。
開いているブラウザページをエージェントと共有することもできます。ブラウザツールバーのエージェントと共有ボタンを選択すると、既存のセッションやログイン状態を含め、エージェントにページへのアクセスを許可できます。エージェントは、共有されていないタブを検出したり、必要に応じて共有するように促したりすることもできます。例えば、エージェントが見ることのできないページを参照した場合などです。
例えば、エージェントにWebアプリを開かせ、レイアウトの問題をチェックさせたり、機能が正しく動作するかどうかを確認させたりすることができます。エージェントはブラウザを開き、ページと対話し、その結果を報告します。
エージェント向けブラウザツールについて詳しくはこちらをご覧ください。
コンテキストウィンドウ使用状況の監視
チャット入力ボックスには、モデルのコンテキストウィンドウがどの程度使用されているかを示すコンテキストウィンドウコントロールが表示されます。この視覚的なインジケーターは、チャットの要約が行われる可能性があるタイミングや、新しいセッションを開始すべきタイミングを理解するのに役立ちます。

コンテキストウィンドウコントロールは以下の情報を提供します。
- 視覚的な満杯インジケーター: 陰影付きのバーは、現在使用中のコンテキストウィンドウの割合を示します。
- ホバー時の合計使用量と内訳: コントロールにカーソルを合わせると、利用可能な合計コンテキストに対する正確なトークン数(例: 15K/128K)と、カテゴリごとの使用量の内訳が表示されます。
会話でより多くのリクエストを送信するにつれて、コントロールはコンテキスト使用量の増加を反映するように更新されます。異なるAIモデルは異なるコンテキストウィンドウサイズを持つため、利用可能な合計コンテキスト(分母)は選択したAIモデルに基づいて変化します。
コンテキストウィンドウがいっぱいになると、VS Codeは会話履歴を自動的に圧縮してスペースを解放します。
コンテキストの圧縮
会話が長くなるにつれて、蓄積されたメッセージとコンテキストはモデルのコンテキストウィンドウをいっぱいにする可能性があります。コンテキスト圧縮は会話履歴を要約してスペースを解放するため、重要な詳細を失うことなく同じセッションで作業を続けることができます。圧縮は、後続の各リクエストで送信されるトークン数を削減し、AIクレジットの消費を管理するのにも役立ちます。
自動圧縮
コンテキストウィンドウがいっぱいになると、VS Codeは以前のメッセージを要約することで会話を自動的に圧縮します。これはバックグラウンドで透過的に行われるため、中断することなくチャットを続けることができます。
自動圧縮を無効にするには、 github.copilot.chat.summarizeAgentConversationHistory.enabled をfalseに設定します。
手動圧縮
会話の焦点を変更したり、以前のやり取りからのノイズを減らしたりするために、いつでも手動で圧縮をトリガーすることもできます。手動圧縮は、ローカル、バックグラウンド、およびClaudeエージェントセッションで利用できます。
会話を手動で圧縮するには、以下のいずれかの方法を使用します。
-
チャット入力フィールドに
/compactと入力します。オプションで、コマンドの後にカスタム指示を追加して、要約の生成方法をガイドできます。例えば、/compact focus on the database schema decisionsなどです。 -
チャット入力ボックスのコンテキストウィンドウコントロールを選択し、次に会話を圧縮を選択します。
コンテキストを完全にリセットしたい場合は、新しいチャットセッションを開始します。