Claude Code のコンテキストを管理する
Claude Code を使い込むと、誰もが同じ壁に当たります。会話が長くなるほど応答が鈍くなり、見当違いが増え、最後は「コンテキスト上限」で止まる。原因は単純で、Claude は「今この瞬間にコンテキストに載っている文字」しか見ていないからです。何時間も前のやり取り、読み込んだ大きなファイル、過去のツール出力 ── それらが全部積み上がって、肝心の指示を押し出していきます。
この記事では、その積み上がりを管理するための道具 ── /compact・/clear・/rewind・/context、そして CLAUDE.md と # メモリ ── を、いつ・どれを使うかの判断つきで整理します。対象は Claude Code v2.1 系時点です。
そもそもコンテキストとは何か
Claude Code の「コンテキスト」は、Claude が一度に読める作業机の広さだと思ってください。机には次のものが同時に載っています。
- これまでの会話(あなたの指示と Claude の返答)
- 読み込んだファイルの中身(
Readした分だけ丸ごと) - 実行したコマンドの出力(テストログ、
git diff、検索結果 …) - 自動で読まれる CLAUDE.md や設定
机には上限(コンテキストウィンドウ)があります。そして大事なのは、机が埋まるほど精度が落ちるということ。情報が増えれば増えるほど、Claude は「いま何を頼まれているか」を見失いやすくなります。上限に当たってからではなく、埋まってきたら整理するのが基本姿勢です。
まず現在量を見る:/context
整理の前に、いまどれくらい埋まっているかを把握します。/context を打つと、コンテキストの内訳(会話・ファイル・システム・空き)が見えます。
/context
「最近やたら遅い/的外れ」と感じたら、まず /context を見る癖をつけてください。だいたいの場合、机が 7〜8 割埋まっています。体感に頼らず、数字で判断するのがいちばん速い。これは GA4 の数字を読む のと同じで、見えれば直せます。
/compact ── 文脈を保ったまま机を片づける
いちばん使うのが /compact です。これはそれまでの会話を要約に圧縮し、要点だけ残して机を空けます。「何をやっていたか」の文脈は引き継ぎつつ、過去の細かいログやファイル全文を捨てる、という挙動です。
/compact
/compact テストはもう通っているので、残りの API 実装にだけ集中して
引数を付けると、どこを重点的に残すかを指示できます。長い作業の途中なら「いま追っているバグの再現条件を必ず残して」のように書くと、要約で大事な前提が落ちるのを防げます。
Claude Code は上限が近づくと自動でこの圧縮(auto-compact)を走らせますが、自動任せだと「残ってほしい前提が落ちる」ことがあります。区切りのいいタイミング(1 機能を実装し終えた、調査が一段落した)で自分から /compact するほうが、要約の質をコントロールできます。
/clear ── 別の作業に移るときは机ごと空にする
/compact が「要約して残す」なら、/clear は会話を全部消して白紙に戻すコマンドです。
/clear
使い分けはシンプルです。
- 同じ作業を続ける →
/compact(文脈を残したい) - まったく別の作業に移る →
/clear(前の文脈はむしろ邪魔)
ありがちな失敗が、バグ修正が終わったのにそのまま次の機能の相談を始めること。前の文脈が机に残ったまま新しい話を載せるので、机がすぐ埋まり、しかも古い情報に引きずられます。タスクが変わったら /clear ── これだけで体感がかなり変わります。
/rewind ── 消しすぎ・行きすぎを巻き戻す
/clear は強力ですが、うっかり消してまだ必要だったことがあります。そのための救済が /rewind です。会話を過去の状態まで巻き戻して再開でき、/clear を実行する前の地点まで戻すこともできます(v2.1.191 でこの拡張が入りました)。
/rewind
「さっきまでの調査ログをクリアしちゃった」「数手前の方針に戻したい」というときの保険として覚えておくと安心です。整理は大胆に、ただし /rewind があるから戻れる ── という前提で使えます。
「毎回必要な前提」は会話に置かない:CLAUDE.md と #
ここがいちばん効きます。/compact や /clear で消えると困る前提 ── プロジェクトの構成、使うコマンド、守ってほしいルール ── は、会話ではなく CLAUDE.md に書きます。CLAUDE.md はセッション開始時に自動で読まれるので、圧縮しても消えません。
会話の途中で「これは今後も覚えておいてほしい」と気づいたら、# で始めて入力すると、その場でメモリ(CLAUDE.md など)に追記できます。
# このプロジェクトのテストは npm run check で型と lint をまとめて見る
考え方はこうです。一回きりの指示は会話に、毎回効かせたいルールは CLAUDE.md に。 会話に積むべきでない恒久ルールを会話で繰り返していると、机がそれで埋まっていきます。ツールの挙動そのもの(許可範囲・モデルなど)は会話でも CLAUDE.md でもなく settings.json 側の仕事です ── ここの切り分けも、机を散らかさないコツです。
大きい調査は別の机に逃がす:サブエージェント
「大量のファイルを読んで結論だけ欲しい」ような調査は、メインの会話でやると読み込んだ全文が机に残り続けます。こういうときは サブエージェント に投げると、調査はサブエージェント側の机で行われ、メインには結論だけが返ります。メインの机を汚さずに済むわけです。
「広く探す・読む」系のタスクをメインで抱え込まない ── これも長時間セッションを崩さない定石です。
セッションをまたぐ:--resume / --continue
机を片づけるだけでなく、一度閉じて再開するのも有効な整理です。
claude --continue # 直前のセッションの続きから
claude --resume # 過去のセッションを選んで再開
「今日はここまで、明日続き」をするとき、ダラダラ同じセッションを伸ばし続けるより、区切って --resume で戻るほうが机が締まります。再開時に要点を /compact で固めておくと、続きが軽く始められます。
挫折ポイント
- 上限に当たってから慌てる … 止まってから整理するのではなく、
/contextで 7〜8 割を目安に先回りして/compact。埋まるほど精度も落ちているので、早いほど得。 /compactと/clearを取り違える … 続きをやるのに/clearすると文脈ごと消える。別作業なのに/compactすると古い文脈を引きずる。「続けるか・移るか」で選ぶ。- 恒久ルールを会話で毎回言う … 「またこの前提を説明している」と思ったら CLAUDE.md か
#へ。会話は消える、CLAUDE.md は残る。 - auto-compact 任せで前提が落ちる … 自動圧縮は便利だが要約の中身は選べない。大事な再現条件・方針は、区切りで自分から
/compact 〜を残してと指示する。 - 巨大ファイルを丸ごと読ませる … 一度
Readした全文は机に残る。大規模な探索は サブエージェント に逃がし、メインには結論だけ返させる。
まとめ:机は「先回りして」片づける
コンテキスト管理は、突き詰めると 2 つの習慣です。
/contextで埋まり具合を数字で見る ── 体感ではなく数字で判断する。- 続けるなら
/compact、移るなら/clear、消しすぎたら/rewind── 状況で道具を選ぶ。
そして、消えて困る前提は最初から会話に置かず、CLAUDE.md と # に常駐させる。これだけで、長時間のセッションでも Claude の精度が落ちにくくなります。上限に当たってから直すのではなく、埋まってきたら片づける ── 見えれば、直せます。
設定で挙動を決める settings.json、指示書としての CLAUDE.md、調査を逃がす サブエージェント、外部ツール連携の MCP サーバー と合わせて読むと、Claude Code を長く安定して動かす全体像が掴めます。最新のアップデートは Claude Code 更新まとめ で追えます。