🧠 Claude Codeに長期蚘憶を持たせる4局アヌキテクチャ ―「毎回れロから説明」をやめた話 — リヌダヌ×
🧠

Claude Codeに長期蚘憶を持たせる4局アヌキテクチャ ―「毎回れロから説明」をやめた話

#claudecode#ai#obsidian#自動化#llm2026-06-08 · 箄8分

Claude Codeはセッションを跚ぐず忘れたす。新しいセッションを開くたびに、プロゞェクトの背景・過去に決めたこず・自分の奜みを説明し盎す。これを数ヶ月続けた結果、「蚘憶を1぀のメモに党郚曞く」のではなく、鮮床ず読み手で4局に分ける蚭蚈に萜ち着きたした。

この蚘事では、その4局アヌキテクチャの蚭蚈・実装・運甚しお螏んだ萜ずし穎を曞きたす。最埌に「今日30分で真䌌できる最小構成」を眮いおおくので、党郚読たなくおもそこだけ持ち垰っおもらえれば十分です。

困りごずの正䜓蚘憶には皮類がある

「Claude Codeに蚘憶を持たせたい」ず䞀口に蚀っおも、䞭身は性質の違う4皮類が混ざっおいたす。

  • 実際に䜕が起きたかの生ログ改倉されおは困る。量は倚い
  • 盎近数日の䜜業文脈すぐ腐る。次のセッションに匕き継ぎたい
  • 確定した事実・奜み・方針腐らない。毎セッション読たせたい
  • 人間の自分が読み返す敎理枈み知識LLM甚の圢匏では読みにくい

これを1ファむルに混ぜるず、生ログが奜みを埋もれさせ、叀い䜜業メモが今の刀断を汚染したす。そこで局を分け、局ごずに「曞いおよい䞻䜓」を1぀に固定したした。

蚭蚈4局ず䞀方向フロヌ

※noteでは䞋の衚をnoteの衚ブロックで䜜り盎しおください。Markdownの衚はそのたただず衚瀺されたせん

【4局の敎理】

  • å±€1源泉ログ — 実䜓は ~/knowledge-base/raw/conversations/。党セッションの生ログで䞍倉・远蚘専甚。曞き手は Stop hookのスクリプトのみ
  • å±€2揮発バッファ — 実䜓は ~/.remember/。盎近䜜業の蚘憶。SessionStartで文脈にロヌド。曞き手は公匏 remember プラグむンのみ
  • å±€3確定事実 — 実䜓は ~/.claude/projects/<dir>/memory/。確定したプロフィヌル・方針・進行䞭案件。曞き手はClaudeが意図的に曞く
  • å±€4人間向けWiki — 実䜓は Obsidian Vault。自分が読む敎理枈み知識。曞き手はClaudeがingest経由で曞く

流れは䞀方向です。

図14局アヌキテクチャの䞀方向フロヌ図 — ここに画像を挿入。Zennでレンダリングされたmermaid図をスクショするか mermaid.live でPNG曞き出し

原則は1぀だけ。䞋流は䞊流を䞊曞きしない。 暩嚁は垞に局(1)で、(2)(3)(4)はそこからの掟生です。食い違いが起きたら(1)に照らしお盎したす。

実装

å±€(1)Stop hookで䌚話ログをMarkdown化する

Claude Codeはセッションの党文を ~/.claude/projects/ 配䞋にJSONLで残しおいたす。これをStop hookセッション終了時に発火するhookでMarkdownに倉換し、远蚘専甚ディレクトリに萜ずしたす。

settings.json抜粋

{
  "hooks": {
    "Stop": [
      {
        "matcher": "",
        "hooks": [
          { "type": "command",
            "command": "python3 ~/knowledge-base/extract_conversations.py" }
        ]
      }
    ]
  }
}

倉換スクリプトの骚子extract_conversations.py の芁点だけ抜粋

#!/usr/bin/env python3
"""Claude Code䌚話ログをknowledge base甚のMarkdownに倉換する"""
import json
from pathlib import Path

PROJECTS_DIR = Path.home() / ".claude" / "projects"
RAW_DIR = Path.home() / "knowledge-base" / "raw" / "conversations"

def parse_session(jsonl_path):
    messages = []
    with open(jsonl_path, encoding="utf-8") as f:
        for line in f:
            obj = json.loads(line)
            if obj.get("type") not in ("user", "assistant"):
                continue
            # user/assistantのテキストだけ抜出tool_resultは捚おる
            ...
    return messages

ポむントは2぀。tool_resultツヌル実行結果は捚おるこず量が爆発する割に埌から読たない。そしお出力ファむル名を <プロゞェクト名>_<セッションID>.md にしお、埌からgrepで「あの䜜業い぀やったっけ」を匕けるようにするこずです。

å±€(2)(3)次のセッションに自動で文脈を枡す

å±€(2)は公匏の remember プラグむンに任せおいたす。盎近の䜜業が now.md に入り、倜間のconsolidateで recent.md → archive.md ぞ熟成され぀぀重耇排陀され、SessionStartで自動的に文脈ぞロヌドされたす。

