Claude Codeのコンテキストがいっぱいになったら:圧縮、クリア、新しいセッションの選び方
Claude Codeなどのコーディングエージェントでコンテキストが残り少なくなったときに、圧縮、クリア、新しいセッションのどれを選ぶかを判断し、決定事項を引き継ぎメモに残す方法を説明します。
Claude Codeは、コンテキストウィンドウがほぼいっぱいになると自動で対処します。まず古いツール出力を消し、必要なら会話を要約します。このとき最初のほうの指示が失われることがあるので、その前に自分で選びましょう。同じタスクを続けるなら、残したい内容の指示を添えて/compactを実行します。関係のない作業に移るなら/clearを実行します。エージェントが決定事項を何度も忘れるなら、短い引き継ぎメモを書き、それをもとに新しいセッションを始めます。
ほかのコーディングエージェントではコマンドが違うことがありますが、選択肢は同じです。Monoは、エージェントが使用量を報告する場合にコンテキストの埋まり具合を表示できますが、圧縮やクリアを行うのはエージェント自身です。
1. コンテキストウィンドウを埋めるものを知る
コンテキストには、エージェントが作業に使うものがすべて入ります。あなたのメッセージとエージェントの返答、読み込んだファイル、コマンドやテストの出力、接続したMCPサーバーのツール一覧、開始時に読み込まれる指示ファイルです。長いテストログが1つあるだけで、あなたが入力した内容すべてより多くの容量を占めることもあります。
いっぱいになってきたサインは次のとおりです。
- 前に伝えたルールをエージェントが破る。
- すでに答えた質問をまた聞いてくる。
- コンテキストが残り少ないという警告が出る。
Claude Codeでは、/contextで何が容量を使っているかを確認できます。上限に近づいたときに何が起きるかは、Claude Codeの仕組みの概要で説明されています。
架空の例で考えます。「tidy-recipes」の30個のファイルを、古い日付ヘルパーのoldDate()から新しいformatDate()へ移す作業を始めて2時間がたったころ、エージェントがどのライブラリを使うのかをもう一度聞いてきました。/contextを見ると、ウィンドウはほぼいっぱいです。
2. 圧縮、クリア、新しいセッションから選ぶ
圧縮は、同じセッションの中で会話を要約に置き換えます。クリアや新しいセッションでは会話がなくなりますが、指示ファイルは再び読み込まれます。どれを選んでも、何かが失われます。
| 状況 | すること | 失われるもの |
|---|---|---|
| 同じタスクで、順調に進んでいる | 残す内容を指定して圧縮する | 要約で省かれた細部 |
| 次は関係のない作業 | クリアするか、新しいセッションを始める | 会話全体 |
| エージェントが決定事項を忘れる | 引き継ぎメモを書き、新しいセッションを始める | 引き継ぎメモに書かなかったこと |
要約に残す内容は、/compact Focus on date decisions and failing testsのように指示を添えて伝えます。Claude Codeのコスト管理のガイドにこの方法が載っています。同じガイドでは、/clearの前に/renameでセッションに名前を付けておき、あとで/resumeで開き直せるようにすることも勧めています。
この例では、エージェントがすでに決定事項を1つ忘れているので、引き継ぎメモを書きます。
3. リセットの前に引き継ぎメモを書く
引き継ぎメモは、新しいセッションに渡す短いメモです。自分で書くか、エージェントが書いた下書きを直します。
Goal: Replace oldDate() with formatDate() in recipes/ (30 files).
Done: 18 files, on branch tidy-dates.
Decisions: formatDate() uses Intl.DateTimeFormat, so no new library.
Keep oldDate() for importing v1 files, which use the old format.
Open problem: The recipes/print.ts test has failed since the change.
Next step: Fix print.ts, then move the remaining 12 files.決定事項にはそれぞれ理由を添えてください。理由がないと、次のセッションがその決定を覆すことがあります。メモはプロジェクトか自分のノートに保存し、細かい内容が必要になったときのために会話をエクスポートしておきます。
そのうえで/clearを実行するか、同じプロジェクトで新しいセッションを始め、会話の記録ではなく引き継ぎメモだけを貼り付けます。
4. 継続するルールはチャットの外に移す
タスクが変わっても守ってほしい指摘もあります。「プロジェクトの日付ヘルパーを使って」「テストはプロジェクトのスクリプトで実行して」と何度も繰り返しているなら、そのルールをAGENTS.mdやClaude CodeのCLAUDE.mdといったプロジェクトの指示ファイルに書きます。新しいセッションはそのファイルを読むので、リセットしても失われません。
このファイルは毎回のセッションに読み込まれるので、短く保ちます。コストのガイドでは、CLAUDE.mdを200行未満に収めることを勧めています。「30ファイル中18ファイル完了」のような進み具合は、引き継ぎメモに残します。何を書くかはAGENTS.mdのガイドで説明しています。
例に出てきたv1のルールもここに書きます。v1のファイルが残っている限り有効なルールだからです。
5. 1回のやり取りで増える量を減らす
1回ごとに増える量が少ないほど、コンテキストは長く持ちます。依頼の前に、次の点を確認します。
- 「日付を直して」ではなく、ファイルと関数を指定する。
- ログ全体ではなく、関係するエラー行だけを貼り付ける。
- 必要なテストだけを実行し、失敗だけを表示する。
- プロジェクトで使わないMCPサーバーは接続を切る。
- エージェントが対応していれば、広い範囲の検索はサブエージェントに任せる。
- 1つのセッションでは1つのタスクだけを扱う。
コストのガイドでは、テスト出力を絞り込むフックも含め、これらのほとんどを取り上げています。
6. リセット後にエージェントを確認する
新しいセッションが何かを編集する前に、目的、決定事項、次のステップを説明し直してもらい、その答えを引き継ぎメモと比べます。この例なら、こちらから促さなくてもv1のルールに触れるはずです。抜けていることがあれば、その場で正します。次に進ませる前に、最初の差分であるprint.tsの修正をレビューします。コードレビューのガイドにチェックリストがあります。
Monoでは、エージェントが使用量を報告すると、メッセージ入力欄の上にある小さなリングが使用済みのコンテキストを示します。半分で緑からオレンジに、80パーセントで赤に変わり、押すと「コンテキスト: 使用量 / 合計」が表示されます。「/」と入力すると、エージェントが提供するスラッシュコマンドが一覧表示されます。Agent Client Protocolでは、コマンドを知らせるかどうかはエージェントに任されています。新しく始めるときは、「会話をエクスポート」で古い会話を保存してから、プロジェクトのカードで「新しいセッション」を選びます(パソコンが接続されていれば、スマートフォンからも選べます)。Monoはまだ公開前ですが、ウェイトリストに登録できます。
