Claude Code 学习站

彻底搞懂 Claude Code 的上下文窗口:谁在占位、怎么省 Token

上下文窗口是 Claude Code 最关键的资源。本文梳理会话启动时自动加载了什么、各占多少 token、文件读取为何是大头,以及用 /clear、/compact、子代理等手段控制上下文、降低成本的实操。

本页目录5
要点速览
  • 默认窗口 200K token(扩展上下文模型 1M);表现会随窗口变满而下降,管理上下文是第一要务。
  • 启动即自动占位:系统提示(~4200)、auto memory MEMORY.md(~680,前 200 行/25KB)、环境信息、MCP 工具名、Skill 描述、CLAUDE.md 等。
  • 文件读取是上下文消耗的大头——提示越具体(指明 auth.ts),Claude 读的文件越少。
  • 调研类重任务交给子代理:它在独立窗口里读大量文件,只把摘要带回主会话。
  • /compact 把历史压成约原来的 ~12%;/clear 在不相关任务间彻底清空;也可 /compact <重点>。

本文是对官方文档 Explore the context window 的中文要点整理,数字与字段以原文为准。

上下文窗口是什么

上下文窗口装着 Claude 当前能"看到"的一切:系统提示、整段对话、每个被读的文件、每条命令输出。默认上限 200,000 token(支持扩展上下文的模型为 1,000,000)。关键约束是:窗口越满,模型表现越容易下降——会开始忘掉早先的指令、犯更多错。所以上下文是最需要主动管理的资源。

启动时就自动占位的内容

一个会话还没开始干活,就已经加载了不少东西(以下 token 数为官方示例量级):

  • 系统提示:约 4,200 token,定义行为/工具用法/输出格式,始终最先加载,你看不到。
  • Auto memory(MEMORY.md):约 680 token,Claude 跨会话给自己记的笔记,加载前 200 行或 25KB(以先到者为准)。
  • 环境信息:工作目录、平台、shell、OS、是否 git 仓库;git 分支/状态/近期提交作为单独块挂在系统提示末尾。
  • MCP 工具(deferred):默认只列工具名(约 120 token),完整 schema 按需通过 tool search 加载。可用 ENABLE_TOOL_SEARCH=auto / false 调整。
  • Skill 描述、~/.claude/CLAUDE.md、项目 CLAUDE.md:各自占位,CLAUDE.md 每次会话都加载。

真正的大头:文件读取

会话跑起来后,文件读取主导上下文消耗。官方建议:

  • 提示要具体:说"修 auth.ts 里的 bug"而不是"修登录 bug",Claude 就少读很多文件。
  • 调研交给子代理:研究型任务让 子代理 在独立窗口里读文件,只把摘要带回主会话。后续追问会累加到同一上下文,委托子代理能把大块文件读取挡在主窗口之外。

满了怎么办:compact 与 clear

  • 接近上限时 Claude Code 自动 compact:把历史摘要化(官方示例压到约原 token 的 12%),保留代码模式、文件状态、关键决策。
  • 手动 /compact <重点> 定向压缩,如 /compact Focus on the API changes
  • /clear不相关任务之间彻底清空上下文——这是保持表现最有效的习惯。

把它可视化:状态栏

想实时看上下文用量,配一个状态栏,把 context_window.used_percentage 显示成进度条,一眼掌握还剩多少空间。