第 5 期:上下文窗口深度解析
💡 进群学习加 wx: agentupdate
(申请发送: agentupdate)
(申请发送: agentupdate)
本期核心:上下文窗口是 Claude Code 的生命线。理解它的构成,才能精准管理。
5.1 什么是上下文窗口
每次 Claude Code 对话,所有信息都塞进一个固定大小的"窗口"。窗口大小取决于模型:
| 模型 | 上下文窗口 |
|---|---|
| Claude Opus 4 / Sonnet 4 | 200K tokens |
| Claude Haiku 4 | 200K tokens |
| 部分 1M context session | 1,000K tokens |
5.2 上下文窗口里到底有什么
上下文窗口分为固定部分(每轮都一样)和动态部分(随对话增长):
┌─────────────────── 上下文窗口(200K tokens)─────────────────────┐
│ │
│ ▼ 固定部分 — 每轮请求都带,大小不变 │
│ ┌──────────────────────────────────────────────────────────────┐ │
│ │ System Prompt ~3,000 tokens │ │
│ │ CLAUDE.md ~2,000-8,000 tokens │ │
│ │ Hooks 注入 ~500-2,000 tokens │ │
│ └──────────────────────────────────────────────────────────────┘ │
│ │
│ ▼ 动态部分 — 随对话轮次增长 │
│ ┌──────────────────────────────────────────────────────────────┐ │
│ │ 对话历史(用户消息 + AI 回复) │ │
│ │ 工具调用 + 工具返回结果(最大增长源!) │ │
│ │ 当前用户消息 │ │
│ └──────────────────────────────────────────────────────────────┘ │
│ │
│ ← 剩余空间(Claude 生成回复的空间) │
└──────────────────────────────────────────────────────────────────┘
5.3 固定部分详解
固定部分大约 6K-15K tokens:
| 固定内容 | 大小 | 能否精简 |
|---|---|---|
| System Prompt | ~3K | 不能(Claude Code 内置) |
| CLAUDE.md | 1K-8K | 能。/caveman:compress 压缩 |
| caveman hook 注入 | ~200-500 | 能。/caveman lite 减量 |
| claude-mem SessionStart | 500-3K | 能。控制 observations 数量 |
关键点:固定部分虽然每轮都一样,但因为 Prompt Cache,只算一次费用。
5.4 什么操作让上下文暴涨
| 操作 | 上下文增量 | 原因 |
|---|---|---|
| Read 大文件 | +2K-10K | 文件全部内容进入上下文 |
| Bash npm test | +1K-5K | 测试输出可能很长 |
| Agent subagent | +500-5K | subagent 返回结果进入主会话 |
| Grep 搜索 | +200-2K | 取决于匹配结果数 |
| Edit 文件 | +100-300 | 只发 diff,很小 |
| 普通对话 | +100-500 | 用户消息 + AI 回复 |
5.5 实战:一次"读取项目"操作的上下文变化
操作前:
Context ██░░░░░░░░ 18% (36K/200K)
Read 6 个文件后:
Context ███████░░░ 60% (120K/200K)
↑ 从 18% → 60%,一次"读取项目"吃了 42% 的上下文
教训:一次读取 6 个文件,上下文直接从 18% 飙到 60%。之后只剩 40% 可用空间。
5.6 窗口满了会怎样 — 自动压缩
Claude Code 在上下文达到 95% 时触发自动压缩(硬编码,不可配置)。
压缩的后果:
- 缓存全部失效:压缩改变了消息前缀
- 信息不可恢复:被压缩的文件内容、工具结果永久丢失
- 费用增加:缓存失效后,每轮请求的固定部分要重新处理
如何避免:
- 保持上下文 < 85%(在黄色警告时就开始控制)
- 主动
/clear比被迫压缩好 - 避免一次读取太多大文件
5.7 HUD 如何帮你管理上下文
Context ████████░░ 78% ← 黄色警告,注意控制
- < 60% 绿色:放心工作
- 60-85% 黄色:避免大文件读取、长排错循环
- > 85% 红色:考虑
/clear重置
5.8 省上下文的实用技巧
- 定期
/clear:长会话中间 clear 一次,重置动态部分 - 避免排错循环:超过 3-4 轮没进展就 clear 重开
- 用 Grep 替代 Read 全文件:只看相关行,不读全文件
- 精简 CLAUDE.md:用
/caveman:compress压缩 - 指定行号读取:
Read file.ts:offset:limit而非读整个文件
下期预告:第 6 期深入 Token 机制——输入/输出/缓存三类 Token 的详细构成与实战费用计算。