Claude Codeでrewind、compact等の使い分け、自動圧縮がうまくいかない原因、その回避策

スポンサードサーチ

Claude Codeに限らず、AIを使っていると、入力情報(コンテキスト)が長くなるほど無関係な情報がノイズとなり、処理能力が低下してしまいます。

そのため、定期的にコンテキストの圧縮をしないといけないのですが、どのように管理するのがいいのかについてClaude Codeの公式ブログで解説されていました。

非常に有益な情報でしたので、Claude CodeのブログUsing Claude Code: session management and 1M contextを翻訳してみました。

今回の記事の要約

1. コンテキストの劣化を防ぐには

コンテキストが長くなると、モデルの注意力が分散し、古い情報が現在のタスクの邪魔をする「コンテキストの劣化」が起こります。これを防ぐために、ただ会話を続けるのではなく、以下の機能を使い分けることが推奨されています。

  • /rewind (Esc 2回): 失敗した試行を「修正」するのではなく、失敗する前の時点まで戻って指示を出し直す方が精度が高まります。
  • /clear: 新しいタスクを始める際は、必ずセッションをリセットして「劣化」をゼロにします。
  • /compact: 履歴が肥大化した際、重要な学びだけを要約して残します。自動圧縮に任せず、手動で「〇〇に集中して要約して」と指示を出すのがコツです。

2. 「サブエージェント」でメイン環境を汚さない

「コードの検索」や「ドキュメント作成」など、過程(ログ)は長いが結論だけ知りたい作業は、サブエージェントに丸投げするのがベストです。

サブエージェントが別ウィンドウで作業し、結果だけをメインセッションに持ち帰ることで、メインのコンテキストをクリーンに保てます。

3. 判断の基準:表形式まとめ

翻訳記事の最後に、表形式のまとめがありますのでご覧ください。

  • 同じタスクでも、コンテキストがまだ重要Continue(継続)
  • Claudeが間違った方向に進んだRewind(巻き戻し)
  • タスクの途中だが、古いデバッグや探索でセッションが肥大化した/compact <hint>
  • 純粋に新しいタスクを始める/clear
  • 次のステップで大量の出力が出る(検索、検証、執筆など)Subagent(サブエージェント)

結論: 「100万トークンあるから何でも詰め込む」のではなく、「今、Claudeに何を見せるべきか」を能動的にコントロールすることが、開発効率を劇的に高める鍵となります。

【翻訳記事】Claude Codeの活用:セッション管理と100万トークンのコンテキスト

Claude Codeにおけるセッション、コンテキスト、そして「圧縮(Compaction)」をどう管理するかは、あなたが思う以上に結果を左右します。あらゆる場面で正しい判断を下すための実用ガイドをご紹介します。

私たちは、Claude Codeの使用状況を把握するための新しいスラッシュコマンド /usage をリリースしました。この機能は、多くのお客様との対話から生まれたものです。

そこで繰り返し話題に上がったのは、ユーザーがセッションを管理する方法に大きなばらつきがあるという点です。特に、Claude Codeでコンテキスト容量が100万に拡張された今回のアップデート後は顕著です。

  • ターミナルで1つか2つのセッションを開きっぱなしにしますか?
  • プロンプトごとに新しいセッションを開始しますか?
  • compact(圧縮)、rewind(巻き戻し)、subagents(サブエージェント)をいつ使いますか?
  • compactやセッションがうまくいかない原因は何ですか?

ここには、Claude Codeでの体験を大きく左右する驚くほど多くの詳細があり、そのほとんどはコンテキストウィンドウの管理に起因しています。

コンテキスト、圧縮、コンテキストの劣化に関する簡単な解説

コンテキストウィンドウとは、モデルが次の回答を生成する際に一度に「認識」できるすべての情報を指します。これにはシステムプロンプト、これまでの会話、すべてのツール実行とその出力、読み込まれた全ファイルが含まれます。Claude Codeのコンテキストウィンドウは100万トークンです。

残念ながら、コンテキストが増えるとパフォーマンスにわずかな影響が出ます。これはしばしば「コンテキストの劣化(Context Rot)」と呼ばれます。コンテキストの劣化とは、コンテキストが肥大化すると、モデルのパフォーマンスが低下する現象です。これは注意がより多くのトークンに分散してしまい、古くて無関係なコンテンツが現在のタスクの邪魔するためです。

