Claude Code上下文满了怎么办?compact、clear和resume怎么用
摘要
Claude Code使用时间越长,读取的代码、命令输出和对话记录越多,上下文就越容易接近上限。本文介绍/compact、/clear和/resume三个常用命令的区别,并给出不同开发场景下的使用方法。
ChatGPTplus/pro一键订阅入口!
使用Claude Code修改大型项目时,很多人都会遇到这些情况:
- 前面说过的要求突然不再遵守;
- 修改代码开始偏离原来的任务;
- 回答速度变慢;
- 重复读取已经分析过的文件;
- 提示上下文接近上限;
- 自动压缩后遗漏部分细节。
这些问题不一定是模型能力下降,更可能是当前会话的上下文已经堆积了太多内容。
Claude Code的上下文不只有聊天记录,还包括项目规则、读取过的文件、命令输出、工具调用结果和模型回复。随着任务持续进行,这些内容会不断占用上下文空间。官方也提醒,上下文接近上限后,模型可能开始遗漏早期要求或增加错误。
一、先用/context查看谁占用了上下文
在决定清理之前,可以先输入:
/context这个命令会显示当前上下文的占用情况,包括对话、文件读取、项目规则、工具和其他内容。
如果想查看更详细的展开结果,可以使用:
/context all通过这个页面,可以判断上下文到底是被长对话占满,还是读取了大型日志、依赖文件或过多项目规则。Claude Code官方将/context定位为查看当前上下文占用和优化建议的工具。
二、/compact:保留当前任务,但压缩历史内容
如果当前功能还没有完成,只是上下文快满了,优先使用:
/compact/compact不会开始一个完全空白的新对话,而是把之前的长对话整理成一份摘要,再继续当前会话。
适合这些情况:
- 一个功能已经修改到一半;
- 还需要保留前面的分析结论;
- 已经确认了修改范围和技术方案;
- 不希望重新解释整个项目;
- 对话很长,但当前任务还没有结束。
为了避免压缩时遗漏重点,还可以给/compact增加要求:
/compact 保留登录报错原因、已修改文件、剩余任务和测试结果或者:
/compact 只保留当前支付模块的修改计划和未解决问题带重点的压缩,通常比直接等待系统自动压缩更稳妥。官方说明,Claude Code接近上下文上限时会自动压缩,但手动指定重点可以让摘要优先保留当前任务真正需要的信息。
需要注意,/compact不是无损保存。
项目根目录中的CLAUDE.md和部分长期规则会重新加载,但某些按路径触发的规则、子目录中的说明和较早的细节,可能需要再次读取相关文件后才会重新进入上下文。
三、/clear:结束当前任务,重新开始新对话
如果当前任务已经结束,准备处理完全不同的问题,可以输入:
/clear/clear会开启一个空上下文的新对话,之前的聊天记录不会继续占用当前上下文。
适合这些场景:
- 登录问题已经修好,准备开发支付功能;
- 前面分析的是前端,现在准备处理后端;
- 当前会话尝试了太多错误方向;
- 旧任务内容已经没有保留价值;
- Claude一直受到前面错误结论影响。
/clear和/compact最大的区别是:
/compact:压缩旧内容,继续原任务;/clear:清空当前上下文,开始新任务。
不过,执行/clear并不会删除之前的会话。旧会话仍会保存在本地,之后可以通过/resume重新打开。
还可以在清理时为旧会话命名:
/clear login-bug这样之后更容易在会话列表中找到它。
四、/resume:找回以前的会话
/resume的作用不是清理上下文,而是恢复以前保存的会话。
在Claude Code内部输入:
/resume会打开会话选择列表,可以查看之前的任务并继续工作。
在终端重新启动Claude Code时,也可以使用:
claude --resume它会打开历史会话选择器。
如果只想继续当前目录中最近一次会话,可以使用:
claude --continue还可以先给会话命名:
/rename auth-refactor之后直接恢复:
claude --resume auth-refactorClaude Code会持续把交互式会话保存在本地,因此退出终端、执行/clear或重新打开项目后,通常仍可以继续之前的任务。会话默认与项目目录关联,找不到历史会话时,要先确认是否在正确的项目目录中。
五、三个命令应该怎么选?
可以按照下面的方式判断。
当前任务还没完成
使用:
/compact最好写明需要保留的重点。
当前任务已经结束,准备做新功能
使用:
/clear避免旧任务持续占用上下文。
退出终端后,想继续昨天的任务
使用:
claude --resume或者:
claude --continue想切换到另一个历史任务
在当前会话输入:
/resume六、减少上下文过快占满的方法
除了使用这三个命令,还可以注意以下几点。
不要让Claude一次读取整个大型项目,先限定目录和文件范围。
大型日志不要全部粘贴,只提供报错附近的内容。
项目长期规则写进CLAUDE.md,不要每次都在对话中重复说明。
跨目录调查可以交给子Agent完成,只把最终结论返回主会话,减少大量文件内容进入主上下文。
一个功能完成后及时/clear,不要在同一个会话里连续处理多个无关需求。官方也建议在不同任务之间主动清空上下文,并将大型代码库调查交给独立上下文的子Agent。
总结
Claude Code上下文接近上限时,三个命令的用途可以简单概括为:
/compact:压缩历史内容,继续当前任务;/clear:清空当前上下文,开始新的任务;/resume:恢复之前保存的历史会话。
实际使用时,可以先运行/context查看占用情况。任务没有完成就使用带重点的/compact,任务已经切换就使用/clear,需要找回旧工作时再使用/resume。
原创持续更新实战干货,点个关注收藏不迷路。
欢迎订阅专栏、翻阅往期文章,转发与各位同行共勉。