Claude Code 的上下文窗口(200K Tokens)就像一个固定大小的工作台——放上去的东西越多,空间就越紧张。理解什么被加载、每个操作消耗多少 Token,是高效使用 Claude Code 的关键。
启动阶段:自动加载的内容
当你启动 Claude Code 时,以下内容自动加载(约占上下文的 4-5%):
| 内容 | 估计 Token | 可见性 | 说明 |
|---|---|---|---|
| 系统提示 | ~4,200 | 隐藏 | 核心行为、工具使用、响应格式指令 |
| Auto Memory (MEMORY.md) | ~680 | 隐藏 | 前 200 行或 25KB |
| 环境信息 | ~280 | 隐藏 | 工作目录、平台、Shell、Git 信息 |
| MCP 工具(延迟加载) | ~120 | 隐藏 | 工具名称列表,完整 schema 按需加载 |
| Skill 描述 | ~450 | 隐藏 | 可用 Skill 的一行描述 |
| ~/.claude/CLAUDE.md | ~320 | 隐藏 | 全局偏好设置 |
| 项目 CLAUDE.md | ~1,800 | 隐藏 | 项目规范、构建命令、架构说明 |
启动总消耗约 7,850 Tokens,占 200K 上下文的 ~4%。
工作阶段:每个操作的消耗
文件读取(最大消耗源)
文件读取是上下文消耗的主要来源:
| 操作 | 估计 Token | 你看到的 |
|---|---|---|
| 读取一个源文件 | 1,000-3,000 | 终端显示 "Read file.ts" 一行 |
| grep 搜索结果 | 400-800 | 只看到命令执行 |
| npm test 输出 | 800-1,500 | 看到 "Running..." 和通过数 |
💡 关键洞察:你在终端看到的一行信息,在上下文中可能占 2000+ Tokens。
文件编辑
| 操作 | 估计 Token | 说明 |
|---|---|---|
| Claude 分析 | ~800 | 解释问题和方案 |
| 编辑文件 | ~400 | diff 内容 |
| 总结回复 | ~400 | "修好了,测试通过" |
自动触发的内容
| 触发条件 | 内容 | Token |
|---|---|---|
| 读取 src/api/ 下的文件 | api-conventions.md 规则 | ~380 |
| 读取 *.test.ts 文件 | testing.md 规则 | ~290 |
| 每次文件编辑后 | Prettier Hook 输出 | ~120 |
上下文压缩(/compact)
当上下文接近满时,Claude 会自动压缩对话:
- 保留最近的交互
- 压缩较早的文件读取为摘要
- Skill 描述在压缩后不会重新注入(只保留已使用的 Skill)
- 启动内容(系统提示、CLAUDE.md 等)会重新注入
优化上下文使用的 7 个技巧
1. 精确你的提示
text
# 差:Claude 需要大量探索
修复 auth bug
# 好:Claude 直接定位文件
修复 src/api/auth.ts 中 token 刷新后返回 401 的 bug2. 保持 CLAUDE.md 精简
- 控制在 200 行以内
- 将参考内容移到 Skills 或路径限定规则中
- 只在需要时加载
3. 使用路径限定规则
.claude/rules/api-conventions.md → paths: src/api/**
.claude/rules/testing.md → paths: *.test.ts
只有读取匹配路径的文件时才加载,避免全量加载。
4. 善用子 Agent
将研究密集型任务委托给子 Agent,它们有自己的上下文窗口,只返回精炼的结果。
5. 控制 MCP 工具加载
bash
# 默认延迟加载(推荐)
ENABLE_TOOL_SEARCH=auto
# 关闭延迟加载(所有 schema 立即加载)
ENABLE_TOOL_SEARCH=false6. Hook 输出要简洁
Hook 的 additionalContext 直接进入上下文且不截断。保持输出简短。
7. 适时使用 /compact
在长会话中主动运行 /compact 来释放空间,而不是等自动触发。
一个完整会话的上下文分布
以修复 auth bug 为例的上下文使用:
- 启动内容:~4% (7,850 tokens)
- 文件读取:~5% (4 个文件 + grep)
- 规则触发:~0.3% (2 条规则)
- Claude 输出:~1% (分析 + 编辑 + 总结)
- 命令输出:~0.6% (测试结果)
- Hook 输出:~0.1% (Prettier)
总计约 ~11% 用于一个中等复杂度的 bug 修复——还有充足的空间继续对话。
原文来源:Claude Code Context Window 文档 | 来源:Claude Code 官方文档