Claude Codeの記憶をWindowsとMacで共有する仕組みを作った
はじめに
Claude Codeを複数マシンで使っていると、「片方で議論した内容を、もう片方が覚えていない」という問題が起きます。CLAUDE.mdでプロジェクトのルールは共有できますが、会話の文脈は共有できません。
この問題を解決するために、セッションの記憶をマシン間で自動同期する仕組み(memory-engine)を自作しました。
アイデア元
きっかけは @noprogllama さんの sui-memory です。SQLite + FTS5 + sqlite-vec + 日本語埋め込みモデル(Ruri v3)で、LLMを使わずに記憶の保存・検索を実現する設計に共感しました。
ただ、自分の環境はWindowsとMacの2台体制。1台完結の設計をマシン間同期に拡張する必要がありました。
設計のポイント
核心は3つです。
- SQLiteは同期しない — バイナリファイルはGitで差分マージできないため、2台が別々に変更するとどちらかの変更が消える
- JSONLを正本にする — SQLiteはローカルのキャッシュ。セッション開始時にJSONLからDBを毎回再構築する
- マシン別JSONLで競合回避 —
2026-03_mac-home.jsonlと2026-03_windows-home.jsonlのように分けることで、Gitのコンフリクトがゼロになる
セッション終了(Mac) セッション開始(Windows)
──────────────────── ─────────────────────────
会話ログ → チャンク化 git pull
→ 埋め込み → SQLite保存 ↓
→ JSONL追記 → git push JSONLからSQLite再構築
→ 検索可能な状態
埋め込みベクトルもJSONLに含めているため、別マシンではモデルをロードせずにDBを構築でき、起動が速いのもポイントです。
検索と運用
検索はsui-memoryと同じハイブリッド方式(FTS5キーワード検索 + ベクトル類似検索 + RRF統合 + 時間減衰)を採用。Claude CodeのSkillとして実装し、「思い出して」と言えば必要な記憶だけを引き出せます。
月次でGoogle Drive上のアーカイブDBにマージする仕組みも入れており、ローカルDBの肥大化を防いでいます。
まとめ
全体で914行のPythonコードで動いています。設計の詳細や実装コードは、Zennに詳しく書きました。
詳細記事: Claude Codeの長期記憶をWindowsとMacで共有する仕組みを作った(Zenn)
CLAUDE.mdでルールを共有し、memory-engineで会話の記憶を共有する。この組み合わせで、複数マシンでのClaude Code運用が快適になりました。