コンテンツにスキップ
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原則:

  1. ローカル完結(SQLite保存・Ollama意味検索)
  2. 無料(API課金なし・標準ライブラリ中心)
  3. インストール後は何もしなくていい(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のみにフォールバック)