别再说 Claude Code 上下文不够用了,是你没管好
用 Claude Code 做开发,上下文管理这块早晚得踩几个坑:聊久了前面的规则就忘了,后台跑着任务不敢随便打断,/clear 和 /compact 分不清手滑就翻车。
这篇把所有和上下文、会话管理相关的命令按功能理清楚,别名、边界、坑点、适用场景全说明白,看完不会再混用。
一、清空会话:/clear
/clear 的作用就是清空当前会话的聊天记录、工具输出和临时约定,给你一个干净的对话环境。项目里的代码、CLAUDE.md 规则、装过的 Skill、登录状态这些,一概不动,不用担心清个对话把项目搞坏。
三个容易搞错的点
-
/reset、/new全是它的别名 三个命令其实效果一致,都是清空当前会话。不存在"/new是新建独立会话"的功能,想新开独立会话要用/branch,后面会讲。 -
不会杀掉后台任务 不用担心清个对话把跑了一半的构建搞挂。ClaudeCode 的后台任务是独立进程托管的,清上下文和跑任务是两套机制,互不影响。
-
清空了也能找回来 不是清了就彻底没了,本地会持久化存储历史记录,用
/resume命令按会话 ID 就能恢复。
适用场景:任务彻底切换、对话聊乱了 AI 开始丢信息、想刷新一下思考状态,都可以用。
配套的 /resume(别名 /continue)就一句话:专门用来找回历史会话,清错了、想翻旧记录,都靠它。
二、上下文快满了别硬扛:/compact 才是正解
如果任务还没做完,对话越堆越长,不用直接清空,用 /compact 就行。
它的逻辑很简单:AI 把当前所有对话、日志、文件读取记录压缩成一份结构化摘要,用摘要换掉原来冗长的完整记录,核心信息基本都能保留。
正常会留下技术方案、任务进度、关键参数约定这些重要内容,中间反复试错的过程、冗余的运行日志、被推翻的旧方案细节会被丢掉。
手动指定保留内容
压缩的时候可以告诉它哪些东西要留着,不用每次压缩都一刀切,比如:
bash
/compact 保留讨论的技术方案、当前Bug的复现路径和排查进度,测试日志和试错过程都可以清掉
要注意压缩是不可逆的,原来的对话细节找不回来;但后台运行的任务不会中断,跑任务的时候也能正常压缩。
关于自动压缩
自动压缩会在上下文接近满载时触发,具体阈值官方没有精确公开。自动压缩是通用化总结,不会区分你什么内容重要,很容易把关键细节给精简没了。所以最好自己盯着点,上下文到六七成的时候手动压一次。
三、动手之前先看数:别瞎清瞎压
拿不准该清还是该压,先跑两条命令看看状态。
1. /context
直接显示当前上下文的总使用率,还能拆开看系统提示、文件索引、对话历史、工具输出各占了多少 Token。加 all 参数(/context all)可以展开逐项明细。
我自己的判断标准:
- 30% 以下:正常用就行,不用处理
- 60%~80%:可以准备手动压缩了
- 90% 以上:如果任务逻辑还清晰就赶紧压;要是已经聊乱了,直接清空重来反而更快
另外它还能帮你定位膨胀原因:如果是日志占得多,压缩就管用;如果是文件索引占得多,就得去优化 .claudeignore,把没用的文件排除掉。
2. /usage
看当前会话一共耗了多少 Token、对应费用、跑了多久、调用了多少次工具。旧版叫 /cost,现在统一成 /usage 了,老命令也还能兼容。
3. /status
看会话 ID、消息条数、累计消耗、当前工作目录这些基础信息,配合 /resume 恢复会话的时候常用。
四、从源头避免上下文乱:分叉和回退
分叉和回退这两个功能,用好了从一开始就能避免单条对话越堆越长。
1. /branch 和 /fork:并行干活必备
/branch 是真正的"新开一条独立会话"------完整复制当前的全部上下文,生成一条全新的会话,你自己切过去继续操作。
/fork 也是复制上下文,但区别在于:fork 出来的会话会交给后台子代理去跑,不用你自己切过去。适合把耗时任务甩给后台,主会话留着聊需求。
和 /clear(也就是 /new)最核心的区别:
/clear:在原会话里清空历史,会话 ID 不变,没有新会话产生/branch//fork:生成新的会话 ID,带着当前所有进度和记录另开一档
最常用的场景:后台要跑耗时的构建、回测,就 fork 一个专门跑任务的会话,主会话留着聊需求、改方案,主线上下文不会被一堆日志污染。
2. /rewind(别名 /checkpoint、/undo):走偏了就倒回去
/rewind 是回退到历史某一轮对话,那一轮之后的对话记录、文件修改、工具调用全都会丢弃,相当于时光倒流到出错前。
可以指定回退步数,比如 /rewind 3 就直接回退 3 轮,也可以在界面上点对应轮次的按钮定点回退。
适用场景:AI 思路跑偏了、连续试错好几轮都不对、改代码改坏了想整体退回去,都能用。
3. /btw:临时插问神器
临时聊其它问题,共享主会话的所有上下文和代码认知,但聊天记录不会写到主会话历史里,主会话的后台任务也完全不受干扰。
适合临时确认个参数、查一段代码,问完就关,不会把主对话拉得很长。
五、几个日常也会用到的命令
还有几条命令日常也会用到,一起整理在这里。
1. /memory
就是快速打开编辑项目根目录下的 CLAUDE.md 文件,不是什么独立的记忆系统,本质就是个项目级的规则配置文件。
和 /clear、/compact 最大的区别:
- 后面两个操作的是单条会话的临时上下文,关了会话就失效
/memory修改的是项目里的实体文件,永久生效,所有新开会话都会自动加载,清多少次会话都不会丢
适合把项目技术栈、编码规范、目录约定、常用命令模板、输出风格这些固定规则写进去。别把临时调试参数、单次任务方案往里写,会一直留在所有新会话里,反而添麻烦。
2. /rename
给当前会话改名字。并行会话多的时候特别有用,跑任务的、聊方案的、调 Bug 的各标清楚。
3. /export
把当前对话导出成纯文本或者 Markdown 文件,重要的方案讨论、调试过程可以导出来备份,或者整理成开发笔记。
4. /diff
交互式展示当前项目的代码变更,对比修改前后的差异,写完代码自查、做评审的时候是核心命令。
5. /plan
进入规划模式,AI 先列技术方案和执行步骤,确认了它再动手写代码,避免上来就瞎写、反复返工。
一张表速查:本文涉及命令全对比
| 命令 | 核心动作 | 当前任务是否中断 | 历史是否可找回 | 是否影响项目文件 | 生效范围 | 适用时机 |
|---|---|---|---|---|---|---|
/clear(别名 /reset /new) |
清空当前会话对话历史 | 否,后台任务继续运行 | 是,可通过 /resume 恢复 |
完全不影响 | 当前会话 | 切换任务、上下文彻底混乱 |
/resume(别名 /continue) |
恢复指定历史会话 | 无影响 | - | 完全不影响 | 目标历史会话 | 找回清空的旧会话、切换历史对话 |
/compact |
历史浓缩为语义摘要 | 否,继续当前任务 | 否,原始细节丢失 | 完全不影响 | 当前会话 | 同任务继续,上下文快满 |
| 自动压缩 | 系统自动执行通用摘要 | 否 | 否 | 完全不影响 | 当前会话 | 上下文接近填满时自动触发 |
/rewind(别名 /checkpoint /undo) |
回退到指定轮次,丢弃后续 | 否,从断点继续 | 否,后续内容删除 | 同步回退对应轮次的文件修改 | 当前会话 | AI 跑偏,回到正确节点重来 |
/branch |
复制上下文,切换到新会话 | 否,原会话保留 | 是,两条都保留 | 默认共享同一目录,可能冲突 | 全新会话 | 自己切过去并行干活 |
/fork |
复制上下文,交给后台子代理 | 否,原会话继续 | 是,两条都保留 | 默认共享同一目录,可能冲突 | 后台子代理 | 把任务甩给后台,主会话不动 |
/btw |
侧边临时聊天,不写主历史 | 否,主线继续 | 关闭后通常无法在会话中直接恢复 | 完全不影响 | 临时侧边窗口 | 临时插问,不想污染主对话 |
/context |
查看上下文使用率与构成 | 无影响 | - | 完全不影响 | 当前会话 | 拿不准该清还是该压时先观测 |
/usage |
查看累计 token 消耗与费用 | 无影响 | - | 完全不影响 | 当前会话 | 评估长对话成本 |
/status |
查看会话基础状态信息 | 无影响 | - | 完全不影响 | 当前会话 | 排查会话问题、获取会话 ID |
/memory |
编辑持久化规则文件 CLAUDE.md | 无影响 | 是,永久保存 | 修改项目内文件 | 整个项目所有会话 | 固化核心规则,重开也不丢 |
/rename |
重命名当前会话 | 无影响 | - | 完全不影响 | 当前会话 | 多会话管理,打标签分类 |
/export |
导出对话为文件 | 无影响 | - | 生成导出文件 | 当前会话 | 沉淀笔记、备份对话 |
最容易搞混的几组命令,一句话说清怎么选
-
/clear和/branch原地清空重来用/clear;带着当前进度另开一条并行干别的用/branch -
/compact和/clear继续同一个任务用/compact;切到完全不相关的新任务用/clear -
/compact和/rewind对话长但都是有效内容,想精简一下接着干用/compact;后面几步走错了,想退回去重来用/rewind -
/btw和/branch临时问一两个小问题,问完就完事用/btw;要展开讨论、改代码,需要留记录用/branch -
/clear和/resume想清空当前对话换干净环境用/clear;想找回之前的旧会话用/resume
长耗时开发的实操工作流
针对"后台跑耗时任务,同时还要聊方案改代码"的场景,这样用上下文基本不会乱:
- 启动长任务前 :先执行
/fork task-run分叉一个任务专用会话交给后台,后台任务全放里面跑,主会话保持干净,专门聊需求、理方案。 - 任务运行中 :临时小问题用
/btw快速确认,不污染主会话;深度方案讨论、架构设计留在主会话。 - 上下文膨胀时 :先用
/context看占用率,占用率过高的时候手动/compact,顺便指定好要保留的核心内容。 - 任务切换时 :单个模块做完了,就
/clear清空主会话开下一个。重要规则提前写进CLAUDE.md,清空了也不用重复交代。 - AI 走偏时 :只偏了两三轮就用
/rewind退回去;已经乱了好多轮,直接/clear重来反而更快。 - 日常管理 :用
/rename给会话打标签,重要讨论用/export导出备份,找旧会话用/resume。
最后:几句大白话总结
任务做完换题了 → /clear
任务没做完,只是对话太长 → /compact
AI 跑偏了,只想退几步重来 → /rewind
想同时干两件事不打架 → /branch 或 /fork
临时插句话不添乱 → /btw
拿不准先看看 → /context
核心规则想永久留着 → 写进 /memory
旧会话想找回来 → /resume