原典: Explore the context window / 日本語版

一行要約

起動時点で何が context に入り、作業中に何が足され、compaction で何が生き残り何が失われるかを1本のタイムラインとして示した文書で、実務上の核心は「paths: 付き rule とネストした CLAUDE.md は compaction で消える」という一点。

要点

起動時にロードされるもの(代表値)

タイプする前に context に載っているもの。合計おおよそ 7,850 トークン(context window は 200,000 トークンの想定)。

ロードされるもの代表トークン数内容
System prompt4,200振る舞い・ツール使用・応答形式の中核指示。常に最初。ユーザーからは見えない
Auto memory (MEMORY.md)680過去セッションで Claude が自分に残したメモ。先頭 200行 または 25KB のうち先に達したほう
Environment info280作業ディレクトリ、プラットフォーム、シェル、OS バージョン、git リポジトリか否か。git のブランチ・status・最近のコミットは別ブロックとして載る
MCP tools(遅延)120ツール名だけ。完全なスキーマは遅延され、必要時に tool search で読む
Skill descriptions450使える skill の1行説明。本体は実際に使うときだけロード
~/.claude/CLAUDE.md320全プロジェクト共通の個人設定
Project CLAUDE.md1,800プロジェクト規約、ビルドコマンド、アーキテクチャ

Project CLAUDE.md: The most important file you can create. tip: Keep it under 200 lines. Move reference content to skills or path-scoped rules so it only loads when needed.

プロジェクトの CLAUDE.md: 作れるファイルの中で最も重要なもの。ヒント: 200行未満に保て。参照用の内容は skill か path スコープの rule へ移し、必要なときだけロードされるようにせよ。

出力スタイルや --append-system-prompt のテキストも、同じく system prompt に入る。

MCP の挙動を変える環境変数:

設定挙動
(既定)ツール名のみ。スキーマは tool search で必要時に取得
ENABLE_TOOL_SEARCH=autocontext window の 10% に収まるならスキーマを先読みする
ENABLE_TOOL_SEARCH=false全部先読みする

作業中に足されるもの

  • ファイルを読むたびにその内容が加算される
  • path-scoped rule は、マッチするファイルが読まれたタイミングで自動的にロードされる(例: api-conventions.md 380 トークン、testing.md 290 トークン)
  • PostToolUse hook は編集のたびに発火し、hookSpecificOutput.additionalContext で返したものが context に入る(prettier の例で 100〜120 トークン。exit 0 の素の stdout は入らない)。1万字を超える出力はファイルに保存され、Claude にはプレビューとファイルのパスが渡る

subagent による節約(数字で見る)

