「セッションが長くなると、なぜかバカになる」——Claude Codeを使っていると感じる典型的な現象です。
これはモデルの問題ではなく、コンテキスト管理の問題です。Anthropic社員のThariq氏が発信した内容(54万ビュー)をもとに、正しいセッション管理を解説します。
コンテキスト腐敗(Context Rot)とは
Claude Codeのコンテキストウィンドウは100万トークンですが、約30〜40万トークン付近から注意が分散し始め、古い・無関係な情報がノイズになります。これがコンテキスト腐敗です。
コンテキストはハードカットオフ(上限到達で強制終了)なので、上限に近づく前に対処が必要です。
1ターン終了後の5択
Claudeが1つのタスクを終えたとき、次に何をするかが最も重要な判断ポイントです。
1. Continue(続行)
同じセッションでそのまま次のメッセージを送る。関連するタスクが続く場合はこれが最も効率的。
2. /rewind(Escキー×2)
過去の任意のメッセージまで巻き戻し、それ以降のメッセージをコンテキストから完全削除します。
❌ 普通の反応:「それじゃダメだった。代わりにXを試して」
→ 失敗したアプローチのログがコンテキストに残り続ける
✅ rewindの使い方:ファイル読み込み直後まで巻き戻して再指示
→ 「アプローチAは失敗。fooモジュールはそれを公開していない。Bで直接行って」
→ 失敗した試行のトークンが消え、クリーンな状態で再挑戦できる
Thariq氏が「良いコンテキスト管理を示す最大の習慣」として挙げた機能です。
3. /clear(新規セッション)
自分で重要な情報を書き出し、まっさらなセッションを開始します。
例:「リファクタ対象はauth middleware、制約はX、
関連ファイルはAとB、アプローチYは除外済み」
手間はかかりますが、コンテキストの内容を自分で完全にコントロールできます。
4. /compact(圧縮)
Claudeにこれまでの会話を要約させ、その要約の上に会話を続けます。
/compact auth周りのリファクタに集中して、テストのデバッグは削除して
重要:方向性を添えると精度が上がります。 また、コンテキストが苦しくなってから実行すると品質が下がります(コンテキスト腐敗が進んだ状態のモデルが要約するため)。余裕があるうちに実行するのが正解です。
5. サブエージェント
次の作業チャンクを独自のクリーンなコンテキストを持つエージェントに委任し、結果だけを親セッションに返します。
判断基準: 「この出力、後でまた必要か?結論だけでいいか?」→ 結論だけなら委任。
指示例:
「サブエージェントで別コードベースのauth flowを読んで要約して、
それを参考に同じ実装をして」
「サブエージェントでgitの差分からドキュメントを生成して」
判断フロー早見表
| 状況 | 対処 |
|---|---|
| タスクが変わった | /clear — 自分でコンテキストをまとめて新規開始 |
| アプローチが失敗した | Esc×2(rewind)— 失敗ログを削除して再挑戦 |
| セッションが長くなった | /compact 方向性を添えて — 余裕があるうちに |
| 中間出力が大量に出る作業 | サブエージェントに委任 |
| 関連タスクで流用できる | そのまま続行 |
新しいセッションを始めるべきタイミング
Thariq氏の経験則:「新しいタスクを始めるなら、新しいセッションも始めるべき」
ただし例外あり。機能を実装した直後にドキュメントを書く場合など、コンテキストを共有できる関連タスクは続行した方が効率的です。