Claude Codeの課題を解決:ローカル完結型「永続記憶システム」Tsuzuriが開発された
本記事は、AIコーディング支援ツール「Claude Code」がセッション終了時に会話の文脈や決定事項を完全に忘れてしまうというユーザー体験上の大きな課題(健忘)に着目し、それを解決するためのローカル完結型永続記憶システム「Tsuzuri(綴り)」の開発について詳細に解説している。Tsuzuriは、「バラバラの会話を一本の糸でつなぎ、文脈を綴じていく」というコンセプトに基づいている。
既存のメモリ関連ツールには、日本語検索の精度が低い、API課金が発生する、または機密情報がクラウドに送信されるといった問題点があったため、開発者は「日本語で・無料で・ローカルで完結する」システムを目指した。その結果、Tsuzuriは以下の3つの原則に基づいて設計されている。
1. **ローカル完結**: データ保存にはSQLiteを使用し、意味検索もOllamaを用いてローカルで実行するため、外部へのデータ送信が一切ない。
2. **無料**: API課金が発生しないよう、標準ライブラリ中心の構成を維持している。
3. **日本語対応**: SQLite FTS5のtrigramトークナイザと日本製埋め込みモデル「Ruri」を採用し、高い日本語検索精度を実現した。
仕組み面では、「2層メモリ」構造を採用。セッション起動時に常に注入される「Tier1(引き継ぎメモ/恒久情報)」と、必要に応じて過去ログを検索する「Tier2(生ログ)」(SQLite FTS5による全文検索)に分けることで、コンテキストの過負荷を防いでいる。さらに、ノイズ低減のため、会話本文を「会話テキスト」と「コード/ログ blob」に分離し、意味検索の埋め込み対象を純粋な会話文のみに限定する工夫(blob分離)を行っている。また、生のログから決定事項やバグ修正といった重要な情報を抽出し、「構造化メモリ」(decisions.md, bugs-and-fixes.mdなど)として蒸留・追記することで、検索の信号品質を飛躍的に向上させている。
利用者はインストーラを実行するだけで自動で記憶が開始され、セッション終了後には専用コマンド(`memory-distill.js`など)を実行して構造化メモリを更新できる。これにより、Claude Codeの使用体験は大幅に改善されると期待されている。
背景
大規模言語モデル(LLM)を用いたコーディング支援ツールが普及する中で、セッション間の文脈維持は最大の課題の一つでした。従来のシステムでは、会話履歴の管理にコストや外部依存性が伴い、特に日本語での高精度な長期記憶を実現することが困難でした。
重要用語解説
- Claude Code: AIによるコード生成・補完を支援するツール。対話形式で開発プロセスをサポートし、ユーザーが作業を進める際の文脈理解能力が求められる。
- 永続記憶システム: セッションの終了や再起動を経ても、過去の会話履歴や決定事項といった情報を保持し、AIモデルに引き継ぐ仕組み。LLMの実用化における重要な課題の一つ。
- SQLite FTS5: 軽量な組み込みデータベースであるSQLiteが持つ全文検索エンジン(FTS5)。ローカル環境で高速かつ高精度なキーワードベースのテキスト検索を可能にする技術。
今後の影響
本システムは、AIツールの実用性を飛躍的に向上させ、特に開発現場での長期的なプロジェクト管理に革命をもたらす可能性がある。ローカル完結型であるためセキュリティ面での懸念が少なく、企業や機密性の高いデータを取り扱う環境への導入が進むと予想される。