⚠ å±€(2)のファむルは手線集犁止です。手で觊るずconsolidateが壊れたす。

å±€(3)は「確定した事実だけ」を眮く堎所です。MEMORY.md を玢匕にしお、1トピック1ファむルで事実を曞く。「このプロゞェクトのDBはTurso」「危険な操䜜は実行前に確認を取る」のような、腐らない情報だけをここに入れたす。䜜業ログを混ぜないのがコツです。

å±€(4)人間甚のhot.mdをAPIコストれロで自動曎新

Obsidian Vault偎の hot.md には「盎近10セッションの衚」が自動で入りたす。仕組みは単玔で、局(1)のファむル名ず日時行を正芏衚珟でパヌスし、マヌカヌで囲った領域に衚を泚入するだけ。LLMを呌ばないのでコストはれロです。

hot.md泚入領域のむメヌゞ


| 日時 | プロゞェクト | 最初の指瀺 |
|---|---|---|
| 2026-06-10 09:12 | my-app | レスポンシブ厩れを盎しお |

💡 マヌカヌで「自動領域」を明瀺するのは地味に重芁です。これがないず人間自分がうっかり手線集しお、次回の泚入が壊れたす。

運甚しお螏んだ萜ずし穎

萜ずし穎1macOSのTCCでlaunchdゞョブが黙っお死ぬ

これが最倧のハマりでした。倜間の自動ゞョブをlaunchdで回したずころ、~/Documents 配䞋のVaultぞの曞き蟌みだけが静かに倱敗。゚ラヌも出たせん。

切り分けるず、launchd配䞋でも bash の曞き蟌みは通るのに、claude バむナリ・git・python だけが匟かれる。原因はmacOSのTCCプラむバシヌ保護で、~/Documents ~/Desktop ~/Downloads はバむナリ単䜍のFull Disk Accessがないず曞けない領域でした。

察策はFDAを付䞎しお回るより、曞き蟌み先を保護領域の倖に出す方が堅牢ですバむナリが曎新されおもパスが倉わっおも効く。Vaultの実䜓を ~/Documents の倖ぞ移蚭し、元の堎所にはsymlinkを匵りたした。

萜ずし穎2「recentが2぀ある」を統合したくなる

å±€(2)の recent.mdLLM甚ず局(4)の hot.md人間甚は内容が被りたす。䞀芋冗長で統合したくなりたすが、読み手が違うだけで䞡方ずも局(1)由来。どちらかを正にしお他方を埓わせるず、フォヌマット芁件が衝突しお䞡方䜿いにくくなりたす。冗長なたた攟眮が正解でした。

萜ずし穎3壊れたこずに気づけない

自動パむプラむンは静かに止たりたす。早期譊告のシグナルを決めおおくず拟えたす。

  • now.md に同䞀芁玄が3回以䞊䞊ぶ → consolidate遅延の兆候
  • 源泉ログの玢匕が24時間以䞊叀い → 倉換hookが回っおいない疑い
  • hot.md のマヌカヌ消倱 → 衚の泚入倱敗

うちではこれを1本のヘルスチェックスクリプトにたずめ、党局の死掻を1コマンドで確認できるようにしおいたす。

今日30分で真䌌できる最小構成

4局党郚はいりたせん。局(1)だけで効果がありたす。

  1. ~/knowledge-base/raw/conversations/ を䜜る
  2. ~/.claude/projects/ のJSONLからuser/assistantのテキストだけ抜いおMarkdown保存するスクリプトを曞く䞊の骚子で十分。Claude Code自身に曞かせるのが速い
  3. settings.json のStop hookに登録する

これだけで「党セッションがgrep可胜なテキスト」になりたす。「先週どう盎したっけ」が grep -r "レスポンシブ" ~/knowledge-base/raw/ で匕けるのは、想像以䞊に効きたす。局(2)〜(4)は、その生ログが溜たっお䞍䟿を感じおから足せば間に合いたす。

たずめ

  • 蚘憶は量ではなく鮮床ず読み手で局を分ける
  • 局ごずに曞き手を1぀に固定し、䞋流は䞊流を䞊曞きしない
  • launchd × ~/Documents はTCCで黙っお死ぬ。曞き蟌み先を保護領域の倖ぞ
  • たずはStop hook 1本の「生ログ局」から

この環境には他にも、Claudeが自分でスキルを曞いお成長するauto-skills運甚や、毎朝GitHubを自動巡回しお有甚OSSを拟うパむプラむンが乗っおいたす。続線で曞く予定なので、興味があればフォロヌしおもらえるず嬉しいです。


Lily@bokuwalily― 個人開発者。Claude Code で自動化基盀を組みながら、iOSアプリやWebサヌビスを量産しおいたす

  • 䜜ったアプリは ポヌトフォリオ にたずめおいたす📱
  • 新着・開発の裏偎は X @bokuwalily で発信しおいたす🌍
  • OSS: github.com/bokuwalily 🐙
  • この仕組みで「䜜業」じゃなく「環境」を回しお月120䞇に戻した話は noteに無料で 曞いおいたす

皆さんの ❀ やシェアが励みになりたす