Claudeのメモリー機能は強力なものの、もっと自分がコントローラブルな記憶がほしいよねということで、改めて先だってかいた仕組みを捉え直していました。
2つの記憶の役割
実装の通りですが「記憶」を2つに整理しました。
| 長期記憶 | 永続記憶 | |
|---|---|---|
| ストレージ | SQLite3(FTS5 + sqlite-vec) | esa(タグ 永続) |
| 書き込み | 自動(Hook)+ 手動 | 手動のみ |
| 読み取り | MCP経由 | MCP経由 |
| 性格 | 受動的・蓄積型 | 能動的・厳選型 |
| 対象 | 会話・操作ログ全般 | 忘れてはならないこと |
長期記憶は「勝手に覚えて勝手に思い出してくれる」。永続記憶は「自分が選んで残したものを参照できる」。用途が違うので、両立して使っています。
長期記憶
文字通り長い記憶です。長いけども消えるときには消える。そういうものです。
記憶方法
最初の記事では、セッション終了時に会話をまるごと保存する Stop hook だけ入れてましたが、少し複雑になっています。
Stop ──→ セッション全体をキャプチャ PostToolUse ──→ Edit/Write/WebFetch/WebSearch の結果を保存 PreToolUse ──→ Skill 呼び出し前に関連記憶を注入
PostToolUse は「何をしたか」を蓄積するためのものです。ファイルを編集したとき、外部ページを取得したとき、その結果を長期記憶に書き込みます。ただしコンテンツが短すぎるもの(200文字未満)はスキップして、ノイズを抑えています。
PreToolUse のスキルコンテキスト注入は、少し変わったアイデアです。Skill ツールが呼ばれる直前に、スキル名で長期記憶を検索し、関連する過去の記憶をコンテキストとして差し込みます。「このスキルを前回使ったときに何が起きたか」を Claude に渡してからスキルを実行できるわけです。
複数 Mac 間の同期
最近 Mac が複数台になったので、iCloud Drive 経由で記憶を同期できるようにしました。
/long-term-memory-dump # 各 Mac で NDJSON として書き出す /long-term-memory-sync # 他 Mac の dump を取り込む
content_hash で冪等処理をしているので、自分の Mac 分を再度取り込んでも重複しません。「分散記憶」という感じで、各 Mac が独自の記憶を持ちながら、相互に補完できます。
そして同期処理をやっていると、攻殻機動隊のフチコマの同期シーンを思い出しますね。
読み取りは chiebukuro-mcp に分離
MCP サーバーを書き込み専用(3ツール: store/delete/stats)にして、読み取りは別の chiebukuro-mcp に任せる構成にしました。chiebukuro-mcp の chiebukuro.json に memory.db を登録すると、chiebukuro_query_long_term_memory や chiebukuro_semantic_search_long_term_memory が自動生成されます。
1つの MCP サーバーに全機能を詰め込むより、責務が明確になりました。
永続記憶
こちらは前回の記事とアーキテクチャは変わっていません。esa の bist チームに 永続 タグをつけて保存するシンプルな設計です。
MCP サーバーは 3 ツール構成です。
| ツール | 役割 |
|---|---|
permanent_memory_search |
tag:永続 -in:Archived で検索 |
permanent_memory_create |
タグ 永続 自動付与で新規作成 |
permanent_memory_update |
revision 競合検知あり更新 |
更新時は esa の revision 番号を比較して競合を検知します。ブラウザから直接 esa を編集した場合でも、MCP 越しに上書きしてしまわないようにするためです。
Claude Code 上では archive と organize の 2 つのスキルも用意しています。不要になった記憶を Archived/ カテゴリに退避したり、全体を棚卸しして重複を整理したりできます。
2つ合わせると何が変わるか
長期記憶だけあると「何かあったはずだが出てこない」があります。検索にかかるかどうかが会話の粒度に依存するので。
永続記憶だけだと「覚えておきたいと思ったことしか残らない」。その判断を自分が常に正しくできるとは限りません。
2つを並べることで、自動の網と、意図的な選択の両方が揃います。どちらか片方だけより、補完関係があります。
これから
メンテですね。
長期記憶に溜まったデータを棚卸しする /long-term-memory-cleanup スキルをちゃんと使うことと、永続記憶の permanent-memory-organize を定期的に走らせることです。どちらも「蓄積したあとの管理」が課題で、そこはまだ手動です。
自動で増やす仕組みは動いているので、次は自動で整理する方向を考えています。