AI のコンテキストを管理する
適切なコンテキストを提供することで、VS Code の AI からより関連性の高い正確な応答を得ることができます。この記事では、ファイル、フォルダー、シンボルを参照するための #-メンションの使用方法、Web コンテンツの参照方法、または AI の応答をガイドするためのカスタム指示の使用方法など、チャットでコンテキストを管理する方法について学びます。
暗黙的なコンテキスト
VS Code は、現在のあなたのアクティビティに基づいて、チャットプロンプトにコンテキストを自動的に提供します。次の情報は、チャットのコンテキストに暗黙的に含まれます。
- アクティブなエディターで現在選択されているテキスト。
- アクティブなエディターのファイル名またはノートブック名。
- ask モードまたは edit モードを使用している場合、アクティブなファイルは自動的にコンテキストとして含まれます。
agent モードを使用している場合、エージェントツールはアクティブなファイルをチャットのコンテキストに追加する必要があるかどうかを自動的に判断します。
#-メンション
チャットでは、#
の後にメンションしたいコンテキスト項目を入力することで、コンテキストを明示的に参照できます。これにより、AI はあなたが参照している特定のコンテキストに基づいて、より関連性の高い応答を提供できます。
チャットの入力フィールドに #
記号を入力すると、利用可能なコンテキスト項目のリストが表示されます。
特定のワークスペースのファイル、フォルダー、またはコードシンボルを参照するには、#
の後にファイル名、フォルダー名、またはシンボル名を入力します。チャットでのファイルとフォルダーの参照について詳しく学びましょう。
または、#changes
のように、変更されたファイルの差分を取得したり、#codebase
のように、ワークスペースのコードベース検索を実行したりするなど、利用可能な事前定義されたコンテキスト項目のリストから選択します。
最良の結果を得るために、github.copilot.chat.codesearch.enabled (プレビュー) の設定が有効になっていることを確認してください。
サポートされているコンテキスト項目の完全なリストは、チートシートの チャット変数セクションで確認してください。
プロンプトの例
以下の例は、チャットプロンプトで #-メンションを使用する方法を示しています。
保留中のソース管理の変更を参照する
"#changes を要約して"
"#changes に基づいてリリースノートを生成して"
コードベースを理解する
"#codebase で認証がどのように機能するか説明して"
"データベース接続文字列はどこで設定されていますか? #codebase"
"この #codebase をビルドするにはどうすればいいですか?"
"#getUser はどこで使われていますか? #usages"
コードベースと一貫性のあるコードを生成する
"about ページを作成し、ナビゲーションバーに含めてください #codebase"
"住所情報を更新するための新しい API ルートを追加してください #codebase"
"ログインボタンを追加し、#styles.css に基づいてスタイルを設定してください"
ワークスペースの問題を修正する
"#problems の問題を修正して"
"失敗しているテストを修正して #testFailure"
拡張機能に関する情報を取得する
"このワークスペースで最も人気の #extensions は何ですか?"
Web からのコンテンツを参照する
"React 18 で 'useState' フックを使うにはどうすればいいですか? #fetch https://18.react.dev/reference/react/useState#usage"
"住所情報を取得するための API エンドポイントを構築し、#githubRepo contoso/api-templates のテンプレートを使用してください"
ファイルをコンテキストとして追加する
AI がワークスペース内の関連ファイルやシンボルを自動的に見つけられるようにするには、#codebase
を使用します。特定のファイル、フォルダー、またはシンボルをコンテキストとして提供するには、次の方法でチャットに追加します。
-
チャットメッセージ内でファイル、フォルダー、またはシンボルを #-メンションするには、
#
の後にファイル、フォルダー、またはシンボルの名前を入力します。シンボルを参照するには、まずそのシンボルを含むファイルをエディターで開いていることを確認してください。 -
エクスプローラービュー、検索ビュー、またはエディターのタブからファイルやフォルダーをチャットビューにドラッグアンドドロップして、コンテキストとして追加します。
-
チャットビューの [コンテキストを追加] ボタンを使用し、[ファイルとフォルダー] または [シンボル] を選択します。
可能であれば、ファイルを添付するとファイルの全内容が含まれます。コンテキストウィンドウに収まらないほど大きい場合は、実装なしの関数とその説明を含むファイルのアウトラインが含まれます。アウトラインも大きすぎる場合は、そのファイルはプロンプトの一部にはなりません。
コードベース検索を実行する
個々のファイルを手動で追加する代わりに、VS Code がコードベースから適切なファイルを自動的に見つけるようにできます。これは、どのファイルが質問に関連しているかわからない場合に役立ちます。
プロンプトに #codebase
を追加するか、[コンテキストを追加] > [ツール] > [codebase] を選択して、ワークスペースのコード検索を有効にします。
次のプロンプト例は、コードベース検索の使用方法を示しています。
"#codebase で認証がどのように機能するか説明して"
"データベース接続文字列はどこで設定されていますか? #codebase"
"住所を更新するための新しい API ルートを追加してください #codebase"
最良の結果を得るために、github.copilot.chat.codesearch.enabled (プレビュー) の設定が有効になっていることを確認してください。
Web コンテンツを参照する
最新の API リファレンスやコード例を取得するなど、チャットプロンプトで Web のコンテンツを参照できます。
-
#fetch
: フレームワークの特定のバージョンのドキュメントページなど、特定の Web ページからコンテンツを取得するためにこのツールを使用します。このツールを使用するには、#fetch
に続けて参照したいページの URL を入力します。"VS Code 1.100 のハイライトは何ですか #fetch https://vscode.dokyumento.jp/updates/v1_100"
"asp.net アプリを .net 9 に更新してください #fetch https://learn.microsoft.com/en-us/aspnet/core/migration/80-90"
-
#githubRepo
: GitHub リポジトリ内でコード検索を実行するためにこのツールを使用します。たとえば、別のプロジェクトのコードパターンや例を参照する場合などです。#githubRepo
に続けてリポジトリ名 (例:microsoft/vscode-docs
) を入力します。"next.js でのルーティングはどのように機能しますか #githubRepo vercel/next.js"
"#githubRepo microsoft/typescript と一貫性があるか検証するためにコードレビューを実行してください"
"アプリに単体テストを追加してください。#githubRepo rust-lang/rust と同じテスト設定と構造を使用してください"
ツールを参照する
VS Code のチャットには、いくつかの組み込みツールがあり、MCP サーバーや拡張機能のツールでさらに拡張できます。たとえば、#fetch
ツールは、Web ページからコンテンツを取得できる組み込みツールです。ツールセットにツールをグループ化し、チャットプロンプトで参照することもできます。
チャットプロンプトでツールまたはツールセットを直接参照するには、#
に続けてツール(セット)名とオプションのツールパラメーターを入力します。次のプロンプト例は、ツールの使用方法を示しています。
-
GitHub MCP サーバーツール (
mcp.json
でgithub-mcp
として構成) を使用する"私のオープンな issue は何ですか #github-mcp"
"contoso/tailwindtraders の issue #123 の修正を実装してください #github-mcp"
"microsoft/vscode-docs の PR 8407 は何についてですか? #github-mcp"
-
#postgres
MCP サーバーを使用して PostgreSQL データベースにクエリを実行する"#postgres から気象データを取得するための API エンドポイントとデータアクセスレイヤーを生成してください"
"#postgres の会社名の最大長は何ですか"
@-メンション
チャット参加者は、チャットでドメイン固有の質問をすることができる特殊なアシスタントです。チャット参加者を、チャットリクエストを渡し、残りを処理してくれるドメインの専門家と考えてください。
チャット参加者は、特定のタスクに貢献し実行するためにエージェントフローの一部として呼び出されるツールとは異なります。
@-メンションすることでチャット参加者を呼び出すことができます。@
に続けて参加者名を入力します。VS Code には、@vscode
、@terminal
、@workspace
のような組み込みのチャット参加者がいくつかあります。これらはそれぞれのドメインに関する質問に答えるために最適化されています。
以下の例は、チャットプロンプトで @-メンションを使用する方法を示しています。
"@vscode ワードラップを有効にする方法は?"
"@terminal 現在のディレクトリで最も大きいファイルの上位 5 つは何ですか"
チャット入力フィールドに @
を入力すると、利用可能なチャット参加者のリストが表示されます。
拡張機能は、独自のチャット参加者を提供することもできます。
VS Code の簡易ブラウザーから要素を追加する (実験的)
VS Code には、ローカルでホストされている Web アプリケーションを表示および操作するために使用できる組み込みの簡易ブラウザーがあります。たとえば、Web アプリケーションの簡単なテストやデバッグを行うことができます。
簡易ブラウザーウィンドウから要素をコンテキストとしてチャットプロンプトに追加できます。これを行うには、
-
chat.sendElementsToChat.enabled 設定で簡易ブラウザーからの要素の選択を有効にしてください。
-
Web アプリケーションをローカルで実行します。
-
コマンドパレットから 簡易ブラウザー: 表示 コマンドを実行して、簡易ブラウザービューを開きます。
-
[開始] ボタンを選択して、現在のページから要素の選択を開始します。
-
Web ページの要素にカーソルを合わせ、クリックしてチャットプロンプトに追加します。
選択した要素が現在のチャットプロンプトにコンテキストとして追加されていることに注意してください。
コンテキストに含める情報を設定できます。
- CSS を添付 - chat.sendElementsToChat.attachCSS 設定で有効にします。
- 画像を添付 - chat.sendElementsToChat.attachImages 設定で有効にします。
この機能は、Live Preview 拡張機能 (プレリリース) でも利用できます。
チャット履歴
VS Code のチャットは、複数ターンの会話になるように設計されています。チャットセッション内では、VS Code は会話の履歴を現在のプロンプトのコンテキストとして使用します。つまり、コンテキストを繰り返すことなく、フォローアップの質問をしたり、以前の質問を明確にしたりできます。
新しいチャットセッションで最初から始め、現在のコンテキストを破棄するには、チャットビューの [新しいチャット] (+
) ボタン (⌘N (Windows、Linux では Ctrl+N)) を選択します。これは、別のトピックに移動し、以前のコンテキストと履歴を避けたい場合に便利です。
チャット履歴とコンテキスト管理について詳しく学びましょう。
カスタム指示
指示ファイルを使用すると、コーディングスタイルや好みに合った応答を生成するための一般的なガイドラインとルールを AI に提供できます。指示ファイルは、ワークスペースまたは現在のプロファイルに作成できる Markdown ファイルです。
指示ファイルを使用することで、チャットプロンプトに共通の指示を繰り返し追加する必要がなくなり、代わりに AI がこれらの指示をチャットのやり取りに自動的に適用するようになります。
指示ファイルの使用の詳細については、こちらをご覧ください。
ワークスペースのインデックス作成
VS Code は、関連するコードスニペットをコードベースから迅速かつ正確に検索するためにインデックスを使用します。このインデックスは、GitHub によって維持されるか、マシン上にローカルに保存されます。
次のワークスペースインデックス作成オプションが利用可能です。
- リモートインデックス: コードが GitHub リポジトリでホストされている場合、リモートインデックスを構築して、大規模なコードベースでも迅速にコードベースを検索できます。
- ローカルインデックス: ローカルマシンに保存されている高度なセマンティックインデックスを使用して、コードベースの高速で正確な検索結果を提供します。
- 基本インデックス: ローカルインデックスが利用できない場合、大規模なコードベースでローカルに動作するように最適化された、より単純なアルゴリズムを使用できます。
ワークスペースのインデックス作成について詳しく学びましょう。
関連リソース
- エージェントモードのツールについて学びましょう。
- 指示ファイルで AI をカスタマイズします。
- ワークスペースのインデックス作成について学びましょう。
- VS Code のチャットを始めましょう。