そもそも圧縮 (compaction) とは
そもそも対話型モデルはそこまでの対話ログを全て文脈として読み込んで応答すべき内容を応答しますが、システム側で適宜対話ログを短い要約に置き換える運用がよくなされます。Claude Code にもこのような要約置き換え機能が組み込まれており「圧縮 (compaction)」と名付けられていると思います。手動トリガーも自動トリガーもできます。
この要約は必ずしも人間に読める自然言語で書かれていなくてもいい気がしますが、少なくとも Claude Code の自動圧縮は人間に読める自然言語で要約されます (日本語対話が英語混ざりで要約されているので人間に読みにくいは読みにくいかもしれないです)。
一般の対話システムでは「直近何ターンの対話は保持し、それより過去を要約する」など、色々な要約の戦略があり得ると思いますが、今手元にある Claude Code 組込みの圧縮をみると、私からの最後の指示は完全に保持されていましたが、それへの最後のシステム応答及びそれより前の対話は完全には保持されていませんでした。もっとも、手動トリガー時は指示を追加できるので、必要なら「直近 n 往復の対話は完全に保持せよ」などと言えるとは思います。実際にどうなるかはやってみていないのでわかりません。
なぜ圧縮するのか
Claude Code のドキュメントの Compaction overview には、"response quality degrades as a conversation grows" (対話ログが伸びると応答品質が低下します) とあります。
これはつまり、一般に対話型モデルで対話ログが伸びると、それだけ大量の背景情報をエージェントに共有できる一方で、そのせいでエージェントにとって真に必要な情報がどれか曖昧になりうるし、「さっきはこう言ったがやはりこうして」のようにログ内に陳腐化情報も増えうるし、曖昧や矛盾抜きに長い文脈の中盤の情報は活用しにくいという研究 (Lost in the Middle) もあるし、そんなこんなで応答品質が劣化しうるということだと思います。
そもそも、サーバ側の負担を考えれば延々と会話ログを処理させ続けるわけにいかないし、時間あたりにやり取りできるトークン量が限られている場合も多いので、何にせよどこかで圧縮が必要になることはわかると思います。
運用方法の選択肢
Claude Code には組込みの圧縮を手動トリガーするコマンド /compact があり (引数でどう圧縮してほしいか指示もできます)、自動トリガーさせることもできるので (というよりデフォルトでは自動トリガーされるので禁止するには /config から Auto-compact を false にする必要がある)、以下の運用方法があると思います。
- A. 何トークンで自動圧縮するかを設定し (
/autocompactで選択)、自動圧縮させる。 - B. 自分でタイミングを見て手動圧縮する。
-
C. 自力で文脈を管理する。
- 対話ログが伸びてきたら、独自形式の引継ぎ資料を書かせて文脈をクリアするなど。
これらの運用方法は排他的ではなく、全部併用することもできます。ただ実際には、手動圧縮や自力管理をしたい場合は、自動圧縮を禁止するような気はします。
なお、ドキュメントの圧縮後に残るものによれば、圧縮後に CLAUDE.md やスキル説明文は再注入されますが、パス付きルールやサブディレクトリ以下の CLAUDE.md は再度必要になったときにロードされるようです。ここまで聞くと通常の起動に要約が載るだけのようにみえますが、それに加えて最近読んだファイルの 5 件まで保持とか、ロード済みスキルはスキルごとに 5000 トークンでキャップして保持とかもあるようなので、適宜留意が必要です。
どんなユースケースではどの運用が向くか
- そもそもエージェントへの依頼の一つ一つを短く終わらせる習慣がついていれば、圧縮を意識する必要はないと思います。
- そもそも作業がひと段落したら
/clearで文脈をクリアするのがよいと思います。 - 応答精度より対話継続が重視されるケース (アイデア出しなど) は A. が向くと思います。
- 複数マシンで作業しうる場合には、文脈を運搬できるように C. で引継ぎ資料を明示的に書かせて Git 管理するのがよいと思います。
- 込み入った定理群の証明を追っているなど、自動圧縮されると困る場合も C. か B. で運用する必要があると思います。
- B. はあらゆる運用時に補助的に使用しやすいと思います。
そうなると、「アイデア出しエージェントでは自動圧縮をオンにし、数学教師エージェントでは自動圧縮を禁止しよう」となりますが、おそらく現在は「プロジェクト設定では自動圧縮をオンにし、エージェントごとに (プロジェクトより短い) autoCompactWindow を設定する」しかできず、自動圧縮禁止エージェントを混在させることはできなさそうです。
https://github.com/anthropics/claude-code/releases/tag/v2.1.296
Added autoCompactWindow to subagent frontmatter and --agents definitions, so a subagent can auto-compact earlier than the main conversation's window
v2.1.299 (2026-10-14) での放置圧縮の導入 — 20万トークン以上の会話を54分放置すると自動圧縮
Claude Code v2.1.299 (2026-10-14) で、20万トークン以上の会話を54分放置すると自動圧縮される仕様変更が入りました。これを禁止するには settings.json に "idleCompaction": false と書くか、あるいは環境変数 CLAUDE_CODE_IDLE_COMPACT_MIN_TOKENS にかなり大きいトークン量を設定してソフトに禁止する必要があります。
https://github.com/anthropics/claude-code/releases/tag/v2.1.299
Added idle compaction in the terminal: a 200K+ token conversation left idle for about 54 minutes is compacted before its one-hour prompt cache expires, so your next message doesn't reprocess it all
Added CLAUDE_CODE_IDLE_COMPACT_MIN_TOKENS to change idle compaction's 200K-token minimum; "idleCompaction": false in settings.json turns it off. Both need v2.1.290 or later
私は道理で最近、いやに文脈の長さが上限に近づかないと思っていました (リモートコントロールから指示していると右下に使用割合の円が表示されると思います)。上記の仕様変更を知ってセッションログを開くとはたして自動圧縮されており、手元ではその要約は以下の文章で開始していました。私のように放置が多い使用の仕方をしている方は注意が必要です。
This session is being continued from a previous conversation that ran out of context. The summary below covers the earlier portion of the conversation.
なお、v2.1.302 (2026-10-17) で、この放置圧縮を /config コマンドからオフにできるようになりました (Idle compaction を false にする)。
https://github.com/anthropics/claude-code/releases/tag/v2.1.302
Added an Idle compaction row to /config for turning idle compaction off or back on; the notices shown after an idle compaction now say how to turn it off