Claude Code 上下文管理:/compact 与 /context 怎么用
上下文管理就是控制”AI 当前记得多少对话内容”——在 Claude Code 里,这件事主要靠 /context 看占用、/compact 压缩、/clear 清空三个命令完成。 跑长任务时不管它,结果就是 token 烧得快、AI 还越聊越糊涂。这篇把这套机制讲透,告诉你每个命令什么时候按。
如果你还不清楚”上下文窗口”这个底层概念,建议先看 上下文窗口是什么(规划中),再回来看本文的实操。
为什么要管上下文:长任务的两个坑
Claude Code 跟你的每一轮对话、读过的每个文件、跑过的每条命令输出,都会累积进同一个上下文窗口。这个窗口是有上限的,撞到上限会出两个问题:
- 越聊越贵:每发一次请求,整个历史都要重新喂给模型,token 消耗随对话长度线性增长。一个 200 行的对话,可能比刚开始时贵好几倍。
- 越聊越笨:窗口快满时,早期的关键约定(“用 TypeScript 严格模式""不要改这个文件”)会被挤到角落,模型容易遗忘或自相矛盾,开始返工、改错地方。
所以上下文管理的目标很简单:让窗口里始终装着”当前任务真正需要的东西”,把无关历史清掉。
原理:窗口里到底装了什么
理解机制比记命令更重要——命令会变,机制不变。Claude Code 的上下文窗口通常由这几块组成:
| 组成部分 | 说明 | 能不能清 |
|---|---|---|
| 系统提示 / 工具定义 | 框架自带,固定开销 | 不能 |
| 项目记忆(CLAUDE.md 等) | 你的项目约定 | 一般保留 |
| 对话历史 | 你和 AI 的每一轮问答 | 可压缩/可清 |
| 文件与命令输出 | 读过的代码、跑过的日志 | 可压缩/可清 |
可以把窗口想成一张有限大的工作台:系统提示和项目记忆是钉死的工具架,对话历史和文件输出是堆在台面上的草稿纸。台面堆满了,新活就没地方放了——/compact 是把草稿纸整理成要点贴,/clear 是直接把台面扫空。
第一步:用 /context 看占用
/context 用来查看当前上下文窗口被占用了多少。在你感觉对话变慢、变贵,或者准备开新任务前,先敲它看一眼。
它通常会告诉你:总窗口有多大、已经用掉多少、各部分大致占比。养成习惯:长任务每隔一阵看一次。 当占用接近上限(比如七八成)时,就该考虑压缩或清空了,别等模型自己开始犯迷糊。
具体显示的字段、百分比口径和窗口上限会随版本变化,以官方文档与你本地实际输出为准。
第二步:用 /compact 压缩对话
/compact 的作用是把冗长的对话历史压缩成一段摘要,保留关键决定和当前进度,丢掉过程里的废话。压缩后窗口腾出大片空间,但 AI 仍然”记得”你们达成的核心约定。
什么时候用 /compact:
- 任务没做完,但对话已经很长——你还想接着在同一上下文里干,又不想丢掉前面的设计决策。
- 中间有大量一次性输出(长日志、整文件粘贴),已经看完用过、不再需要原文。
/compact 是有损的:它保要点、弃细节。所以压缩前,确认重要结论已经落进了代码或 CLAUDE.md,别指望摘要替你记住每一行。你也可以给它一句提示,引导它重点保留哪部分(比如”保留接口设计和待办清单”),具体用法以官方文档为准。
第三步:用 /clear 开新任务
/clear 是直接清空当前对话上下文,相当于开一个全新会话(项目记忆 CLAUDE.md 一般仍会自动加载)。
什么时候用 /clear:
- 切换到一个完全无关的新任务——上一个任务的历史对新任务纯属噪音和成本,留着只会干扰。
- 对话已经被带偏、绕进死胡同,与其修修补补,不如清空重来,把任务重新讲清楚。
判断口诀很简单:
- 同一个任务、想接着干 →
/compact - 换任务 / 想重开 →
/clear - 拿不准当前多满 → 先
/context
长任务怎么省 token:实操清单
把上面三个命令串成一套工作流,长任务的 token 能省下一大截:
- 开任务前先
/clear,确保从干净台面起步,不背上一个任务的包袱。 - 把约定写进 CLAUDE.md,而不是反复在对话里强调——项目记忆比对话历史稳定,不会被压缩弄丢。
- 拆小任务、分会话做。一个会话只干一件相对独立的事,做完
/clear再开下一件,比一个会话从头干到尾省得多。 - 长输出看完即清:大段日志、整文件内容用过后,及时
/compact把它们压掉。 - 接近窗口上限前主动
/compact,别让模型在快满的状态下硬撑——那时候既贵又容易出错。 - 善用 Plan Mode(规划中):先让 AI 把方案想清楚再动手,能减少反复试错带来的上下文膨胀。
一句话总结省 token 的核心:少装无关历史,多靠稳定记忆。 上下文不是越长越聪明,恰恰相反。
常见坑与排查
- 压缩后 AI 忘了关键约定 →
/compact是有损的。重要决定要落进代码或 CLAUDE.md,别只靠对话记忆;压缩时可显式提示保留哪些内容。 - 明明清空了还是很贵 → 系统提示、工具定义、CLAUDE.md 是固定开销,
/clear清不掉这部分。想再省,就精简 CLAUDE.md 体积。 - 一个会话从早干到晚 → 这是 token 黑洞。养成”一任务一会话、做完就清”的习惯,远比死磕单个长会话经济。
- 频繁读大文件 → 每次完整读入都吃窗口。能定位到具体函数/片段就别整文件粘,让 AI 只看必要部分。
常见问题
/compact 和 /clear 有什么区别?
/compact 保留要点、压缩历史,适合”同一任务接着干”;/clear 直接清空、相当于开新会话,适合”换任务或重开”。同任务用 compact,换任务用 clear。
Claude Code 的上下文窗口有多大?
窗口上限随模型和版本变化,以官方文档为准。重点不是记住具体数字,而是用 /context 随时查看当前占用,接近上限就压缩或清空。
自动压缩和手动 /compact 有冲突吗?
Claude Code 在窗口快满时通常会自动压缩,/compact 则是你主动触发。主动压缩的好处是你能选时机——在一个阶段干净收尾时压,比让它在混乱中自动压、保留的内容更可控。
怎么知道该压缩了?
没有死规则,经验值是占用到七八成、或你感觉回复变慢变贵时。养成隔一阵 /context 看一眼的习惯,比凭感觉硬撑可靠。
清空上下文后,项目约定会丢吗?
不会。/clear 清的是对话历史,CLAUDE.md 等项目记忆一般会在新会话自动重新加载——这也是为什么”把约定写进 CLAUDE.md”比”在对话里反复说”更靠谱。
👉 看看我们的 AI 编程实战体系课,或逛 AI 编程教程大全 把基本功打扎实。