Claude Code -3.9 上下文管理指南:什么时候用 /compact,什么时候用 /clear?

3 阅读10分钟

Claude Code 上下文管理指南:什么时候用 /compact,什么时候用 /clear?

很多同学刚开始使用 Claude Code 时,都会遇到一个问题:聊着聊着 AI 开始跑偏、忘记前面的约定,或者上下文越来越臃肿。这个时候到底应该用 /compact,还是直接 /clear?本文结合实际项目经验,聊聊 Claude Code 中上下文管理的最佳实践。

前言

AI 编程工具最强的地方,不只是“能写代码”,而是它能在一段连续对话中逐渐理解你的项目:

  • 项目技术栈是什么
  • 目录结构怎么组织
  • 团队有哪些编码规范
  • 之前讨论过哪些方案
  • 哪些坑已经踩过,哪些方案被否决过

但上下文不是无限的。

当然,今天很多主流模型的上下文窗口已经来到 200K 级别,正常开发时不需要像早期小上下文模型那样频繁“清内存”。大上下文的好处是非常明显的:它能容纳更多代码、更多需求讨论、更多历史决策,也让 AI 更容易保持对项目的连续理解。

但 200K 并不等于可以无限堆上下文。

当对话越来越长时,Claude Code 会携带越来越多历史消息,这些信息既可能是有效记忆,也可能是噪音:中间试错、被否决的方案、临时日志、错误猜测、重复解释……

所以现在使用 /compact 的重点,不再是“省 token”,而是“提升上下文质量”。

这时候,合理使用 /compact/clear 就非常重要。


一、什么是 /compact

/compact 可以理解为一次“上下文压缩”。

它不是简单清空聊天记录,而是把之前的对话做一次智能总结:

  • 保留核心结论
  • 保留关键决策
  • 保留项目约定
  • 清理冗余过程
  • 丢掉中间弯路和无效试错

简单说:

/compact 的目标不是让 AI 忘记,而是让 AI 只记住真正重要的东西。

例如你和 Claude Code 讨论了 30 轮登录架构,最后决定:

  • 使用 HttpOnly Cookie
  • 不把 Token 存到 localStorage
  • 刷新 Token 由后端自动处理
  • 前端只负责 withCredentials: true

中间可能讨论过 JWT 放 localStorage、Authorization Header、sessionStorage 等方案,但这些都被否决了。

这时执行 /compact,理想效果就是:AI 记住最终方案,忘掉中间那些已经被否决的路线。


二、/compact/clear 的本质区别

很多人会把这两个命令混用,但它们适合的场景完全不同。

维度/compact/clear
是否保留项目上下文保留不保留
是否保留已确认决策保留不保留
是否清理中间噪音清理清理
是否适合同项目继续开发适合不一定适合
是否适合彻底重开不适合适合

一句话区分:

聊成了,用 /compact;聊崩了,用 /clear

/compact 是“提炼价值后继续”;/clear 是“全部清空重新来过”。


三、什么时候应该使用 /compact

1. 方案已经讨论清楚,准备开始编码

这是最适合使用 /compact 的场景。

比如你和 AI 已经讨论完:

  • 页面怎么拆分
  • 状态放在哪一层
  • 接口怎么设计
  • 异常怎么处理
  • 哪些方案不采用

接下来准备真正写代码。

这时如果直接继续写,历史对话里可能还残留大量被否定的想法。AI 在生成代码时,可能会受到这些噪音干扰。

执行一次 /compact,可以让 AI 带着“最终共识”进入编码阶段。

推荐流程:

# 1. 先充分讨论方案
# 2. 明确最终技术决策
# 3. 执行上下文压缩
/compact
# 4. 开始编码

2. 一个功能完成,下一个功能仍然属于同一个项目

例如你刚完成了登录功能,接下来要做文章发布功能。

这两个功能不同,但它们共享同一套项目约定:

  • 同一个技术栈
  • 同一套目录结构
  • 同一套 API 规范
  • 同一套状态管理方式
  • 同一套安全策略

这时不建议 /clear,因为清空后 AI 需要重新理解项目背景。

更适合执行 /compact:保留项目规则,清理刚才登录功能的细节。

3. 调试过程绕了很多弯路,但最终找到了正确根因

调 Bug 时经常会这样:

  1. 第一次猜是类型问题
  2. 第二次猜是接口问题
  3. 第三次猜是缓存问题
  4. 最后发现是 MobX 方法里的 this 绑定问题

如果继续带着完整调试上下文,AI 可能后面又被前几个错误猜测影响。

这时候执行 /compact,只保留最终结论:

根因是 useLocalObservable 中使用箭头函数导致 this 指向错误,应该使用方法语法。

这样后续再遇到类似问题,AI 更容易直接命中正确方向。

4. 上下文使用率已经比较高

当 Context Usage 超过 70% 左右时,就可以考虑 /compact

上下文过长后,问题不只是“占用 token”,还包括:

  • AI 容易遗漏早期约定
  • 回复速度可能变慢
  • 历史噪音越来越多
  • 被旧方案干扰的概率变高

如果当前对话已经沉淀出有价值结论,并且后续还要继续同项目开发,/compact 通常是更好的选择。


四、什么时候不要使用 /compact

1. 对话刚开始,信息量很少

