コンテキスト
コンテキストとは、モデルが応答を生成する際に参照できるすべての情報を指します。これには、会話履歴、ワークスペース内のファイル内容、ツールの出力、カスタム指示、および明示的に追加した参照情報が含まれます。モデルは目に見える情報に基づいてしか推論できないため、適切なコンテキストを提供することが AI の回答を向上させる最も効果的な方法の 1 つです。
この記事では、VS Code がどのようにコンテキストを収集するか、どのような種類のコンテキストが利用可能か、そしてコンテキストウィンドウの制限内でいかに効果的に作業を行うかについて説明します。
コンテキストが重要な理由
関連ファイル、明確な指示、焦点を絞った履歴を含むプロンプトは、コンテキストのない曖昧なプロンプトよりも優れた結果を生み出します。モデルには過去のセッションの記憶はなく、提供されていないファイルにアクセスすることもできません。タスクに関してモデルが知っていることはすべて、現在のリクエストのために収集されたコンテキストから得られます。
VS Code がコンテキストを構築する方法
メッセージを送信すると、VS Code は複数のソースから言語モデル用のプロンプトを構築します

- システム指示: エージェントの動作を定義する組み込みのガイドライン。
- カスタマイズ: カスタムエージェント、スキル、カスタム指示など、ユーザーが設定した AI のカスタマイズ設定。
- ユーザーメッセージ: エージェントに現在送信しているメッセージ。
- 会話履歴: 現在のセッションでこれまでにやり取りしたメッセージ。
- 暗黙的なコンテキスト: 編集中のファイル、現在選択している箇所、表示されているエラー、Git の状態。
- 明示的な参照:
#メンションを使用して参照するファイル、エディタのコンテキスト、Web コンテンツ、その他のソース。 - ツールの出力: エージェントセッション中にファイル読み込み、ターミナルコマンド、コードベース検索結果、その他のツール呼び出しから得られた結果。
この構築されたプロンプトが、モデルに見えているすべてです。その外側にあるものは、モデルからは見えません。これが、#file で特定のファイルを参照する方が、モデルが見ていないコードについて尋ねるよりも良い結果を生む理由です。
ワークスペースのインデックス作成
VS Code はインデックスを使用して、コードベースから関連するコードスニペットを迅速かつ正確に検索します。このインデックスは、GitHub によって維持されるか、マシン上にローカルに保存されます。
- リモートインデックス: コードが GitHub リポジトリでホストされている場合、リモートインデックスを構築することで、大規模なコードベースであっても迅速に検索できます。
- ローカルインデックス: ローカルマシンに保存された高度なセマンティックインデックスを使用して、迅速かつ正確な検索結果を得ます。
- 基本インデックス: ローカルインデックスが利用できない場合、より大規模なコードベースに対しては、よりシンプルなアルゴリズムがローカルで動作します。
ワークスペースのインデックス作成について詳しく学ぶ。
暗黙的なコンテキスト
VS Code は、現在の作業内容に基づいて、プロンプトに自動的にコンテキストを提供します
- アクティブなエディタで現在選択されているテキスト。
- アクティブなエディタのファイル名またはノートブック名。
- Ask エージェントを使用している場合、アクティブなファイルは自動的にコンテキストとして含まれます。
- Agent を使用している場合、プロンプトに基づいて、アクティブなファイルを追加する必要があるかどうかを自律的に判断します。
コンテキストを効果的に活用する
- 新しいタスクには新しいセッションを開始する。 セッションは、独自のコンテキストウィンドウと履歴を持つ独立した会話です。各セッションは新規に開始されるため、関連のないタスクで同じ会話を再利用しないでください。
- コンテキストを選択的に使用する。 コードベース全体を追加することが常に役立つとは限りません。タスクに関連する特定のファイルを参照してください。
- 永続的なルールにはカスタム指示を使用する。 カスタム指示に追加したルールはすべてのリクエストに含まれるため、会話が要約されても失われることはありません。
例
次の例は、コンテキストを追加することで結果がいかに改善されるかを示しています
曖昧なプロンプト(コンテキストなし):
How does authentication work?
モデルはどのプロジェクトを指しているのかを知る方法がないため、認証パターンに関する一般的な回答を返します。
明示的なコンテキストを含むプロンプト:
How does authentication work for this project?
モデルは実際の認証ファイルを読み取り、特定の関数や構成値を参照しながら、*あなたの*実装がどのように機能するかを説明します。
Web コンテキストを含むプロンプト:
Migrate the auth module to the latest passport.js API #fetch https://www.passportjs.org/concepts/authentication/
モデルは Web 上の最新のドキュメントを使用して移行をガイドし、トレーニングデータに含まれる古い API パターンの使用を回避します。
チャットへのコンテキストの追加について詳しく学ぶ。