検索
ニュース

「100万トークンはAIのコンテキストを腐らせる」 Claude Codeを賢く保つ5つの選択肢と使い分け方自動要約(autocompact)が失敗する原因

Anthropicはエージェント型コーディングツール「Claude Code」のセッション管理とコンテキストウィンドウ管理について解説した。100万トークンのコンテキストウィンドウを活用しつつ、5つの選択肢を使い分けることが作業結果を大きく左右するとしている。

Share
Tweet
LINE
Hatena

 Anthropicは2026年4月15日(米国時間)、エージェント型コーディングツール「Claude Code」のセッション管理と100万トークンのコンテキストウィンドウ管理について解説した。コンテキストウィンドウの利用状況を把握するための新しいスラッシュコマンド「/usage」もリリースしている。

 Anthropicによると、セッション管理には利用者ごとに多くのやり方があり、1〜2つのセッションを開いたまま使う利用者もいれば、プロンプトごとに新しいセッションを始める利用者もいるという。

コンテキストウィンドウの中身と「コンテキストロット」(文脈の腐敗)

 コンテキストウィンドウは、モデルが応答を生成する際に「見える」全ての範囲を指す。システムプロンプト、会話履歴、ツール呼び出しとその出力、読み込んだファイルが含まれる。Claude Codeは100万トークンのコンテキストウィンドウを備えている。


Claude Codeのコンテキストウィンドウに含まれる要素(提供:Anthropic

 コンテキストが肥大化すると、「コンテキストロット」(context rot:文脈の腐敗)という副作用が発生する。モデルの注意が多くのトークンに分散し、古くて関係のない情報が現在のタスクの妨げとなる現象だ。コンテキストウィンドウの上限に近づくと、作業内容は自動要約(autocompact)され、新しいコンテキストウィンドウで作業が継続される。要約機能は手動でトリガーできる。


自動要約(autocompact)のイメージ(提供:Anthropic

各ターンで選択できる5つの選択肢

 Anthropicは、プロンプト送信後にユーザーが取れる選択肢を5つ示した。


プロンプト送信後に選べる5つの選択肢と、それぞれが引き継ぐコンテキストの量(提供:Anthropic
  1. 「/clear」コマンド
    新しいセッションを開始する。学んだ内容から要点を抽出して引き継ぐ
  2. 「/compact」コマンド
    これまでのセッションを要約し、要約の上で作業を継続する
  3. サブエージェント
    クリーンなコンテキストで動く下位エージェントに処理を委譲し、最終結果だけを親に戻す
  4. 「/rewind」コマンド(ショートカット:[Esc]キー2回)
    以前のメッセージまで巻き戻して再プロンプトする。巻き戻し地点以降の古いメッセージはコンテキストから破棄される
  5. 現状維持で続行
    同じセッションで次のメッセージを送る。最も自然な選択肢

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

 Anthropicは「新しいタスクを始めるときは新しいセッションで始める」を一般原則としている。100万トークンのコンテキストウィンドウによってフルスタックアプリ構築など長期タスクも信頼性高く実行できるが、コンテキストロットが発生する可能性がある。

 一方、実装した機能のドキュメント作成など関連タスクでは、新セッションを始めるとファイルを読み直す必要があり、既存セッション継続の方が効率的な場合もある。

上書き指示の代わりに/rewindコマンドを使う

 Anthropicによると、/rewindコマンド(または[Esc]キー2回)は修正作業で有効な選択肢だという。

 例えば、Claudeが5つのファイルを読み、あるアプローチを試して失敗した場合、「うまくいかなかったのでXを試して」と指示するより、ファイル読み込み直後に/rewindして「アプローチAは使わない。モジュールが対応していないため、Bを直接使って」と再指示する方が効率的だ。

 「Summarize from here」(ここから要約して)と/rewindを併用することで、過去に戻るだけでなく、その時点までの試行結果を要約し、次に引き継ぐためのメッセージを生成できる。


/rewindコマンドが有効なケース(提供:Anthropic

 これは、うまくいかなかった試行を踏まえた「学習結果の整理」と「次の指示」をまとめて残すフローであり、「未来の自分」が「過去の自分」に助言を送るようなものだという。

/compactコマンドと/clearコマンドの使い分け

 セッションが長くなった場合にコンテキストを削減するには/compactコマンドと/clearコマンドの2つがある。

 /compactコマンドはモデルに会話を要約させ、履歴をその要約に置き換える処理で、重要な情報が漏れるリスクはあるが、ユーザーが自分で書く手間がない。指示を渡して方向付けも可能だ。

 /clearコマンドはユーザー自身が「重要な事項」を書き出してクリーンな状態から始める。手間はかかるが、残るコンテキストはユーザーが決めたものになる。

自動要約(autocompact)が失敗する原因

 autocompactが失敗する主な原因は次の2点だ。

 1つ目は、将来のタスクの方向性をモデルが予測できないことだ。autocompactは過去の会話を要約する処理だが、その時点では次に何をするかは確定していない。そのため、現在のコンテキスト(例えばデバッグ作業)に関連する情報が優先され、別の問題(例えば他ファイルの警告など)は重要でないと判断されて削除されることがある。

 2つ目は、autocompact実行時は、モデルの性能が最も低い状態であることだ。長時間のセッションによってコンテキストが肥大化した状態では、コンテキストロットが発生し、注意の分散によってモデルの判断精度が低下する。その結果、重要な情報の取捨選択を誤りやすくなる。

 これらが重なることで、例えば長時間のデバッグ後、別の問題に切り替える場面では、必要な情報が要約から抜け落ちてしまうことがある。

 対策としては、autocompactに依存せず、早い段階で意図を明示して手動で/compactコマンドを実行することが有効だ。これにより、残すべき情報を制御できる。

サブエージェントの活用

 サブエージェントは、多くの中間出力が生成されるが後で必要ない作業に適している。Claude CodeはAgentツールを介してサブエージェントを生成し、サブエージェントは独自のコンテキストウィンドウを持つ。最終的な報告だけが親に戻される。

 Anthropicは「このツール出力は再度必要とするか、結論だけでよいか」をサブエージェント利用の判断基準としているという。


親エージェントの中間出力を増やさずにサブエージェントに処理を委譲する仕組み(提供:Anthropic

 Claude Codeは自動でサブエージェントを起動するが、必要に応じてユーザーが明示的に指示することもできる。例えば、「成果物の検証をサブエージェントに任せる」「別のコードベースを調査、要約させた上で実装させる」「変更内容を基にドキュメント作成を任せる」といった作業を分割、委任できる。

場面別の使い分け方

 Anthropicは場面別に推奨する機能を次のように整理している。

  • 同じタスクで既存のコンテキストが有用
    →そのまま続行する
  • Claudeが誤った方向に進んだ
    →/rewindコマンドで巻き戻し、有用なファイル読み込みは維持する
  • タスク途中で古いデバッグや探索でセッションが肥大化
    →/compactコマンドで要約する
  • 本当に新しいタスクを始める
    →/clearコマンドで完全にリセットする
  • 大量の中間出力が発生するが結論だけ必要
    →サブエージェントに委譲する

Copyright © ITmedia, Inc. All Rights Reserved.

ページトップに戻る