如果才聊了几轮,Token 使用率也很低,完全没必要压缩。

尤其是在 200K 上下文窗口已经比较常见的情况下,早期对话的那点内容通常远远达不到需要压缩的程度。这个阶段更应该让 AI 多保留一些原始信息,而不是急着总结。

压缩本质上也是一次总结,总结就可能损失细节。内容太少时,收益很低,反而可能丢掉一些还没稳定下来的信息。

2. 正在调试复杂问题

调试过程中,很多看似无关的信息可能都是线索。

例如:

  • 报错堆栈
  • 复现路径
  • 之前尝试过的方案
  • 某个命令的输出
  • 某个文件的局部改动

如果问题还没定位清楚,不建议中途 /compact。因为压缩可能把关键线索当作噪音清掉。

更好的做法是:等根因明确、修复方案确认之后,再执行 /compact

3. 方案还没有达成共识

如果你和 AI 还在多个方案之间摇摆,比如:

  • 该用 Zustand 还是 MobX?
  • 该用 WebSocket 还是 SSE?
  • 该把逻辑放前端还是后端?

此时不要急着 /compact

因为最终决策还没形成,压缩后可能会把某个临时倾向误当成结论。


五、什么时候应该直接使用 /clear

/clear 更适合“重置现场”。

1. 对话已经明显跑偏

如果你发现 AI 已经开始持续误解你的需求,或者不断沿着错误方向输出,这种上下文已经被污染了。

这时候继续 /compact,可能只是把错误理解压缩成“错误但更坚定的结论”。

更好的选择是 /clear,重新开始。

2. 下一个任务和当前项目完全无关

例如你刚才在聊 React 项目,接下来要问一个 Linux 运维问题。

这种场景保留项目上下文没有意义,反而可能干扰回答。

直接 /clear 更干净。

3. 当前对话没有产生有价值结论

如果这轮对话只是随便试了几个方案,都没成功,也没有明确结论,那就没什么值得保留。

压缩垃圾,得到的还是垃圾。

这时 /clear 更合适。


六、我的个人决策树

可以用下面这个简单决策树判断:

当前对话是否有价值结论?
├─ 没有:/clear
└─ 有:继续判断
   └─ 下一个任务是否还和当前项目相关?
      ├─ 无关:/clear
      └─ 相关:/compact

如果还在继续当前任务:
├─ 上下文使用率 < 60%:不用处理,200K 上下文足够承载大多数常规开发
├─ 上下文使用率 60% - 70%:观察是否出现噪音堆积,不必急着处理
└─ 上下文使用率 > 70%:如果已有明确阶段性结论,可以考虑 /compact

更口语化一点:

没聊明白就清空,聊明白了就压缩,聊得好好的就别动。


七、推荐搭配:/compact + 项目记忆

如果某个结论非常重要,不只是当前对话有用,而是以后长期都会用到,建议不要只依赖 /compact

更好的方式是把它沉淀到项目记忆或项目规范里。

例如:

# 记录长期有效的踩坑教训
/memory add "MobX useLocalObservable 中修改 this 的方法不要用箭头函数"

# 再压缩当前上下文
/compact

这样可以形成两层记忆:

  • 项目记忆:长期稳定规则
  • /compact:当前阶段上下文总结

这对于长期维护一个项目非常有帮助。


八、几个真实使用建议

1. 不要把 /compact 当成万能药

如果前面的对话方向本来就是错的,压缩不会让它变对。

它只适合提炼“已经形成的正确共识”。

2. 压缩前最好明确说出最终结论

在执行 /compact 前,可以先让 AI 总结一次:

请先总结本轮最终确认的技术方案、被否决的方案和后续编码注意事项。

确认总结没问题后再 /compact,效果会更稳定。

3. 长任务分阶段压缩,但不要机械化压缩

做一个大功能时,不建议从头到尾一个上下文硬撑到底。

不过在 200K 上下文模型下,也不需要每完成一个小步骤就 /compact 一次。更合理的做法是:只有当一个阶段真的形成了稳定结论,或者历史过程已经明显变成噪音时,再压缩。

可以按阶段处理:

  1. 需求分析完成,并确认范围后 /compact
  2. 技术方案确认,并排除其他方案后 /compact
  3. 核心代码完成,并通过基本验证后 /compact
  4. 测试和修复完成,并明确最终根因后 /compact

这样 AI 始终带着“高质量上下文”继续工作,而不是为了压缩而压缩。

4. 对于错误尝试很多的调试任务,修复后一定要压缩

调试任务最容易污染上下文。

如果中间出现了 5 个错误猜测,最终只验证了 1 个真正原因,修复后最好压缩一次,避免后续又被旧猜测带偏。


总结

Claude Code 的上下文管理,本质上是在管理 AI 的“短期记忆质量”。

/compact/clear 的选择,可以记住这句话:

聊崩了就 /clear,聊成了就 /compact,聊得好好的就什么都不用做。

更具体一点:

  • /compact 适合保留价值、清理噪音
  • /clear 适合彻底重置、重新开始
  • 项目长期规则应该沉淀到记忆或规范文件中
  • 复杂任务应该分阶段压缩,而不是一口气撑到底

用好这两个命令,Claude Code 会更像一个稳定协作的工程搭档,而不是一个越聊越迷糊的聊天机器人。