Zenn Claude Code Tsuzuri Memory
Claude Codeに永続記憶を自作した — Tsuzuri for Claude Code
- URL: https://zenn.dev/rizzai/articles/ac3f930ae252e3
- 日付: 2026-06-12
- Tier: Tier 3
- 要旨: Claude Codeのセッション間健忘問題に対し、ローカル完結・無料・日本語対応の永続記憶システム「Tsuzuri」を自作。SQLite+Claude Code hooksで会話を自動保存・自動注入。日本製埋め込みモデル(Ruri)でオフラインの意味検索も実現。
詳細
既存ツールの不満点(著者の場合):
- 日本語検索精度が低い(英語前提のトークナイザ)
- API課金が発生(mem0・Letta・Zep等)
- クラウドへのデータ送信がある
設計の3原則:
- ローカル完結(SQLite保存・Ollama意味検索)
- 無料(API課金なし・標準ライブラリ中心)
- インストール後は何もしなくていい(hooksで自動化)
仕組み(hooks):
UserPromptSubmit/Stop hook→ 会話をSQLiteに自動保存SessionStart hook→ 要約を自動注入
2層メモリ:
- Tier1(常時注入):
handoff.md(引き継ぎ)・project-state.md(恒久情報) - Tier2(検索時): 過去の生ログをSQLite FTS5で全文検索
工夫1: blob分離で検索精度向上
- 会話テキストとコード/ログblobを分離
- 意味検索の埋め込み対象は会話テキストのみ(コードはFTS5で検索)
工夫2: 生ログを構造化メモリに蒸留
- 決定事項→
decisions.md、バグ修正→bugs-and-fixes.mdに整理 - 内容ハッシュで重複を自動スキップ
工夫3: 日本語意味検索(オプション)
- Ollama +
kun432/cl-nagoya-ruri-large(日本製・Apache-2.0)でローカル実行 - FTS5(キーワード)と埋め込み(意味)をRRFで融合したハイブリッド検索
- Ollamaなしでも動作(FTS5のみにフォールバック)