Claude Code 上下文管理:/compact 与 /context 怎么用

2026-06-17

上下文管理就是控制”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 能省下一大截:

  1. 开任务前先 /clear,确保从干净台面起步,不背上一个任务的包袱。
  2. 把约定写进 CLAUDE.md,而不是反复在对话里强调——项目记忆比对话历史稳定,不会被压缩弄丢。
  3. 拆小任务、分会话做。一个会话只干一件相对独立的事,做完 /clear 再开下一件,比一个会话从头干到尾省得多。
  4. 长输出看完即清:大段日志、整文件内容用过后,及时 /compact 把它们压掉。
  5. 接近窗口上限前主动 /compact,别让模型在快满的状态下硬撑——那时候既贵又容易出错。
  6. 善用 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 编程教程大全 把基本功打扎实。

想系统学会用 AI?报名体系课或加入会员,照着学、照着用。