Claude Code 用久了以后,很多人会遇到同一个问题:前面聊了很多需求、读了很多文件、跑了很多命令,后面模型开始忘记细节,或者把已经确认过的约束又问一遍。这时候就需要把长会话压缩成更清晰的上下文,让后续工作继续接得住。
compact 的核心价值不是“省一点 token”这么简单,而是把一次混杂的编程会话整理成下一阶段能执行的任务说明。用得好,它能保留目标、已完成事项、关键文件、未解决问题和验证结果;用得不好,就会把重要边界压掉,后面越改越偏。
什么时候该用 compact?
Claude Code 的长会话不一定越长越好。官方文档也提醒过,随着上下文变长,模型的召回和准确性会受影响。实际使用里,只要出现下面几种情况,就可以考虑 compact 或主动整理上下文。
- 读过很多文件:模型已经看过配置、路由、组件、测试、日志,窗口里堆了大量中间信息。
- 任务已经换阶段:从定位问题进入实现,或从实现进入测试、发布、写说明。
- 中间有多次试错:失败命令、废弃方案、临时假设很多,容易干扰后续判断。
- 你要隔天继续:不希望下一次重新解释项目背景和当前状态。
- 准备交给另一个会话:需要让新的 Claude Code 会话快速接手。
如果你还在比较工具和工作流,可以先看 AI编程工具专题 和 Claude专题。这两个专题能帮你把 Claude Code、Codex、Cursor 的适用边界放到同一个框架里看。
compact 前先做 5 件小事
很多 compact 失败,不是压缩功能不好,而是压缩前的信息太乱。建议在压缩前先让 Claude Code 做一次“工作台清理”。
- 确认目标:一句话写清楚这次会话最终要完成什么。
- 列出已完成:哪些文件已改、哪些命令已跑、哪些结论已经确认。
- 标记废弃方案:哪些思路已经证明不可行,后面不要再重复尝试。
- 记录风险点:未验证的假设、可能影响旧逻辑的地方、用户特别强调的限制。
- 留下下一步:压缩后第一件事应该做什么,而不是只写一堆背景。
这一步和老达之前写的 AI编程上下文管理 是同一类问题:AI 编程不是把所有资料都塞进去,而是让模型一直知道“当前最重要的约束是什么”。
一段可直接用的 compact 前提示词
你可以在执行 compact 前,先发这样一段提示词,让会话自己整理成接力材料:
请先不要继续改代码,帮我整理当前会话上下文,准备压缩或接力。
请按以下结构输出:
1. 当前目标:一句话说明最终要完成什么。
2. 已完成事项:列出已读文件、已修改文件、已确认结论。
3. 关键约束:用户明确要求、项目规则、不能破坏的行为。
4. 废弃方案:已经尝试但不再采用的方案和原因。
5. 待办事项:按优先级列出下一步。
6. 验证状态:已经跑过的命令、结果、还没跑的检查。
7. 接力提示:给下一个会话的一段简短指令。
整理完以后再 compact,后续会话更容易抓住重点。尤其是处理跨文件修改、前端验收、测试失败、发布检查这类任务时,这个结构比零散聊天记录可靠得多。
compact 后第一句话怎么写?
压缩完成后,不要马上让模型继续大改。先让它复述当前状态,确认压缩没有丢关键限制。
请基于压缩后的上下文,先复述:
1. 你认为当前任务目标是什么;
2. 哪些文件/模块是关键范围;
3. 下一步你准备怎么做;
4. 哪些地方还需要验证。
先不要编辑文件,等我确认。
如果复述里少了关键约束,比如“不要改公共组件”“不要创建新标签”“正文不能写 h1”,就立刻补充。对于网站维护、WordPress 发布、项目规则这类任务,建议把稳定规则写进项目记忆文件,而不是只靠临时聊天。可以对照 Claude Code 项目记忆怎么写 一起使用。
compact 不适合解决所有上下文问题
compact 是整理会话,不是替你重新理解项目。下面几种情况,单靠压缩并不够:
- 需求本身变了:用户临时改方向,应该重新确认目标,而不是把旧上下文继续压进去。
- 代码已经被别人改过:需要重新读取相关文件和 git 状态,不能只相信压缩摘要。
- 验证结果过期:之前通过的测试,不代表当前改动后仍然通过。
- 会话里有错误假设:如果前面判断错了,压缩可能把错误结论变成“看似确定”的摘要。
所以,compact 后最重要的动作是“重新校准”,不是盲目续写。尤其在多人协作或自动化任务里,最好让 Claude Code 先读当前文件状态,再决定是否继续沿用摘要。
和 Plan Mode、状态栏一起用
Claude Code compact 更适合和另外两个习惯搭配:先用计划模式拆任务,再用状态栏观察当前会话消耗和任务进度。
比如一个前端改版任务,可以这样跑:
- 用 Plan Mode 先拆出范围、文件、风险和验收步骤。
- 开始实现,阶段性运行 lint、测试或页面检查。
- 上下文变长后,先整理当前状态,再 compact。
- compact 后复述任务,再继续测试、截图、写交付说明。
相关做法可以参考 Claude Code Plan Mode怎么用 和 Claude Code 状态栏怎么设置。这三件事放在一起,才能让长任务更像工程流程,而不是一条越聊越长的聊天记录。
老达建议:把 compact 当成“阶段交接”,不是清空聊天
我更建议把 compact 理解成阶段交接:上一阶段已经完成什么,下一阶段要做什么,中间有哪些风险不能忘。它不是为了让会话看起来更干净,而是为了让 Claude Code 在长任务里继续保持方向感。
普通用户最实用的做法是固定三件事:压缩前先整理、压缩后先复述、继续前先验证。只要坚持这三步,Claude Code 处理长会话、跨天任务和复杂项目时,稳定性会明显好很多。