VS Code エージェントにおけるメモリ
Visual Studio Code のエージェントは、メモリを使用して会話全体でコンテキストを保持します。セッションごとにゼロからやり直すのではなく、エージェントはあなたの好みを記憶し、以前のタスクから学んだことを適用し、時間の経過とともにコードベースに関する知識を蓄積していきます。
エージェントアーキテクチャにおけるメモリの役割については、「エージェントの概念」を参照してください。
この記事では、VS Code でメモリツールを使用する方法、メモリファイルを管理する方法、そして Copilot Memory が開発ワークフロー全体でどのようにメモリを拡張するかについて説明します。
メモリツール
メモリツールは現在プレビュー段階です。 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 Memory
Copilot Memory はプレビュー版であり、上記で説明したローカルのメモリツールとは別のものです。
Copilot Memory は、Copilot が作業を通じてリポジトリ固有の洞察を学習・保持できるようにする GitHub ホスト型のメモリシステムです。ローカルのメモリツールとは異なり、Copilot Memory は Copilot クラウドエージェント、Copilot コードレビュー、Copilot CLI など、複数の GitHub Copilot インターフェース間で共有されます。
Copilot Memory の仕組み
Copilot エージェントがリポジトリで作業すると、それらは「メモリ」と呼ばれる、範囲が限定された洞察を自動的にキャプチャします。これらのメモリには以下の特徴があります。
- リポジトリスコープ: メモリは特定のリポジトリに関連付けられており、書き込み権限を持つ貢献者のみが作成できます。
- エージェント間共有: ある Copilot エージェントが学習したことは、他のエージェントも利用可能です。例えば、Copilot コードレビューによって発見されたパターンを、後に Copilot クラウドエージェントが利用できます。
- 使用前の検証: エージェントはメモリを適用する前に現在のコードベースと照らし合わせて検証を行い、古い情報や誤った情報が結果に影響を与えるのを防ぎます。
- 自動有効期限: 古い情報を避けるため、メモリは28日後に削除されます。
Copilot Memory の有効化
Copilot Memory はデフォルトでオフになっており、GitHub 設定で有効にする必要があります。
- 個人ユーザー (Copilot Pro または Pro+): GitHub の 個人の Copilot 設定 で Copilot Memory を有効にします。
- 組織およびエンタープライズ: 組織またはエンタープライズ設定のポリシー設定を通じて有効にします。
さらに、 github.copilot.chat.copilotMemory.enabled 設定で、VS Code 内の Copilot Memory 統合を有効にする必要があります。
リポジトリの所有者は、リポジトリ設定 > Copilot > Memory から保存されたメモリを確認・削除できます。
詳細な設定手順については、GitHub ドキュメントの「Enabling and curating Copilot Memory」を参照してください。
メモリツールと Copilot Memory の比較
| メモリツール | Copilot Memory | |
|---|---|---|
| ストレージ | ローカル (自分のマシン上) | GitHub ホスト型 (リモート) |
| スコープ | ユーザー、リポジトリ、セッション | リポジトリのみ |
| Copilot サーフェス間での共有 | いいえ (VS Code のみ) | はい (コーディングエージェント、コードレビュー、CLI) |
| 作成者 | ユーザー、またはチャット中のエージェント | Copilot エージェントが自動的に |
| デフォルトで有効 | はい | いいえ (オプトイン) |
| 有効期限 | 手動管理 | 自動 (28日間) |
これら2つのシステムは相互補完的なものです。VS Code 内の個人的な好みやセッション固有のコンテキストにはローカルのメモリツールを使用し、開発ワークフロー全体のすべての Copilot エージェントに利益をもたらすリポジトリ知識には Copilot Memory を使用してください。
関連リソース
- エージェントによる計画
- エージェント ツール
- Enabling and curating Copilot Memory (GitHub ドキュメント)
- Building an agentic memory system for GitHub Copilot (GitHub ブログ)