VS Code エージェントにおけるメモリ
Visual Studio Code のエージェントは、メモリを使用して会話全体でコンテキストを保持します。セッションごとにゼロから開始するのではなく、エージェントはユーザーの好みを記憶し、以前のタスクから学んだ教訓を適用し、時間の経過とともにコードベースに関する知識を蓄積します。
メモリがエージェントアーキテクチャにどのように組み込まれているかの背景については、「エージェントの概念」を参照してください。
この記事では、VS Code でメモリツールを使用する方法、メモリファイルを管理する方法、そして Copilot メモリが開発ワークフロー全体にわたってどのようにメモリを拡張するかを説明します。
メモリツール
メモリツールは現在プレビュー段階です。 github.copilot.chat.tools.memory.enabled 設定を使用して有効または無効にできます。
メモリツールは、エージェントが作業中にメモを保存・取得できるようにする組み込みのエージェントツールです。何かを記憶するようにエージェントに直接依頼することもできます。すべてのデータはローカルマシン上に保存されます。メモリツールはデフォルトで有効になっています。
メモリのスコープ
各スコープは、情報がどれだけ持続すべきか、どこに適用されるかに応じて、異なる目的を果たします。
| スコープ | パス | セッションをまたいで保持 | ワークスペースをまたいで保持 | 用途 |
|---|---|---|---|---|
| ユーザー | /memories/ |
はい | はい | 設定、パターン、頻繁に使用するコマンド |
| リポジトリ | /memories/repo/ |
はい | いいえ (ワークスペース限定) | コードベースの規約、プロジェクト構造、ビルドコマンド |
| セッション | /memories/session/ |
いいえ (チャット終了時に消去) | なし | タスク固有のコンテキスト、進行中の計画 |
ユーザーメモリ
ユーザーメモリは、すべてのワークスペースおよび会話を通じて保持されます。最初の 200 行は、セッション開始時にエージェントのコンテキストに自動的に読み込まれます。ユーザーメモリは、作業中のプロジェクトに関係なく適用される一般的な好みや洞察のために使用してください。
例えば、コーディングの好みを記憶するようにエージェントに依頼します
Remember that I prefer tabs over spaces and always use single quotes in JavaScript
後の会話で、別のワークスペースであっても、エージェントはこの好みを思い出して生成されたコードに適用します。
リポジトリメモリ
リポジトリメモリは現在のワークスペースに限定され、そのワークスペース内の会話全体で保持されます。リポジトリメモリは、アーキテクチャの決定、命名規則、ビルドコマンドなど、特定のコードベースに関する事実のために使用してください。
例えば
Remember that this project uses the repository pattern for data access and all API endpoints require authentication
セッションメモリ
セッションメモリは現在の会話に限定され、会話が終了すると消去されます。一時的な作業メモや、マルチステップのタスクに取り組む際にエージェントが追跡するタスク固有のコンテキストのために使用してください。
Plan エージェントはセッションメモリを使用して、plan.md ファイルに実装計画を保持します。この計画はセッション中は利用可能で、Chat: Show Memory Files コマンドで表示できますが、その後のセッションでは利用できません。「エージェントによる計画」の詳細をご覧ください。
メモリの保存と取得
メモリを保存するには、自然言語でエージェントに何かを記憶するように依頼します。エージェントは適切なスコープを判断し、対応するメモリファイルを作成または更新します。
Remember that our team uses conventional commits for all commit messages
メモリを取得するには、新しい会話でそれについて質問します。エージェントは自身のメモリファイルをチェックし、関連情報を思い出します。
What are our commit message conventions?
エージェントのチャット応答に含まれるメモリファイル参照はクリック可能で、メモリファイルの内容を直接表示できます。
メモリファイルの管理
VS Code には、メモリファイルを表示および管理するためのコマンドが用意されています。
- Chat: Show Memory Files: すべてのスコープにわたる全メモリファイルのリストを開きます。ファイルを選択してその内容を表示します。
- Chat: Clear All Memory Files: すべてのスコープにわたる全メモリファイルを削除します。
個別のメモリファイルの削除はまだサポートされていません。Chat: Clear All Memory Files を使用してすべてのメモリを削除するか、エージェントに特定のメモリファイルを更新するように依頼して古い情報を削除してください。
Copilot メモリ
Copilot メモリはプレビュー段階であり、上記のローカルメモリツールとは別個のものです。
Copilot メモリは、Copilot が作業しながらリポジトリ固有の洞察を学習・保持できるようにする GitHub ホスト型のメモリシステムです。ローカルメモリツールとは異なり、Copilot メモリは Copilot コーディングエージェント、Copilot コードレビュー、Copilot CLI など、複数の GitHub Copilot サーフェス間で共有されます。
Copilot メモリの仕組み
Copilot エージェントがリポジトリで作業すると、それらは「メモリ」と呼ばれる厳密にスコープ化された洞察を自動的にキャプチャします。これらのメモリは以下の特徴を持ちます。
- リポジトリスコープ: メモリは特定のリポジトリに関連付けられており、書き込み権限を持つコントリビューターのみが作成できます。
- エージェント横断型: ある Copilot エージェントが学習したことは、他のエージェントも利用できます。例えば、Copilot コードレビューによって発見されたパターンを、後で Copilot コーディングエージェントのガイドにすることができます。
- 使用前に検証: エージェントは、メモリを適用する前に現在のコードベースと照らし合わせて検証し、古い情報や不正確な情報が結果に影響を与えるのを防ぎます。
- 自動有効期限: 古い情報を避けるため、メモリは 28 日後に削除されます。
Copilot メモリの有効化
Copilot メモリはデフォルトでオフになっており、GitHub 設定で有効にする必要があります。
- 個人ユーザー (Copilot Pro または Pro+): GitHub の個人の Copilot 設定で Copilot メモリを有効にします。
- 組織および企業: 組織または企業の設定のポリシー設定から有効にします。
さらに、VS Code で github.copilot.chat.copilotMemory.enabled 設定を使用して Copilot メモリの統合を有効にする必要があります。
リポジトリの所有者は、Repository Settings > Copilot > Memory で保存されたメモリを確認および削除できます。
詳細なセットアップ手順については、GitHub ドキュメントの「Copilot メモリの有効化と管理」を参照してください。
メモリツールと Copilot メモリの比較
| メモリツール | Copilot メモリ | |
|---|---|---|
| ストレージ | ローカル (ユーザーのマシン上) | GitHub ホスト型 (リモート) |
| スコープ | ユーザー、リポジトリ、セッション | リポジトリのみ |
| Copilot サーフェス間での共有 | いいえ (VS Code のみ) | はい (コーディングエージェント、コードレビュー、CLI) |
| 作成者 | チャット中のユーザーまたはエージェント | Copilot エージェントが自動的に作成 |
| デフォルトで有効 | はい | いいえ (オプトイン) |
| 有効期限 | 手動管理 | 自動 (28 日) |
これら 2 つのシステムは相補的です。個人的な好みや VS Code 内のセッション固有のコンテキストにはローカルメモリツールを使用してください。開発ワークフロー全体で全ての Copilot エージェントに役立つリポジトリ知識には、Copilot メモリを使用してください。
関連リソース
- エージェントによる計画
- エージェントツール
- Copilot メモリの有効化と管理 (GitHub ドキュメント)
- GitHub Copilot のエージェント型メモリシステムの構築 (GitHub ブログ)