Claude Code / Hooks

会話が圧縮されても
文脈を失わない仕組み

Claude Codeの会話が長くなると、過去のやり取りは自動で要約に圧縮され、細部が消えます。圧縮の直前に生ログを丸ごと保存し、圧縮の直後に必要な分だけ読み戻す——その2つのフックの共有ページです。

公開 2026-08-28 対象 Claude Code (hooks) 依存 Python 3 のみ
導入したい人へ — AIに渡すだけ

仕組みを理解しなくても大丈夫です。自分のClaude Codeに次の一文を送ると、AIが手順書を読んで設置からテストまで行います。

次のURLの手順書を読んで、この仕組みを私の環境に導入してください。既存の設定は壊さず、保存先はあらためて私に確認してください。 https://cc-session-notes.pages.dev/SETUP.md

手順書(SETUP.md)はAI向けに書かれた自己完結の導入ガイドです。スクリプト全文・設定・テスト方法・注意点を含みます。

01何が問題か

会話が一定の長さを超えると、Claude Codeは過去のやり取りを要約に置き換えます(コンテキスト圧縮)。要約は全体像を保ちますが、直近の細かい決定・言い回し・温度感は落ちます。「さっき決めたはずのことを覚えていない」という体感はここから来ます。

この仕組みがやること

圧縮の直前に会話全文をディスクへ保存し、圧縮の直後にその末尾4,000字だけを新しいコンテキストへ差し込みます。圧縮直後のAIの手元には「要約」と「直前のやり取りの原文」の両方が置かれ、要約で丸められる部分を原文が補います。

02全体の流れ

CONVERSATION DISK 長くなった会話 full context 圧縮(要約化) auto / manual 要約 + 生ログ末尾 restored ① PreCompact で保存 ② SessionStart で読み戻し ~/claude-session-notes/ 2026-08-28_143856_auto_75321890.md
  1. 01
    圧縮の直前にログを丸ごと保存

    Claude Codeが圧縮を始める前に PreCompact フックが発火し、その時点の会話全文をMarkdownで書き出します。手動の /compact でも、自動圧縮でも同じように動きます。

  2. 02
    圧縮が実行される

    過去のやり取りが要約に置き換わります。ここで細部が失われますが、生ログはすでにディスク上にあります。

  3. 03
    圧縮の直後に末尾だけ読み戻す

    SessionStart フック(matcher: "compact" により圧縮起因の再開だけに反応)が、いま保存されたばかりのファイルを探し、末尾4,000字を新しいコンテキストへ差し込みます。

  4. 04
    足りなければ全文を読みに行く

    注入されるのは末尾だけです。それより前の文脈が要るときは、CLAUDE.md に書いたルールに従ってAIが自分でファイル全体を開きます。

03構成要素

保存スクリプト~/.claude/precompact_snapshot.py
復元スクリプト~/.claude/postcompact_context.py
フック登録~/.claude/settings.json
保存先(既定)~/claude-session-notes/
ファイル名日時_トリガー_セッションID8桁.md
読み戻しルールCLAUDE.md に追記

設定はすべてユーザーグローバル(~/.claude/)に置くため、全プロジェクト・全セッションに適用されます。フック登録の要点は次の1行です。

// 通常のセッション開始では発火せず、圧縮を挟んだ再開のときだけ読み戻す
"SessionStart": [
  { "matcher": "compact",
    "hooks": [{ "type": "command",
      "command": "python3 ~/.claude/postcompact_context.py" }] }
]

04設計上の判断

注入量の上限4,000字
対象とする鮮度直近30分以内
対象の絞り込み同一セッションIDのみ

なぜ全部戻さないのか

圧縮は「コンテキストが溢れたから」起きます。復元で大量に注ぎ戻すとまた溢れて再圧縮という循環になります。橋を架けるのに必要な最小量だけ戻す設計です。

なぜ30分の期限を付けるのか

鮮度制限がないと、何日も前の別の作業のログが新しい会話に紛れ込みます。誤った文脈を注入するくらいなら、何も注入しないほうが安全です。

失敗しても会話を止めない

両方のスクリプトとも、ログが読めない・保存先が無い・JSONが壊れている——といった場合は黙って終了します。フックのエラーで圧縮そのものがブロックされることはありません。

05導入前に知っておくこと

運用上の注意

会話の全文が平文で残ります。APIキーや個人情報を会話に貼った場合、それもスナップショットに残ります。保存先をDropbox等のクラウド同期フォルダにする場合は、この点を理解したうえで選んでください。

容量は増え続けます。長い会話1件で数MBになります。削除の仕組みは含まれていないため、古いものを定期的に削る運用が要ります(手順書に例を記載)。

作者環境での実績:スナップショット141件(自動圧縮120・手動圧縮20)、総容量91MB。自動・手動の両方で保存と読み戻しの動作を確認済みです。