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 つの習慣です。

  1. /context で埋まり具合を数字で見る ── 体感ではなく数字で判断する。
  2. 続けるなら /compact、移るなら /clear、消しすぎたら /rewind ── 状況で道具を選ぶ。

そして、消えて困る前提は最初から会話に置かず、CLAUDE.md# に常駐させる。これだけで、長時間のセッションでも Claude の精度が落ちにくくなります。上限に当たってから直すのではなく、埋まってきたら片づける ── 見えれば、直せます。


設定で挙動を決める settings.json、指示書としての CLAUDE.md、調査を逃がす サブエージェント、外部ツール連携の MCP サーバー と合わせて読むと、Claude Code を長く安定して動かす全体像が掴めます。最新のアップデートは Claude Code 更新まとめ で追えます。

#Claude Code#開発ツール#リファレンス