Claude Codeで長時間作業して会話が長くなり、動作が重くなってきた人向け
Claude Codeで長く作業して反応が重くなったり、最初に出した指示が忘れられ始めたら、まず /context を叩いて何が机を占領しているか確認し、埋まっていれば /compact で会話を要約して空ける。別のテーマに丸ごと移るなら /clear で新しい会話を始める
料理ブログをClaude Codeで何時間も作っていると、だんだん返事が遅くなったり、最初に出したはずの指示を忘れたりします。これはClaude Codeの「作業机の広さ」が決まっていて、会話が進むほど机の上が紙で埋まっていくからです。コンテキストウィンドウは、その机の広さ、つまりClaudeが一度に頭に入れておける情報の総量を指します。
会話の履歴、Claudeが読んだファイルの中身、コマンドの出力、CLAUDE.md、覚え書き、読み込んだスキル、それから私たちには見えない内部の指示まで、全部この机の上に積み上がっていきます。
噛み砕くと
新しい職場に出社した初日のホワイトボードを想像してみてください。最初はまっさらで、いくらでも書き込めます。打ち合わせが進むにつれて、決定事項やメモがどんどん書き足されていく。やがてボードは文字で埋まり、新しいことを書くスペースがなくなります。
そうなったら、人間なら古い走り書きを消すか、要点だけ別の紙にまとめ直して、ボードを空けますよね。Claude Codeも同じことをします。机が埋まりかけると、まず古い作業ログを消し、それでも足りなければ会話そのものを要約して圧縮する。ここが大事です。
要約されると、細かい話は消えます。だから「ずっと覚えていてほしいルール」を会話の中で言い続けるのは、消えやすいボードの隅に書くようなもの。後で説明しますが、それはCLAUDE.mdという別の場所に書いておくのが正解です。
大事な前提:トークン数は「だいたい」で、固定ではない
公式のシミュレーションでは机の広さを20万トークンとして表示しています。ただ、ページには「数字はあくまで目安。実際の値はCLAUDE.mdの長さやつないでいるサーバー、読んだファイルの長さで変わる」と注記があります。
つまり「ちょうど20万トークンで固定」ではありません。モデルや設定によって、もっと広い場合もあります。なので私は数字を1の位まで気にするより、「全体の何割が埋まったか」をざっくり見る方が実用的だと思っています。
「料理ブログ作り」を例に、実際の中身を見る
では、私がClaude Codeで料理ブログを作っている最中のセッションを例に、机の上がどう埋まっていくかを順に追います。
ステップ1: 起動した瞬間、机にはもう何枚か紙が乗っている
まだ何も頼んでいないのに、起動した時点でいくつかの情報が自動で積まれます。公式の内訳(数字は目安)はこうです。
システムの内部指示 約4,200トークン(私たちには見えない)
覚え書き(MEMORY.md) 約680トークン(先頭200行か25KBまで)
作業環境の情報 約280トークン(作業中のフォルダ・OSなど)
MCPツールの名前だけ 約120トークン(中身は使うまで読まない)
スキルの説明一覧 約450トークン(中身は使った時だけ読む)
全プロジェクト共通の設定 約320トークン
このプロジェクトのCLAUDE.md 約1,800トークン
ここで初心者がやりがちな勘違いがひとつ。「MCPツールやスキルをたくさん入れると机がすぐ埋まる」と思いがちですが、そうではありません。名前の一覧が載るだけで、中身は実際に使うまで読み込まれない仕組みになっています(公式で deferred)。名前だけなら100〜450トークン程度で、ほぼ無視できる軽さです。
ステップ2: 「世界の料理を紹介する記事のひな形を作って」と頼む
私のお願いの文そのものは、これだけだと約45トークン。びっくりするほど軽いです。机の広さからすれば誤差みたいなものですね。
ところが、ここから一気に重くなります。
ステップ3: Claudeがファイルを読み始めると、ここで一気に埋まる
記事のひな形を作るために、Claudeは既存のテンプレートや過去記事のHTMLを次々に読みます。公式ドキュメントが明言しているとおり、机を最も食うのはこのファイル読み込みです。
例えば既存の記事HTMLが1本2,000トークン分あったとして、5本も読めばそれだけで1万トークン。さっきの私のお願い45トークンとは桁が違います。会話を長く続けて重くなる原因は、たいてい「読んだファイルの蓄積」だと思っておくといいです。
ステップ4: 埋まり具合を /context で覗く
今どれくらい埋まっているかは、会話の途中で /context と打てば見られます。色分けされた格子状の図で、何が机を占領しているかが一目で分かります。重いツールや膨らんだ覚え書きについて、減らし方の提案も出ます。
/context
/context のうしろに all と書き足すと、もっと細かい内訳まで広げて見られます。私は「なんか重いな」と感じたら、まずこれを叩いて原因を確認します。
ステップ5: 限界に近づくと、Claudeが勝手に片付けを始める
料理ブログの記事を10本20本と作り続けて机が限界に近づくと、Claude Codeは自動で片付けに入ります。順番が決まっていて、まず古い作業ログ(過去のコマンド出力)から消します。それでも足りなければ、会話そのものを要約して圧縮します。
このとき残るのは「私の要求と意図」「重要なコードのかけら」。逆に消えやすいのが「会話の早い段階で出した細かい指示」です。例えば最初に「見出しは必ず疑問形で」と口頭で言っただけだと、要約後にスッと抜け落ちることがあります。
ステップ6: 自分のタイミングで空けたいときは /compact
自動を待たず、区切りのいいところで自分から空けることもできます。/compact と打つと、それまでの会話を要約して机のスペースを空けつつ、同じ会話を続けられます。
/compact
しかも /compact のうしろに「料理カテゴリーの分類ルールに集中して要約して」のような指示を書き足せます。残してほしい論点を指定できるわけです。これは地味に便利で、私は長丁場のセッションでは意識的に使っています。
つまり Context Window は何をしてくれるのか
- やってくれる: 会話・ファイル・設定をまとめて頭に入れて作業を進める。限界が近づけば古いログ削除→要約の順で自動的に空きを作る
- やってくれない: 会話の細かい指示を永久に覚えること。要約で早い段階の指示は消えやすい。永続させたいルールはCLAUDE.mdに書く必要がある
- 意味が薄い場面: ごく短いやり取りで終わる作業。机が埋まる前に終わるなら、埋まり具合を気にする必要はほぼない
使いどころ3シナリオ(料理ブログ作りで再現)
シナリオ1: 記事を量産していて返事が遅くなってきたとき
世界の魚料理シリーズを10本書いたあたりで、Claudeの反応がもったりしてきた。こういうときは /context で何が重いかを見て、原因が「読んだ記事HTMLの蓄積」なら /compact で要約して空けます。区切りのいい1本を書き終えた直後にやると、進行中の話を失わずに済みます。
シナリオ2: まったく別のテーマに切り替えるとき
魚料理シリーズが完成して、次は「世界のスープ」シリーズを新しく始める。前のシリーズの会話はもう要らない。こういう「別の話に丸ごと移る」ときは /compact ではなく /clear です。会話を空っぽにして新しいスタートを切れます。前の魚料理の会話が消滅するわけではなく、/resume からいつでも戻れます。ここを取り違える人が本当に多いので後でもう一度書きます。
シナリオ3: 重い下調べをしたいとき
「世界各国の代表的な調味料を50種類リストアップして」みたいな、大量のファイルを読む下調べ。これをメインの会話でやると、読んだ内容で机が一気に埋まります。そこでサブエージェントに投げる。公式の例では、サブエージェントが6,100トークン分のファイルを読んでも、メインに返ってきたのは420トークンの結果だけでした。下調べの汚れがメインの机に乗らないわけです。
初心者が踏みやすい落とし穴
- 「コンテキストウィンドウ=Claudeの完璧な記憶」だと思い込む。会話が埋まると早い段階の細かい指示は要約で消えやすい。ずっと守ってほしいルールは会話で言い続けるのではなく、CLAUDE.mdに書く。公式が何度も強調している一番大事なポイントです
- トークン数を絶対値だと信じる。表示される数字は目安で、実際はCLAUDE.mdの長さ・つないでいるサーバー・読んだファイルの長さで変わる。割合でざっくり見るのが安全です
- /compact と /clear を取り違える。
/compactは要約して机を空けつつ同じ会話を続ける。/clearは会話を空にして新しく始め、前の会話は/resumeに残ります。話の続きをしたいのに/clearを叩いて流れを失う事故が多いです - 要約後に効かなくなるルールがある。対象ファイルを指定したルール、いわゆる path-scoped rules や、サブフォルダに置いたCLAUDE.mdは、要約後はそのファイルをもう一度読むまで効かなくなる。逆に、プロジェクト直下のCLAUDE.mdや覚え書きは要約後もディスクから読み直されます
- ファイルを読ませすぎる。机を最も食うのはファイル読み込み。お願いを具体的にして読ませる範囲を絞る、重い下調べはサブエージェントに投げる、で大きく節約できます
- 巨大すぎるファイルを1本投げる。1つのファイルや出力があまりに大きいと、要約してもすぐ満杯に戻ってしまう。Claude Codeは数回試して諦め、無限に繰り返さずエラーを出します(公式の thrashing)。重いものは分割して渡すのが安全です
- スキル一覧が要約後も残ると思い込む。起動時のスキル説明の一覧は、
/compactの後は再注入されません。実際に使ったスキルの中身だけが残ります。上限は1つ5,000トークン・合計25,000トークンです。要約後に「あのスキルどこ行った」となりがちです
書き方
/context ← 今の埋まり具合を色分けの図で見る
/context all ← もっと細かい内訳まで広げて見る
/compact ← 会話を要約して机を空ける(同じ会話は続く)
やってみるとこうなる
入力
/context
出力例
起動直後で約7,800トークンほどが自動で埋まり(システムの内部指示・覚え書き・CLAUDE.mdなど)、作業を進めて読んだファイルが積み上がると、色分けの格子図でどの項目が机を占領しているかが表示される。重い項目には減らし方の提案も出る(数字はすべて目安で、設定やファイルの長さで変わる)
このページに出てきた言葉
- トークン
- 文章を細かく区切ったかけらの単位。Claudeは文字数ではなくトークン数で「どれだけ机を使ったか」を数える
- CLAUDE.md
- プロジェクトごとに置く覚え書きファイル。会話が要約されても消えてほしくないルールを書いておく場所。公式は200行以内を推奨
- 要約(compaction)
- 机が埋まると会話を圧縮する処理。要求・重要なコードのかけらは残り、早い段階の細かい指示は消えやすい
- deferred
- MCPツールやスキルの中身を、名前だけ載せて実際に使うまで読み込まない仕組み。だから入れてあるだけなら机をほぼ食わない
- サブエージェント
- メインの会話とは別の机を持った下請けのClaude。下調べを任せると要約だけ返すので、メインの机が汚れない
- thrashing
- 巨大なファイルのせいで要約してもすぐ机が満杯に戻る状態。Claude Codeは数回で諦めてエラーを出す(無限ループはしない)