Copilot Memory を使用すると、Copilot はあなたのコードベースや個人的な好みを学習でき、Copilot エージェントがより効果的に作業できるようになります。 詳細については、「GitHub Copilot Memory について」を参照してください。
Copilot Memoryが有効になっている場合、Copilotはタスクを処理する際にメモリを自動的に作成します。 ほとんどの場合、リポジトリのファクトとユーザー設定を識別して保存するために、Copilot を有効のままにしておくことができます。 ただし、ときには Copilot に覚えておいてほしい特定のファクトまたはユーザー設定を明示的に追加したい場合があります。 これがこの記事の焦点です。
GitHub.comの設定で個々のメモリを作成または編集することはできません。 代わりに、Copilot にメモリを追加してもらいます。 アカウントでが使用可能な場合は、Copilot Memory、Copilot CLI、Copilot cloud agent、またはVisual Studio Codeを使用してこれを行うことができます。 Copilot CLIを使用して、準備されたメモリーを一括インポートすることもできます。
重要
Copilot にメモリの保存を促しても、それが保存されるとは限りません。 モデルは、プロンプトとコンテキストに基づいてメモリを格納するかどうかを決定します。 メモリを正常に追加しても、 Copilot が常にそれを使用するとは限りません。 手順を一貫して提供するには、Copilot Memoryに依存するのではなく、カスタム指示を使用します。 「GitHub Copilotのカスタム手順」を参照してください。
Copilotに事実や好みを覚えてもらう
Copilot にメモリを保存させるには、メモリ ストアに記録したい事実または好みについての正確な詳細を含む、明確な指示を与えるプロンプト(またはプル リクエストのコメント)を使用します。 Copilot が、指定したコンテキストと情報に基づいて、メモリをリポジトリ レベルのファクトまたはユーザー レベルの基本設定として格納するかどうかを決定します。
一致するメモリが既に存在する場合、 Copilot は重複を作成するのではなく、そのメモリを強化できます。
リポジトリ レベルのファクトは、 Copilot Memory が有効になっており、書き込みアクセス権があるリポジトリにのみ作成できます。
さまざまなサーフェスで Copilot を表示することの詳細については、次を参照してください。
- Copilot cloud agent: GitHub のクラウド上で Copilot の利用
- Copilot CLI: GitHub Copilot CLI の使用
- Copilot code review: Copilot からの出力を確認する
プロンプトの例
リポジトリレベルの情報の場合は、次のようなプロンプトを使用してください。
Store a memory that api/openapi.gen.go is generated here. Edit openapi.yaml instead.Remember that API handlers in this repository return errors through formatApiError.Create a memory for this repository: Database migrations belong in db/migrations, not in application startup code.
ユーザー レベルの基本設定では、Copilot にどのように連携してほしいか、承認を求めるタイミング、またはプロジェクト全体でフォローするワークフローを指定できます。
Remember I always want the smallest change that fixes the problem, not a refactor.Across all my projects, remember to ask for my approval before publishing changes.Remember my workflow for all projects: Run the relevant tests and summarize their results before proposing a commit.
重要
pull request でコメントする場合は、コメントの先頭に @copilot を書き込みます。 これにより、Copilot cloud agent はそれを通常のコメントではなく、応答する必要があるプロンプトとして認識します。
Copilot CLIでは、メモリを保存したり、メモリに対して投票したりできるのはルート エージェントだけです。 サブエージェントは関連するメモリを使用できますが、メモリ ストアを変更することはできません。
Copilot CLIでメモリ更新を承認する
対話型セッションでは、アクセス許可の設定に応じて、Copilot があなたにメモリの格納の承認を求めたり、既存のメモリの有用性の評価を求めたりすることがあります。 プロンプトには、メモリと、それが自分のみに適用されるか、リポジトリコラボレーターと共有されているかが表示されます。
更新プログラムを 1 回承認するか、オプションのフィードバックを付けて拒否するか、今後のメモリ更新を確認なしで許可することを選択できます。 承認オプションは、それが現在のリポジトリ、ディレクトリ、またはセッションに適用されるかどうかを示します。
Copilot CLIを使用して思い出をインポートする
Copilot CLIを使用して、準備されたメモリを JSONL ファイルからインポートできます。 各行には、バージョン管理されたメモリ オブジェクトが 1 つ含まれている必要があります。
この例には、2 つの折り返し行が含まれています。 各行 (メモリオブジェクト) は {"type":"memory"...で始まります。
{"type":"memory","version":1,"externalId":"personal-testing-1","scope":{"type":"user"},"subject":"testing","fact":"Run focused tests first.","reason":"This is the user's preferred validation workflow.","citations":[{"type":"text","text":"User input: \"Run focused tests first.\""}]}
{"type":"memory","version":1,"externalId":"repo-testing-1","scope":{"type":"repository","repository":{"host":"github.com","owner":"octo-org","name":"octo-repo"}},"subject":"testing","fact":"Run npm test before opening a pull request.","reason":"The repository requires this validation workflow.","citations":[{"type":"file","path":"CONTRIBUTING.md","lineStart":10,"lineEnd":12}]}
type、version、scope、subject、fact、reason、およびcitationsの各フィールドが必要です。
externalId フィールドは省略可能です。 これを使用して、インポート結果のレコードを識別し、入力ファイル内で繰り返し ID を検出します。 これは永続的なメモリ識別子として格納されません。
リポジトリ レベルのファクトの場合は、octo-org と octo-repo を、GitHub.com 上のリポジトリの所有者名とリポジトリ名に置き換えます。 そのリポジトリにMemoriesを書き込むためのアクセス許可が必要です。 次のコマンドの PATH-TO-FILE を JSONL ファイルへのパスに置き換えてください。
-
メモリを送信せずに完全なファイルを検証します。 これは、記憶を保存するためのアカウントのアクセス許可ではなく、ファイル形式をチェックします。
copilot memories import PATH-TO-FILE --dry-run -
思い出をインポート:
copilot memories import PATH-TO-FILE
既定では、入力ファイル内で externalId が繰り返し出現するか、既存の翻訳メモリの競合があると、そのレコードに対してエラーが発生します。 代わりに競合をスキップするには、--on-conflict skipを追加してください。 結果を JSON として受け取るには、--output json を追加します。
各レコードの結果を確認してください。 一部のレコードは、他のレコードが失敗した場合でもインポートできます。 部分インポートを再試行するには、失敗したレコードのみを送信してください。 インポート全体を繰り返し実行すると、重複するメモリが作成される可能性があります。
インポート コマンドの実行は、レコードを送信するための承認として扱われるので、 Copilot CLI では各メモリエントリを個別に承認するように求められることはありません。 通常の認証、ポリシー、リポジトリのアクセス許可、スコープの検証、シークレット スキャンの要件は引き続き適用されます。 リポジトリ レベルの情報は、リポジトリで Copilot Memory を使用できるコラボレーターと共有されます。
メモリがリポジトリまたは自分に適用されるかどうかを判断する
Copilot は、メモリをリポジトリ レベルのファクトとして格納するか、ユーザー レベルの基本設定として格納するかを、誰がそれを言ったかではなく、メモリが誰に適用されるかに基づいて決定します。 想定するスコープを明示的に指定します。 スコープが明確でない場合、Copilot は推測するのではなく、明確にするよう求めます。
| 保存する | 次のように表現します | Example |
|---|---|---|
| リポジトリ レベルの情報 | このリポジトリで作業するすべてのユーザーに当てはまるもの | "このリポジトリでは、データベースの移行は常にテスト スイートの前に実行されます。" |
| ユーザーレベルの設定 | すべてのプロジェクトで、あなた自身の仕事の進め方について | 「私のすべてのプロジェクトで、変更を適用する前に、あなたがその変更を説明してくれることを望みます。」 |
スコープを暗示するために "always" や "今後" などの語句に依存しないでください。 メモリがリポジトリ間で適用されるか、現在のリポジトリで作業しているすべてのユーザーに適用されるかを示します。
メモリの削除
記憶は、既定または構成済みの保持期間内に補強されない場合、有効期限が切れます。 Copilot は、それ自体がプロンプトに応答してメモリを削除することはできません。 たとえば、Copilot にメモリを "忘れる" よう要求した場合、GitHub Copilot app はそのファクトまたは優先設定をダウンヴォートできますが、メモリ ストアから削除されることはありません。
メモリをすぐに削除するには、個人用またはリポジトリの設定で削除する必要があります。 ユーザー レベルの基本設定については 個人用アカウントの Copilot メモリの管理 を、リポジトリ レベルの情報については エンタープライズ、組織、またはリポジトリのCopilot メモリの管理 を参照してください。