タイムラインの subagent は session.ts(2,200)、timeouts.ts(800)、config/*.ts(3,100)を読む。

The subagent read 6,100 tokens of files. You got a 420-token result. That’s the context savings.

subagent は 6,100 トークン分のファイルを読んだ。あなたが受け取ったのは 420 トークンの結果である。これが context の節約分だ。

メイン context に返るのは最終テキスト応答 420 トークンと、トークン数・所要時間の小さなメタデータだけ。

subagent が持つツールについての注記も重要:

It gets most of the parent’s tools, minus several that don’t apply in a nested context, including plan-mode controls, background-task tools, and by default the Agent tool itself to prevent recursion.

subagent は親のツールの大半を受け継ぐ。ただし入れ子の文脈では意味をなさないいくつかは除かれる。plan モードの制御、バックグラウンドタスクのツール、そして再帰を防ぐため、既定では Agent ツール自体である。

compaction で何が生き残るか(最重要の表)

機構compaction 後
system prompt と output styleどちらも引き続き効く
プロジェクトルートの CLAUDE.md、paths なしの ruleディスクから再注入される
auto memoryディスクから再注入される
Git の状態のスナップショットリポジトリから新しく読み直される
plan モードで Claude が書いた planディスクから再注入される
paths: frontmatter を持つ rule一旦要約に飲まれる。マッチするファイルを Claude が読んだ時点で再ロードされる
サブディレクトリのネストした CLAUDE.md同上。そのディレクトリのファイルが読まれた時点で再ロードされる
Claude が読んだ・編集したファイル最大5本を再読する。更新が新しいものから
起動したことのある skill の本体再注入されるが、skill あたり 5,000 トークン、合計 25,000 トークンで打ち切り。古いものから捨てられる
skill の description 一覧再注入されない。実際に起動した skill だけが保持される
バックグラウンドのコマンドと subagent走り続ける。重複して起動しないよう、まだ走っているものを Claude Code が Claude に知らせる
hook が以前に足した context会話の残りと一緒に要約される
compact ソースにマッチする SessionStart hook実行され、その出力が compaction 後の context に足される

再読の細かい挙動が1つある。

A file over 5,000 tokens comes back as a path reference without its content, shown as Referenced file instead of Read.

5,000 トークンを超えるファイルは、内容なしのパス参照として戻る。表示は Read ではなく Referenced file になる。

ここから導かれる2つの実務ルール:

  1. If a rule must persist across compaction, drop the paths: frontmatter or move it to the project-root CLAUDE.md.

  2. Truncation keeps the start of the file, so put the most important instructions near the top of SKILL.md.

なお v2.1.198 以降、要約リクエストはセッションの extended thinking 設定を継承する。thinking は要約の作られ方にだけ影響し、セッション設定は変わらない。

context が埋まったときの5つの手

自動 compaction は走るのでセッションが終わることはない。自動パスは、タイムライン中の /compact と同じやり方で動く。ただし自動任せにする前に打てる手がある。

手やり方
焦点を指定して compact する/compact focus on the auth bug fix。自動パスが「重要そう」と推測するものではなく、自分が選んだものが残る
会話の一部だけ compact する/rewind でメッセージを選び、Summarize from here か Summarize up to here を選ぶ
早めに compact する/autocompact 500k で、どこまで埋まったら自動パスが走るかを設定する
タスク間で clear する無関係な作業に移るとき /clear。古い会話は次に必要なファイルを押し出し、毎メッセージでトークンを食う
大きな読み込みを委譲するsubagent に調査を投げ、ファイル内容をそちらの context に留める

より大きな window が欲しい場合: Fable 5、Sonnet 5、Opus 4.6 以降、Sonnet 4.6 が 1M トークン context window に対応する。Sonnet 5 は [1m] バリアントを選ばずに 1M で動く。compaction は大きい上限でも同じように働く。

自動 compaction が走る位置はモデルと設定で変わる。 この原典はモデル別の境界と、 /autocompact の値や上書きの規則を settings ではなく model-config に委ねている。 ここで数字を推測しないこと。

自分のセッションを確認する

The visualization uses representative numbers.

この可視化には代表的な数値を使っている。

実際の消費は /context でカテゴリ別に見られる(最適化の提案付き、どの CLAUDE.md と auto memory がロードされたかも含む)。/memory でそれらのファイルを開いて編集できる。

その他タイムラインに出てくる操作

  • !git status — ! 接頭辞でシェルコマンドを実行すると、コマンドとその出力の両方が自分のメッセージの一部として context に入る。Claude に実行させずにコマンド出力で接地させたいときに有用
  • disable-model-invocation: true の skill — 起動時の skill index に description が載らないので、呼ぶ瞬間まで context コストがゼロ

Set disable-model-invocation: true on skills with side effects like committing, deploying, or sending messages. They stay out of context entirely until you need them.

コミット、デプロイ、メッセージ送信のように副作用のある skill には disable-model-invocation: true を設定せよ。必要になるまで、それらは context に一切入らない。

そのまま使える具体例

context を能動的に管理するコマンド:

コマンド効果
/context現在の消費をカテゴリ別に見る
/memoryロードされた memory ファイルを開く
/compact focus on the auth bug fix焦点を指定して要約する
/rewindSummarize from here / up to here を選ぶ
/autocompact 500k自動 compaction の閾値を設定
/clear無関係な作業に移るとき
!git statusシェル出力を context に入れる

環境変数:

export ENABLE_TOOL_SEARCH=auto                  # MCP スキーマを 10% 以内なら先読み

compaction を跨いで残したい rule は paths: を外す:

---
paths:
  - "src/api/**/*.ts"     # ← これがあると compaction で失われる
---

副作用のある skill を context から隠す:

---
name: commit-push
description: Stages, commits, and pushes changes.
disable-model-invocation: true
---

原典で言及されている関連文書