Logo Vincent
返回文章列表

Claude Code /compact:释放上下文,不丢进度

Claude
Claude Code /compact:释放上下文,不丢进度

什么是 /compact

用 Claude Code 的时候,你可能遇到过这样的情况:

  • 聊了一阵子之后,Claude Code 开始”忘事”,明明刚才讨论过的内容它好像不记得了
  • 让它改一个文件,它改错了位置,或者重复做了之前已经做过的事
  • 感觉响应变慢了,Claude Code 似乎在处理大量信息

这些现象背后的原因都一样:上下文窗口快满了。

这就是 /compact 命令的用武之地。

/compact 是 Claude Code 的一个斜杠命令,用来压缩当前对话历史,释放上下文空间。它会把冗长的对话总结成精简的摘要,同时保留关键信息,让 Claude Code 重新”轻装上阵”。

先理解上下文窗口

要理解 /compact,先得知道上下文窗口是什么。

上下文窗口就像 Claude Code 的”工作记忆”——一个有限大小的空间,装着当前对话的所有信息:

  • 对话历史 —— 你说过的每句话,Claude Code 的每个回复
  • 文件内容 —— Claude Code 读过的每一个文件
  • 命令输出 —— 执行过的每条命令的结果
  • 系统信息 —— CLAUDE.md、auto memory、加载的 skills 等

随着对话进行,这些内容不断累积。一次 debug 会话可能读几十个文件、跑几十条命令,轻松产生数万个 token。

当上下文快满的时候,问题就来了:

  • Claude Code 可能”忘记”对话早期的指令
  • 推理质量可能下降,容易犯一些低级错误
  • 不相关的旧内容会干扰当前任务的判断

上下文窗口是 Claude Code 最核心的资源,管理好它直接决定了使用体验。

怎么用

基本用法

在 Claude Code 交互模式下输入:

/compact

Claude Code 会自动总结当前对话,将冗长的历史压缩成精简的摘要。压缩后,关键的代码修改、文件状态和重要决策会被保留,而过程中的细节(比如中间的调试输出、已经解决的问题讨论)会被精简掉。

带聚焦指令

/compact 支持一个可选参数——聚焦指令,告诉 Claude Code 在压缩时重点保留什么:

/compact 聚焦 API 相关的改动
/compact 保留所有修改过的文件列表和测试命令
/compact 只关注认证模块的重构进展

这个参数非常有用。默认压缩时,Claude Code 会自己判断什么重要什么不重要。但如果你知道接下来要做什么,给一个明确的聚焦方向能确保关键信息不被丢掉。

局部压缩

如果你只想压缩对话的一部分,而不是全部,可以用 Esc + Esc/rewind,选择一个消息节点,然后选择 Summarize from here。这会从那个节点开始压缩后续的消息,同时保留之前的上下文完整不动。

自动压缩 vs 手动压缩

Claude Code 有两种压缩机制:

自动压缩

当对话接近上下文上限时,Claude Code 会自动触发压缩。它会:

  1. 先清除较早的工具输出
  2. 如果还不够,再总结整个对话历史
  3. 保留你的请求和关键代码片段

自动压缩是一个兜底机制——你不用担心上下文爆了会怎样,Claude Code 会自己处理。

手动压缩(/compact)

但等到自动压缩触发,往往意味着上下文已经很满了,性能可能已经受影响了一段时间。

主动用 /compact 的好处是:你可以在问题出现之前就解决它。

自动压缩手动 /compact
触发时机接近上下文上限时你随时可以触发
可控性Claude Code 自行决定保留什么你可以指定聚焦方向
预防性被动响应主动管理
适用场景兜底保障精细控制

什么时候该用

任务切换时

你刚完成一个功能开发,准备开始做另一件不相关的事。之前的对话历史对新任务没什么帮助,反而占着上下文空间。

/compact 保留项目的整体架构理解,清理掉登录功能的开发细节

长时间调试后

debug 过程中会读大量文件、跑大量命令,产生很多中间输出。问题解决后,这些中间过程就不重要了。

/compact 保留最终的修复方案和修改的文件列表

读了大量文件后

让 Claude Code 探索一个不熟悉的代码库,它可能读了几十个文件。这些文件内容占了大量上下文,但你只需要它记住关键结论。

/compact 保留代码库的架构总结和关键文件路径

感觉 Claude Code 开始犯错时

如果 Claude Code 开始忘东西、重复操作、或者明显偏离你的指令,很可能是上下文太满了。这时候 /compact 能立竿见影。

实际使用技巧

技巧一:用 /context 监控上下文用量

在压缩之前,先用 /context 看看当前上下文的使用情况:

/context

它会用一个彩色网格可视化显示上下文用量,还会给出优化建议。比如告诉你哪些 MCP 工具占用了大量空间、是否有上下文膨胀的问题。

先看,再决定要不要压缩、怎么压缩。

技巧二:在 CLAUDE.md 里定义压缩策略

如果你有固定的压缩偏好,可以在 CLAUDE.md 里加一段 Compact Instructions:

# Compact Instructions
When compacting, always preserve:
- The full list of modified files
- All test commands that have been used
- Key architectural decisions made during the session

这样不管是自动压缩还是手动 /compact,Claude Code 都会按照这些指令来决定保留什么。

技巧三:用 /btw 问不占上下文的小问题

有时候你只是想快速确认一个小问题,但又不想让它占用上下文空间。用 /btw 代替正常提问:

/btw 那个配置文件叫什么名字来着?

/btw 的回答会显示在一个临时浮层里,不会进入对话历史,也就不会占用上下文。

技巧四:善用子代理分流探索任务

如果你需要 Claude Code 去探索一大片代码库,考虑让它用子代理(subagent)来做:

用子代理去调查认证模块的实现方式

子代理有自己独立的上下文窗口,探索完后只返回一个摘要到你的主对话中。这样既拿到了信息,又不会把主上下文撑爆。

/compact vs /clear vs /rewind

这三个命令都和对话管理有关,但作用完全不同:

/compact/clear/rewind
做了什么压缩对话历史为摘要彻底清空对话,从零开始回退到某个历史节点
保留信息保留关键信息的摘要什么都不保留完整保留回退点之前的所有内容
代码状态不影响代码不影响代码可以同时回退代码改动
适用场景对话太长,需要减负换一个完全不相关的任务某次操作搞砸了,想回到之前
类比整理笔记,精简要点翻到新的一页按 Ctrl+Z 撤销

我的经验:

  • 同一任务内对话太长/compact,保留关键上下文继续干
  • 要做一个完全不相关的新任务/clear,干干净净重新开始
  • Claude Code 改错了代码或走错了方向/rewind,回退到正确的节点重来
  • 快速问个小问题/btw,完全不占上下文

写在最后

/compact 是一个看起来不起眼但直接影响 Claude Code 使用体验的命令。它解决的问题很本质:上下文窗口是有限的,但你的工作需求是无限的。

长对话中 Claude Code 表现下降,往往不是模型能力的问题,而是上下文管理的问题。就像一个再聪明的人,桌子上堆满了无关的文件,也很难专注当前的任务。

/compact 就是帮你整理桌面的工具——把不需要的文件归档,把重要的留在手边,让 Claude Code 重新集中注意力。

下次用 Claude Code 聊到一半感觉它”不太对劲”的时候,先别急着重开对话,试试 /compact。很多时候,一次压缩就能让它重新”清醒”过来。

© 2026 vincentqiao.com . 保留所有权利。