ツールセット詳解:Agent に記憶を教える
この章で学べること
この章では、supermemory プラグインのコアインタラクション方法を習得します。Agent は通常記憶を自動的に管理しますが、開発者として、手動で介入する必要がよくあります。
この章を完了すると、以下のことができるようになります:
addモードを使用して、重要な技術的決定を手動で保存します。searchモードを使用して、Agent が設定を記憶しているかを確認します。profileを使用して、Agent の視点から見た「あなた」を確認します。listとforgetを使用して、古い、または間違った記憶をクリーンアップします。
基本的な考え方
opencode-supermemory はブラックボックスではなく、標準の OpenCode Tool プロトコルを通じて Agent と対話します。つまり、関数呼び出しのように呼び出したり、自然言語で Agent に使用を指示したりできます。
プラグインは supermemory という名前のツールを Agent に登録します。これはスイスアーミーナイフのように、6 つのモードを持っています:
| モード | 役割 | 典型的なシナリオ |
|---|---|---|
| add | 記憶を追加 | "このプロジェクトは Bun で実行する必要があることを覚えておいて" |
| search | 記憶を検索 | "認証の処理方法について以前言いましたっけ?" |
| profile | ユーザープロファイル | Agent がまとめたコーディング習慣を確認 |
| list | 記憶をリストアップ | 最近保存された 10 件の記憶を監査 |
| forget | 記憶を削除 | 間違った設定レコードを削除 |
| help | 使用ガイド | ツールのヘルプドキュメントを表示 |
自動トリガーメカニズム
手動呼び出しに加えて、プラグインはチャット内容を監視します。"Remember this" や "Save this" などの自然言語で言うと、プラグインはキーワードを自動的に検出し、add ツールを呼び出すように Agent に強制します。
実践:手動で記憶を管理する
通常は Agent に自動操作させますが、デバッグや初期記憶の作成時に、手動でツールを呼び出すと非常に便利です。OpenCode のダイアログボックスで、自然言語を使用して直接 Agent にこれらの操作を実行させることができます。
1. 記憶を追加 (Add)
最もよく使用される機能です。記憶の内容、タイプ、スコープを指定できます。
操作:プロジェクトアーキテクチャに関する記憶を Agent に保存させます。
入力コマンド:
supermemory ツールを使用して記憶を保存してください:
内容:「このプロジェクトのすべてのサービス層コードは src/services ディレクトリに配置する必要があります」
タイプ:architecture
範囲:projectAgent の内部動作(ソースコードロジック):
{
"tool": "supermemory",
"args": {
"mode": "add",
"content": "このプロジェクトのすべてのサービス層コードは src/services ディレクトリに配置する必要があります",
"type": "architecture",
"scope": "project"
}
}期待される出力: Agent は次のような確認情報を返します:
✅ Memory added to project scope (ID: mem_12345...)
記憶タイプ(Type)の選択
検索をより正確にするために、正確なタイプを使用することをお勧めします:
project-config: 技術スタック、ツールチェーン設定architecture: アーキテクチャパターン、ディレクトリ構造preference: 個人的なコーディングの好み(例:「矢印関数を好む」)error-solution: 特定のエラーの解決策learned-pattern: Agent が観察したコードパターン
2. 記憶を検索 (Search)
Agent が何かを「知っている」かどうか確認したい場合、検索機能を使用できます。
操作:「サービス」に関する記憶を検索します。
入力コマンド:
supermemory をクエリしてください。キーワードは "services"、範囲は project ですAgent の内部動作:
{
"tool": "supermemory",
"args": {
"mode": "search",
"query": "services",
"scope": "project"
}
}期待される出力: Agent は関連する記憶フラグメントとその類似度(Similarity)をリストアップします。
3. ユーザープロファイルを表示 (Profile)
Supermemory は「ユーザープロファイル」を自動的に維持し、長期の好みを含みます。
操作:プロファイルを確認します。
入力コマンド:
supermemory ツールの profile モードを呼び出し、私についてどの程度知っているか見てください期待される出力: 2 種類の情報が返されます:
- Static: 静的な事実(例:「ユーザーはフルスタックエンジニア」)
- Dynamic: 動的な好み(例:「ユーザーは最近 Rust に注目している」)
4. 監査と削除 (List & Forget)
Agent が間違った情報を覚えている場合(例:廃止された API Key)、削除する必要があります。
ステップ 1:最近の記憶をリスト
最近の 5 件のプロジェクト記憶をリストアップしてください(Agent が mode: "list", limit: 5 を呼び出します)
ステップ 2:ID を取得して削除 間違った記憶 ID が mem_abc123 だと仮定します。
記憶 ID mem_abc123 のレコードを削除してください(Agent が mode: "forget", memoryId: "mem_abc123" を呼び出します)
期待される出力:
✅ Memory mem_abc123 removed from project scope
発展:自然言語トリガー
毎回ツールパラメータを詳細に説明する必要はありません。プラグインにはキーワード検出メカニズムが組み込まれています。
試してみてください: 会話で直接言ってください:
Remember this: すべての日付処理には date-fns ライブラリを使用し、moment.js の使用は禁止します。
何が起こりましたか?
- プラグインの
chat.messageフックがキーワード "Remember this" を検出しました。 - プラグインは Agent にシステムプロンプトを注入しました:
[MEMORY TRIGGER DETECTED]。 - Agent は命令を受け取りました:"You MUST use the supermemory tool with mode: 'add'..."。
- Agent は自動的に内容を抽出し、ツールを呼び出しました。
これは非常に自然なインタラクション方法で、コーディングプロセス中にいつでも知識を「固定化」できます。
よくある質問 (FAQ)
Q: scope のデフォルトは何ですか? A: デフォルトは project です。クロスプロジェクトで有効な好み(例:「TypeScript を常に使用」)を保存したい場合は、scope: "user" を明示的に指定してください。
Q: 追加した記憶がすぐに反映されないのはなぜですか? A: add 操作は非同期です。通常、Agent はツール呼び出しが成功した直後にこの新しい記憶を「知る」ようになりますが、極端なネットワーク遅延下では数秒かかる場合があります。
Q: センシティブな情報はアップロードされますか? A: プラグインは <private> タグ内の内容を自動的に検閲します。しかし、安全のため、パスワードや API Key を記憶に含めないことをお勧めします。
付録:ソースコード参照
クリックしてソースコードの場所を表示
更新日:2026-01-23
| 機能 | ファイルパス | 行番号 |
|---|---|---|
| ツール定義 | src/index.ts | 183-485 |
| キーワード検出 | src/index.ts | 34-37 |
| トリガープロンプト | src/index.ts | 20-28 |
| クライアントの実装 | src/services/client.ts | 全文 |
重要な型定義:
MemoryType:src/types/index.tsで定義MemoryScope:src/types/index.tsで定義
次の章の予告
次の章では 記憶スコープとライフサイクル を学びます。
以下のことができるようになります:
- User Scope と Project Scope の底層分離メカニズム
- 効率的な記憶パーティション戦略の設計
- 記憶のライフサイクル管理