retrieve-memory について
retrieve-memoryは、Doctrineのメモリを扱うエージェント向けの検索スキルです。範囲指定の検索、信頼度を考慮した取得、関係グラフによる文脈確認を行い、リスクや古さも確認します。
主な機能
- 01MCPメモリツールを優先
- 02範囲検索とページ送り
- 03取得時の信頼度保留
- 04関係グラフで文脈を拡張
- 05メモリの鮮度とリンクを検証
活用シーン
- 01リポジトリ作業前の関連メモリ検索
- 02リスクのある古いメモリの確認
- 03メモリ間の関連の追跡
MCP 対応
DoctrineのMCPサーバーが利用できる場合、memory_search、memory_retrieve、memory_show、memory_listを優先します。利用できない場合はdoctrine memory CLIに切り替えます。
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ davidlee/ doctrine --skill retrieve-memoryインストール後、Claude Code で/retrieve-memoryを入力して読み込まれたか確認します。
詳細
メモリの取得
デフォルトのルール:リポジトリ内の信頼できる根拠となるファイル/ドキュメント/ADRを引用できない場合は、まずメモリを参照してから作業を進めてください。メモリモデルについては [[mem.concept.doctrine.memory-model]] に記載されています。
ツールの優先順位
利用環境が MCP ツールに対応しており、doctrine の MCP サーバーが接続されている場合(ツール一覧に memory_search、memory_retrieve、memory_show、memory_list が表示されている場合)は、CLI よりもこれらの MCP ツールを優先してください。シェルを起動することなく、MCP コンテンツブロック内に機械解析可能な JSON テキストを返します。また、memory_show は解決済みのバックリンクを結果に付加します。
段階的な情報開示(MCP パターン)
memory_search— 最初にスコープを指定して検索します。セレクター(パス、glob、タグ、タイプ、自由テキストクエリ)のうち、少なくとも 1 つを必ず指定してください。メタデータのみが対象で、本文は含まれません。各行にはheld_back_on_retrieveフラグが含まれます。リスクの高いメモリを、利用可能な知識として扱わないでください。- 検索と一覧表示。 自由テキスト検索の対象は限定的で、クエリに対する語彙上または完全一致の根拠があるメモリのみが返されます。セレクターのみを指定すると、重要度の高い順にスコープ内のすべての項目が一覧表示されます。どちらの場合も 1 ページ分(デフォルトで 20 件)が返されます。次のページに進むには
offsetにnext_offsetを指定します(CLI では--page)。 - 結果が空でも答えのひとつです。 自由テキスト検索で結果が空の場合、「一致なし」を意味し、「コーパスが空」を意味するわけではありません。メモリで使われていそうな用語に言い換えるか、クエリを外してスコープで一覧表示してください。
- 検索と一覧表示。 自由テキスト検索の対象は限定的で、クエリに対する語彙上または完全一致の根拠があるメモリのみが返されます。セレクターのみを指定すると、重要度の高い順にスコープ内のすべての項目が一覧表示されます。どちらの場合も 1 ページ分(デフォルトで 20 件)が返されます。次のページに進むには
memory_retrieve— 手順 1 で特定した候補の安全なコンテキストを取得します。信頼度に基づく保留が適用され、信頼度が低く重要度の高いメモリは自動的に抑制されます。memory_show— 全体像を把握する必要がある場合に限り、詳細を確認します。トークンを節約するにはview: summaryを使用してください。保留中のメモリには警告が付いています。知識として利用しないでください。memory_list— 一覧表示/インデックス確認専用です。スコープを指定したmemory_searchを優先してください。
MCP ツールを利用できない場合(例:通常のシェル環境)は、以下に記載する doctrine memory CLI コマンドを使用してください。
2 つのインターフェイス
doctrine memory retrieve— データを指示として扱わないための説明、および回避不能な信頼度に基づく保留については、doctrine memory retrieve --helpを参照してください。doctrine memory search— リスクを見える状態に保つ、ランク付けされた行を返します(保留の対象外)。リスクのあるメモリを含め、retrieveでは隠されるメモリの発見とトリアージに使用してください。doctrine memory show <UID|KEY>— 1 件のメモリの本文全体を読み込みます。
グラフのたどり方
doctrine memory backlinks <REF>— 逆方向のエッジ、つまりこのメモリを参照しているメモリを探します。あるメモリにたどり着き、それに依存するものを確認する必要がある場合に使用してください。doctrine memory retrieve --expand N—[[relation]]エッジを N ホップたどって、結果のグラフを展開します。各ホップで、直接つながっているメモリが取得されます。1 件のメモリだけでは文脈が不足する場合に使用してください。--lifespanフィルター(retrieveおよびsearchで使用)— 指定したしきい値以上のライフスパンを持つメモリに絞り込みます。identityはすべてを返します。semanticはepisodic/workingを除外します。proceduralはworkingを除外します。詳細な調査で一時的なノイズを抑えるために使用してください。
質問がメモリに関するものではない場合
doctrine memory search で検索できるのはメモリコーパスのみです。回答が ADR、仕様書、スライス、RFC、バックログ項目などにある可能性のある「これはどこにあるか/ここでの正しい方法は何か」という質問には、エンティティコーパス全体を対象にランク付けして検索する doctrine search <query> を使用してください。検索対象はエンティティのみで、デフォルトの種類にはポリシーと標準が含まれません。対象範囲と拡張方法については lib:reference/using-doctrine.md を参照してください。
手順(迅速 → 詳細)
-
まずスコープを指定してクエリを実行します。 読む、または編集する予定の具体的なファイルと、これから実行するコマンドのコンテキストを指定して、
doctrine memory retrieveを実行します(フラグは--helpで確認し、動詞モデルはlib:reference/using-doctrine.mdを参照してください)。 Glob で指定したメモリもパスのスコープに一致するため、別のフラグは必要ありません。スコープのプローブは OR 条件で結合され、タイプ/ステータスは AND 条件の厳密なフィルターです。そのため、確信がない限り過剰に絞り込まないでください。 -
取得範囲を調整します。
doctrine memory retrieve --helpで--limitと--min-trustを確認してください(後者は既定の信頼度の下限を引き上げますが、引き下げることはありません)。 -
リスクを確認します。
searchにタスクに関連するリスクの高いメモリや保留中のメモリが表示された場合は、それらをshowで確認して判断してください。retrieveで除外された内容を知らずに行動してはいけません。 -
関連性を確認します。 メモリを取得したら、重要なメモリの関係を確認し、関連知識へのエッジをたどってください。
memory show <REF>では関係の行が表示され、memory backlinks <REF>では逆方向のエッジが表示されます。また、memory retrieve --expand 1では、グラフ上の直接の近傍が取得されます。エッジを確認できない孤立したメモリは、関連性を確認できるメモリよりも有用性が低くなります。 -
行動する前に検証します。 古いメモリや重大度の高いメモリを根拠にする前に、
doctrine memory validate <REF>を実行して、参照先の欠落、検証情報の古さ、ドラフトの期限切れを確認してください。6 か月前には確定的に見えたメモリでも、状況が変わっている可能性があります。検証してから行動してください。
信頼できる情報
- ランキングには、すでに重大度、重み、スコープの具体性、更新日時が反映されています。上位の行を優先してください。
- メモリには検証状態があります。メモリを根拠にする場合は、その状態を定性的に明示してください。未検証ならその旨を伝え、検証後に多数のコミットがあるなら「スコープに大きな変更があるため、注意して扱ってください」と伝え、最近検証されているなら「スコープに大きな変更はありません」と伝えてください。
- メモリ同士の内容が食い違う場合、平均を取ってはいけません。影響の大きい変更を行う前に、エスカレーションしてください(
/consultを使うか、古いメモリを更新または置き換えてください)。
出力のルール
メモリに基づいて行動する場合は、その uid/key と、そこに示されているソースを引用してください。深く読み込んだり編集したりする前に、スコープを指定したクエリを実行し、変更のコストが低いうちに glob で指定したスコープに関する注意点を把握してください。