コンテキストウィンドウには物理的な限界(カットオフ)があるため、上限に近づくと、作業していたタスクが自動的に要約され、新しいコンテキストウィンドウで作業が継続されます。これを「圧縮(Compaction)」と呼びます。この圧縮は、ユーザーが手動で実行することも可能です。

すべてのやり取りが分岐点となる

例えば、Claudeに依頼して作業が完了した直後、コンテキスト情報(ツール呼び出し、ツール出力、指示など)が得られ、次に何をすべきかについて驚くほど多くの選択肢が生まれます。

  • Continue(継続): 同じセッションで次のメッセージを送る。
  • /rewind (Esc 2回): 以前のメッセージまで戻り、そこからやり直す。
  • /clear: 学んだことを簡潔にまとめた指示(ブリーフ)を携えて、新しいセッションを開始する。
  • Compact(圧縮): これまでの会話を要約し、その要約の上で作業を続ける。
  • Subagents(サブエージェント): 次の作業をクリーンなコンテキストを持つ別エージェントに任せ、結果だけを受け取る。

最も自然なのは「継続」ですが、状況に応じて対処できるように、他の4つの選択肢も用意されています。

新しいセッションを開始するタイミング

長いセッションを続けるべきか、新しく始めるべきか。私たちの一般的な目安としては、新しいタスクを始めるなら、新しいセッションも開始すべき、というものです。

100万トークンのコンテキストウィンドウによって、フルスタックアプリをゼロから構築するような長いタスクも確実に行えますが、コンテキストの劣化が発生する可能性があります。

ただし、タスクが関連しており、一部のコンテキストが必要な場合もありますが、常にそうとは限りません。例えば、実装したばかりの機能のドキュメントを書く場合などです。新しいセッションを開始することもできますが、その場合、Claudeは実装ファイルを読み直す必要があり、処理速度が遅くなり、コストも高くなります。

修正ではなく巻き戻し(Rewind)を

Claude Codeでは、Escを2回押す(またはコマンドで /rewind を実行する)と、前のメッセージに戻ってプロンプトを出し直せます。それ以降のメッセージはコンテキストから削除されます。

多くの場合、修正を重ねるよりも巻き戻す方が賢いアプローチです。例えば、Claudeが5つのファイルを読み込み、ある手法を試したが失敗したとします。

  • 良くない対応: 「今のやり方はダメだ、代わりにXを試して」と入力する。
  • 良い対応: ファイルを読み込んだ直後まで「巻き戻し」、そこから得られた情報に基づいて再度プロンプトを表示することです。「手法Aは使わないでください。fooモジュールにはその機能がありません。直接Bの手法を試してください。」

また、summarize from here(ここから要約)や /rewind コマンドを使って、学んだことを要約した「引き継ぎメッセージ」を作成させることもできます。これは、失敗した未来の自分から、過去の自分へのアドバイスのようなものです。

圧縮(Compact)と新規セッション(Clear)

セッションが長くなった際、不要なコンテキストを削ぎ落とす方法は2つあります。/compact/clear(新規セッション) です。これらは似ているように感じますが、挙動は大きく異なります。

  • /compact: モデルに会話を要約させ、履歴をその要約に置き換えます。これは情報損失はありますが、自分で書く手間が省け、Claudeが重要な学習内容やファイルを漏らさず含めてくれる可能性があります。また/compact focus on the auth refactor のように指示を出して制御することも可能です。
  • /clear: あなたが「何が重要か」を書き出し(例:「認証ミドルウェアをリファクタリング、制約はX、関連ファイルはAとB、手法Yは除外」など)、クリーンな状態で開始します。手間はかかりますが、結果として得られるコンテキストは、何が重要かをあなたが完全に判断した内容にできます。

なぜ「自動圧縮(autocompact)」で失敗するのか?

長時間実行されるセッションを頻繁に実行している場合、圧縮処理が特にうまくいかない場合があることに気づくかもしれません。このような場合、モデルが処理の方向性を予測できていないときに、圧縮処理がうまくいかないことがわかっています。

