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つです。

  1. SQLiteは同期しない — バイナリファイルはGitで差分マージできないため、2台が別々に変更するとどちらかの変更が消える
  2. JSONLを正本にする — SQLiteはローカルのキャッシュ。セッション開始時にJSONLからDBを毎回再構築する
  3. マシン別JSONLで競合回避2026-03_mac-home.jsonl2026-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運用が快適になりました。

ソース