Claude Code のコンテキスト管理:/compact・/clear の使い分けとトークン節約のコツ
Claude Code のコンテキストウィンドウが埋まる仕組みと、/compact、/clear、/context の使い分けを解説します。自動圧縮のタイミング、圧縮時に残す情報の指示、セッション再開との関係も紹介します。
目次
長いセッションを続けていると、Claude の応答が遅くなったり、最初に伝えたルールを忘れたように見えたりします。原因の多くはコンテキストウィンドウの逼迫です。会話履歴、読み込んだファイル、ツールの実行結果はすべてコンテキストに蓄積され、上限に近づくと精度が落ち、圧縮が走って情報が失われます。
この記事では、コンテキストを「見る」「圧縮する」「捨てる」ための 3 つのコマンドと、そもそも消費を抑えるための習慣をまとめます。
KEY POINT
この記事で分かること
/context、/compact、/clearの役割と使い分け- 自動圧縮の仕組みと、圧縮で失いたくない情報を守る方法
- コンテキスト消費を抑える日常的な習慣
コンテキストを構成するもの
コンテキストウィンドウには、次のものが順に積み上がります。
| 要素 | 内容 | 削減の余地 |
|---|---|---|
| システムプロンプト | Claude Code 本体の指示 | なし |
| CLAUDE.md | ユーザー・プロジェクト・ローカルの内容 | 大きい(短く保つ) |
| ツール定義 | 組み込みツールと MCP サーバーのツール一覧 | 中(不要な MCP を外す) |
| 会話履歴 | 指示、応答、読んだファイル、コマンド出力 | 大きい(/compact、/clear) |
/context を実行すると、これらの内訳と残り容量が表示されます。「思ったより MCP のツール定義が大きい」「CLAUDE.md が長すぎる」といった発見があるので、まず一度見てみてください。
/compact:要約して続ける
/compact は、これまでの会話を要約し、要約だけを残して履歴を置き換えます。タスクの途中でコンテキストが逼迫したときに使います。
/compact
引数で「何を残すか」を指示できます。
/compact 変更したファイルの一覧と、未解決のテスト失敗の内容は必ず残してください
要約は Claude が行うため、指示がないと細部(具体的なエラーメッセージ、決めた命名規則など)が落ちることがあります。残したい情報を明示するのが安全です。
用語解説
自動圧縮: 使用量が上限付近に達すると、手動で /compact しなくても自動的に圧縮されます。任意のタイミングで起きるため、大事な情報は CLAUDE.md やメモファイルに書き出しておく方が確実です。
/clear:履歴を捨てて新しく始める
/clear は会話履歴を完全に消します。CLAUDE.md や設定は再読み込みされるので、「新しいタスクに移る」ときはこちらです。
/clear
前のタスクの文脈が混ざると、Claude が無関係なファイルを参照したり、前の方針を引きずったりします。タスクの区切りで /clear する習慣は、精度と費用の両方に効きます。
使い分けの判断基準
| 状況 | コマンド |
|---|---|
| 同じタスクを続けたいが、動作が重くなってきた | /compact |
| 実装が終わり、別の機能に取りかかる | /clear |
| 調査だけ済ませて、実装は別セッションでやりたい | 調査結果をファイルに書かせてから /clear |
| 圧縮後に前提を忘れているように見える | /compact に残す内容を指示してやり直す、または CLAUDE.md に書く |
PreCompact フックで情報を退避する
圧縮の直前に PreCompact フックが発火します。ここでスクリプトを走らせ、現在の作業状態をファイルに書き出す仕組みを作れます。
{
"hooks": {
"PreCompact": [
{
"hooks": [
{
"type": "command",
"command": "git status --short > .claude/last-status.txt"
}
]
}
]
}
}
hooks の基本は hooks で lint と format を自動実行する で解説しています。
消費を抑える習慣
CLAUDE.md を短く保つ
CLAUDE.md は毎セッション読み込まれます。ディレクトリ一覧や長い仕様を書かず、必要な文書は @ インポートやサブディレクトリの CLAUDE.md に分けます(CLAUDE.md の書き方)。
使わない MCP サーバーを外す
MCP サーバーのツール定義は、使わなくてもコンテキストを消費します。プロジェクトで使わないものは claude mcp remove で外すか、project スコープではなく local スコープに置いて必要なときだけ有効にします。
大きなファイルや出力を読ませない
cat で巨大なログを読ませたり、node_modules を検索させたりすると、一気に消費します。「先頭 50 行だけ」「grep で該当箇所だけ」と範囲を指定してください。長いテスト出力は、| tail -n 30 のように絞る指示が有効です。
調査はサブエージェントに任せる
コードベースの広範な調査は、サブエージェントに任せると、その過程で読んだファイルがメインのコンテキストに残りません。結果の要約だけが返ってきます(サブエージェントの作り方)。
セッションの再開との関係
claude --continue や claude --resume で過去のセッションを再開すると、当時のコンテキスト(圧縮済みなら要約)がそのまま復元されます。翌日に続きをやる場合、再開直後に /context で状態を確認し、必要なら /compact してから作業を始めると安定します。
まとめ
/contextで内訳を見て、CLAUDE.md や MCP のツール定義が肥大化していないか確認する- 同じタスクの継続は
/compact(残す情報を引数で指示)、タスクの切り替えは/clear - 自動圧縮は任意のタイミングで起きるため、重要情報は CLAUDE.md やファイルに退避する
- 大きな出力を読ませない、調査はサブエージェントに任せる、で日常的に消費を抑える
よくある質問
- /compact と /clear はどちらを使うべきですか?
- 同じタスクを続けるなら /compact(要約して継続)、別のタスクに移るなら /clear(履歴を消して新規開始)です。
- 自動圧縮はいつ起きますか?
- コンテキストの使用量が上限に近づくと自動的に圧縮されます。直前に PreCompact フックで重要情報を退避することもできます。
- コンテキストの使用量はどこで見られますか?
- /context コマンドで、システムプロンプト・ツール・会話履歴などがどれだけ占めているかを確認できます。
参考にした一次情報
この記事は公式ドキュメントを基に AI が下書きを作成し、運営者が内容を確認して公開しています。誤りを見つけた場合はお問い合わせからお知らせください。