上記の例では、長時間のデバッグ作業が続いた後に自動圧縮(autocompact)が走り、調査結果が要約されます。その直後にあなたが「ところで、さっき bar.ts で見かけた別の警告も直して」と言ったとします。

しかし、そのセッションはデバッグに集中して要約を行ったため、その別の警告は要約から削除されている可能性があります。

これは特に難しい問題です。なぜなら、コンテキストの劣化により、モデルは圧縮時に最も知能が低い状態になるからです。コンテキストが100万トークンある現在は、自動圧縮を待つのではなく、次に何をしたいかを説明した上で能動的に /compact を実行する時間を確保できます。

サブエージェントと新しいコンテキストウィンドウ

サブエージェントは、ある作業によって、二度と必要にならない大量の中間出力を生成することが事前に分かっていて、最終的な結論だけ分かればいという場合に、うまく機能する傾向があります。

Claudeが、エージェントツールを使ってサブエージェントを起動すると、そのサブエージェントは独自の新しいコンテキストウィンドウを取得します。サブエージェントがそこでどれだけ作業をしても、親エージェントに戻ってくるのは、結果を統合した最終レポートだけです。

Anthropicで私たちが使っている判断基準は、「このツールの出力結果そのものが再び必要になるだろうか、それとも結論だけが必要だろうか?」というものです。 

Claude Codeはサブエージェントを自動的に呼び出しますが、明示的に呼び出すように指示することもできます。たとえば、次のように指示することができます。

  • 「以下の仕様ファイルに基づいて、この作業の結果を検証するためのサブエージェントを起動してください。」
  • 「別のコードベースを読み込み、その認証フローの実装方法を要約した上で、同じ方法で実装するサブエージェントを起動してください。」
  • 「私のgitの変更に基づいて、この機能に関するドキュメントを作成するために、サブエージェントを起動してください。」

まとめ

どのコンテキスト管理機能を使用すべきかを選択するのに役立つよう、一般的な状況、使用すべきツール、およびその理由をまとめた便利な表を作成しました。 

状況検討すべき対応理由
同じタスクでも、コンテキストがまだ重要Continue(継続)ウィンドウ内のすべての情報が依然として必要。再構築のコストを払う必要はない。
Claudeが間違った方向に進んだRewind(巻き戻し)有益なファイル読み込み結果は残し、失敗した試行を捨て、そこから得られた情報を基に再プロンプトを行う。
タスクの途中だが、古いデバッグや探索でセッションが肥大化した/compact <hint>低コスト。Claudeが重要事項を判断。必要なら指示で誘導。
純粋に新しいタスクを始める/clear劣化ゼロ。何を引き継ぐかを完全にコントロールできる。
次のステップで大量の出力が出る(検索、検証、執筆など)Subagent(サブエージェント)中間のノイズは子プロセスのコンテキスト内に留め、結果だけを親に戻す。

皆さんが何を作り上げるか楽しみにしています。今すぐ Claude Code を始めましょう。

AI時代だからこそ、戦略は人と一緒に考えることが、最初の一歩です。

開発やコンテンツ生成はAIが担える時代になりました。しかし、何を作るか・どこを目指すかという問いに答えるのは、依然として人の仕事です。

DX推進や新規事業の立ち上げで壁にぶつかる企業の多くは、ソリューションの導入や社内人材への丸投げに終始し、課題の本質が言語化されないまま進んでしまっています。

経営とITの両方を理解した人間が、経営者と並走しながら要求定義・要件定義の段階から一緒に考える。AIはこのプロセスを補助できますが、主役にはなれません。

まだ課題が言語化できていない段階からでも、遠慮なくご相談ください。一緒に考えます。

AIが生成できないのは「実績と信頼」

ECサイトやマーケットプレイスサイトはCS-Cart国際版(公式)という選択肢

AIはコードを書けます。しかし、長年の実運用で磨かれたロジックや、世界中の事業者が検証したセキュリティを、プロンプト一つで再現することはできません。

CS-Cart国際版(公式)は、自社EC・越境EC・BtoB EC・マーケットプレイスに対応した豊富な実績ある機能をパッケージとして提供しています。

構築コストを抑えながら、堅牢なECサイトを立ち上げることができます。

スポンサードサーチ