Claude Code 上下文快满时,压缩的核心不是"省空间",而是把有用的信号留下来、噪声扔掉。按优先级给一套实操路线:
1. 先看一眼谁在吃上下文
在输入框打:
/context
它会可视化显示上下文各部分的占比(读过的文件内容、tool result、MCP 工具定义、对话历史等),你才知道该清什么。
2. 首选:/compact — 对话变摘要,释放空间但不丢进度
/compact
更好的是带焦点指令,告诉它什么必须留、什么可以丢:
/compact 保留:已修改的文件列表、关键架构决策、未解决的 bug、下一步计划。丢弃:已完成任务的探索过程、重复试错记录。
⚠ /compact 是有损压缩——一些细节/中间分析会被摘要化,但对"继续推进"通常够用。
什么时候该压缩(最佳时机)
- 刚完成一个 feature / 修完一个 bug,准备开始下一件
- 刚做了大量文件阅读/跑完一堆测试输出,准备动手写代码
- 响应开始变慢,或 /context 显示超过 ~70%
进阶:只压缩后半段
按 Esc + Esc(或 /rewind)→ 选一个检查点 → Summarize from here。这样早期的架构讨论保持完整,后半段冗长调试被摘要化。
3. 如果已"压缩过又满了" / Claude 开始犯蠢:用 /clear
开始新任务时用 /clear,继续长任务时用 /compact。
- 任务边界清晰切换(feature A 做完 → 去做不相关的 bug B)→ /clear
- 如果担心丢了关键信息:压缩前先沉淀到文件
在 /compact 之前,先把以下内容写入 PROGRESS.md(或 CLAUDE.md 的临时区段):
- 今天确定的设计决策
- 已改的文件清单 & 未完成的 TODO
- 需要注意的坑
新会话靠 @PROGRESS.md 就能快速恢复认知。
4. 从根源减少上下文膨胀(比事后压缩更重要)
- 一 Session 一任务,别一个终端从早聊到晚。不相关的三件事挤在一个会话里,每条新消息都在为全部历史"买单"。
- 精确引用文件,别让 Claude 狂读。✅ "看 src/auth/jwt.ts 里的 verifyToken 函数" / ❌ "帮我理解整个 auth 系统"
- 大批量调查用 subagent 隔离上下文。子代理有独立上下文,只把摘要返回主会话,主上下文不会被读文件撑爆。
- 用 /btw 问小问题,不污染上下文。答案出现在浮层里,不进入对话历史,零上下文成本。
- 控制 CLAUDE.md 体积。CLAUDE.md 每个回合都会加载,只放"反复需要遵守的规则",偶尔用的知识迁到单独文档。
- 检查 MCP / 工具膨胀。/context 也能看到是不是某些 MCP server 的工具定义在吃空间;不用的可以 /mcp 里先禁用。
快速决策表
上下文 60–75%,还在同一个任务里 → /compact(最好带保留指令)
一个子任务刚结束,下一站完全不同 → /clear(重要状态先写文件)
Claude 已经开始忘事/重复/犯低级错 → /clear + 沉淀关键点 → 新会话
只是要查一个无关小细节 → /btw 而不是正常输入
要大面积扫描代码找信息 → 用 subagent 而非主会话硬读