Visual Studio の Copilot Chat はコンテキストに対応するように設計されており、プロジェクトの構造とコンテンツを深く理解することで、関連性が高く、調整された応答を提供します。 この記事では、Copilot Chat がコンテキストを構築して使用してコーディング ワークフローを強化する方法について、バックグラウンドで説明します。
Copilot Chat がソリューション コンテキストを収集する方法
Copilot Chat では、コードベース内でコンテキスト構築を行う多層アプローチを使用して、提案と回答が関連性があり正確であることを確認します。
コードベースのインデックス作成
リポジトリが GitHub または Azure DevOps でホストされている場合、Copilot はコードベースのリモート インデックスを作成し、コード内のパターンとリレーションシップをキャプチャする埋め込みを計算します。 GitHub でのリモート インデックス作成の詳細について説明します。
コードが他の場所でホストされている場合、Copilot はローカル インデックスを作成します。
セマンティック検索
プロンプトに基づいて、Copilot は、正確に応答するためにより多くのプロジェクト コンテキストが必要であると判断する場合があります。 このような場合は、リモートインデックスまたはローカルインデックスでセマンティック検索を実行します。
正確な単語と一致する従来の検索とは異なり、セマンティック検索では意味に焦点を当てています。 高度なベクター埋め込みを使用して、Copilot は要求に最も高いセマンティック類似性を持つファイルを識別し、そのコンテキストに追加します。
これらのファイルは、システム プロンプト、命令、暗黙的なコンテキスト (チャット履歴や開いているファイルなど)、およびエラーなどの明示的なコンテンツを補完します。
チャットで コンテキストとして参照を追加 する方法について説明します。
Copilot Chat でコード提案を適用する方法
Copilot Chat では、応答でコードの提案が頻繁に提供されます。 これらの提案は、適用してテストする前に、コードベースに正確にマップする必要があります。
モデル ベースのコード マッピング
Copilot Chat では、投機的デコードを使用して既存のファイルに提案を正確に挿入し、エラーのリスクを軽減します。 エージェント モードでは、これにより、Copilot はコードのビルド、デバッグ、テストを個別にサポートする信頼性の高い編集を行うことができます。
Copilot のメモリ
Copilot のメモリを使用すると、Copilot はプロジェクト固有のコーディング標準とベスト プラクティスを学習し、プロジェクトに対応し、セッション間で一貫性を持たせるようにすることができます。
Copilot のメモリのしくみ
メモリは、インテリジェント検出を使用し、チャットでプロンプトを表示するときにチームの好みを理解します。 プロンプトが表示されると、Copilot は、動作を修正したり、標準を示したり、何かを覚えておくように依頼したりするインスタンスを識別します。
このようなインスタンスが検出されると、設定を保存するための確認ナッジが表示されます。
その後、Copilot はユーザー設定を次の 3 つのファイルのいずれかに分類します。
- コーディング標準用の
.editorconfig -
CONTRIBUTING.mdベスト プラクティス、ガイドライン、アーキテクチャ標準について説明します。 -
README.md高レベルのプロジェクト情報
Copilot にプロンプトを表示し続ける際に、将来の Copilot のやり取りを強化する開発のベスト プラクティスを文書化することで、ニーズに対してより効果的に対応し、チームを支援するように教えます。