0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Claude Code の自動コンテキスト圧縮(Auto-Compact)対策 — 長時間セッションで消えるツール結果と再読み込みの3つのハマりどころ【2026】

0
Posted at

はじめに / 対象と前提

対象読者:Claude Codeを長時間(1セッション30分〜数時間)使う人。大きめのリファクタや複数ファイルにまたがる調査タスクで「さっき読んだファイルの内容をClaudeが忘れる」「途中から的外れな回答が返ってくる」経験がある人向け。

前提環境:Claude Code CLI(2026年7月時点の安定版)。コンテキストウィンドウの仕組みに依存する現象のためOS非依存。

TL;DR

  • Claude Codeはコンテキストウィンドウが埋まると、古いメッセージを要約して圧縮する「Auto-Compact」が走る
  • 圧縮後はツールの実行結果(ファイル内容やgrep結果)が要約されて詳細が失われることがある
  • 「圧縮されても壊れない」タスク設計(状態をファイルに逃がす・サブエージェントに切り出す)で事故が減る

手順 / 動かし方

1. 圧縮が起きているか確認する

セッションが長くなってきたら、コンテキスト使用量の表示を見る。8〜9割を超えたあたりからAuto-Compactが発動しやすい。

/context

2. 圧縮タイミングを自分でコントロールする

Auto-Compact任せにすると、ツール呼び出しの途中などキリの悪いタイミングで圧縮が挟まる。区切りの良いところで自分から打っておくと要約が安定しやすい。

/compact

3. 「状態」を会話に頼らずファイルに逃がす

進捗や調査結果をClaudeの記憶(会話履歴)だけに頼らず、Markdownファイルに書き出す。

<!-- progress.md -->
## 調査済みファイル
- src/api/user.ts: 認証ロジックあり、要リファクタ箇所はL45-80
- src/api/order.ts: 未調査

## 次にやること
- order.tsのN+1クエリを確認する

圧縮後に progress.md をReadし直せば、要約で失われた詳細を復元できる。

4. 大きな調査はサブエージェントに切り出す

独立した調査(ファイル探索・grepなど)はサブエージェントに投げ、戻ってきた要約だけを親セッションで持つ。親セッションのコンテキスト消費が減り、圧縮の頻度自体を下げられる。

ハマりどころ

1. 圧縮後、Claudeが「読んだはずのファイル」の中身を微妙に誤る

症状:圧縮前にReadした長いファイルについて、圧縮後は行番号やコードの細部を間違えて答える。

原因:Auto-Compactはツール結果も要約するため、具体的な変数名や行番号が丸められる。

回避策:重要なファイルは圧縮後に再度Readさせる。「さっき見た〇〇をもう一度読んで」と明示的に頼むのが確実。

2. /compact 直後にtool_useとtool_resultの対応が崩れてAPIエラーになる

症状:/compact 直後、まれにtool_use idに対応するtool_resultが見つからない、という趣旨のエラーで応答が止まる。

原因:圧縮のタイミングがツール呼び出しと結果の間に割り込むと、要約後の履歴でペアが崩れる。

回避策:ツール呼び出しの結果待ちの最中に打たない。エラーが出たら /clear して再開するか、直前の指示を出し直す。

3. サブエージェントの結果は親に「要約」でしか残らない

症状:サブエージェントに詳細な調査をさせたのに、戻ってきた情報が思ったより粗い。

原因:サブエージェントの実行過程(何をgrepしたか)は親のコンテキストに入らず、最終的な返答だけが残る仕様のため。

回避策:「該当箇所のファイルパスと行番号を必ず含めて返して」など返す内容を指示で明示する。粗ければ親セッション側で該当ファイルを直接Readし直す。

背景・補足

コンテキストウィンドウは有限で、会話が長くなるほど古い情報の保持コストが増える。Auto-Compactは「動かなくなるよりはマシ」という設計判断であり、要約による情報のロスはトレードオフとして受け入れる必要がある。圧縮に強いタスク設計をしておくこと自体が、長時間の作業を安定させる実践的なテクニックになる。

まとめ

  • Claude CodeのAuto-Compactは長時間セッションで避けられない挙動
  • 圧縮後はツール結果の細部が失われることがあるので、重要な情報は都度ファイルに書き出す
  • /compact はキリの良いタイミングで自分から打つ、ツール呼び出し中は避ける
  • 独立した調査はサブエージェントに切り出し、親セッションのコンテキスト消費自体を減らす
  • これらを徹底すると、数時間かかるリファクタ作業でも「途中から様子がおかしい」を防ぎやすい
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?