Claude Code 的 /compact 与 /clear:区别和成本
`/clear` 用空白上下文重新开始,本身不花 token。`/compact` 则保留一份对话摘要,而写出摘要需要对截至目前的整个会话发起一次请求。
/clear 开始一段上下文为空的新对话。/compact 保留当前对话,但用摘要替换其历史记录。因此,下一个任务与此前无关时用 /clear;仍在同一任务中途、历史记录还有用时用 /compact。
这两条命令都是为了解决同一个问题:Claude Code 的对话越长,每轮成本越高,可靠性也可能下降。它们的处理方式相反,成本也不同。
两条命令如何改变上下文
/clear 结束当前对话,打开一段历史记录为空的新对话。项目记忆在对话历史之外,所以仍会保留:新对话开始时会重新加载 CLAUDE.md 和自动记忆。
旧对话也没有被删除。它会保存下来,可用 /resume 找回。给 /clear 加一个名称,例如 /clear release-prep,则可在恢复对话的选择器中看到这个标签。/reset 和 /new 是它的别名。
/clear以空白上下文开始新对话;旧对话仍可通过 /resume 找回。
/compact 用结构化摘要替换消息历史,然后在同一会话中继续。Claude Code 文档指出,摘要保留你的要求、关键技术概念、查看或修改过的文件及重要片段、错误及其修复方式,还有待办事项。逐字记录则会消失,包括完整的工具输出和中间推理。你只在对话中提出的指令也可能随之消失。
有些内容会重新构建,而不是被概括:项目根目录的 CLAUDE.md 和自动记忆会从磁盘重读;Claude 最近修改过的文件优先,最多五个已读或已编辑文件会重新加入;调用过的技能也会在大小上限内重新注入。按路径生效的规则,以及子目录中的 CLAUDE.md,会被概括掉,直到 Claude 再次读取它们适用的文件。
/compact focus on the auth bug fix明确指定摘要的重点,避免让模型自行猜测该保留什么。
如果希望长期保留这个重点,可以在项目 CLAUDE.md 中加入 # Compact instructions 一节,例如要求始终保留修改过的文件清单和测试命令。
为什么长会话每一轮都更贵
模型不会在请求之间自行记住内容。每次你发消息,Claude Code 都会发出新的 API 请求,重新发送完整上下文:系统提示、项目上下文、先前每条消息和工具结果,最后是你的新消息。Claude 每调用一次工具,也会带着整段对话再发一次请求。长会话后期的一行问题,实际上还附带着此前的所有内容。
提示缓存能缓和这种成本,却不能消除它。请求中未变化的部分会从缓存读取,按正常输入价格的一小部分计费。以 2026 年 9 月的 Claude 模型为准,该比例为十分之一或更低。一个大数的一小部分,每次请求都要付,仍会随对话增长;订阅用户的用量上限也仍会被消耗。
缓存也会过期。以 2026 年 9 月的文档为准,订阅会话的缓存有效期是一小时,使用 API 密钥时默认是五分钟。超过有效期后再次请求,整段历史都要从头处理。
成本不是唯一恶化的因素。Claude Code 的最佳实践文档指出,随着上下文窗口填满,性能会下降:Claude 可能忘记早先的指令,或犯更多错误。这就是上下文退化,历史里堆积的失败尝试会使它更严重。
/compact 与 /clear 实际花多少
/clear 本身免费。Claude Code 的成本文档明确说明:需要重新开始而不保留连续性时,/clear 不产生费用。之后的第一条消息仍会携带固定部分的上下文,包括系统提示、工具定义、CLAUDE.md 和记忆,以及你输入的内容。
/compact 是一次模型请求,长会话中可能相当大。为了写摘要,Claude Code 会另外发送一次请求,其中有与当前对话相同的系统提示、工具和完整历史,并在末尾附上摘要指令。输入是会话至今积累的全部内容,输出是摘要,而输出 token 的单价最高。
何时压缩决定了成本。会话进行中,缓存仍有效,历史可按缓存读取价格处理。文档也说,此时的 /compact 费用只是上下文大小所暗示成本的一小部分。如果休息时间超过缓存有效期,整段历史就要作为未缓存输入重新处理。因此,刚恢复一段旧会话就压缩,是最贵的情况。
这笔费用换来之后更便宜的请求:每次后续请求携带摘要,不再携带完整历史。只有会话继续得足够久,且被丢弃的内容确实不再需要,压缩才划算。若想彻底放弃一条错误路线,/rewind 还更便宜:它把对话截回已经缓存过的前缀,不必生成新摘要。
自动压缩何时运行
自动压缩默认开启。对话接近上限时,Claude Code 会先清除较早的工具输出;若仍不够,再像 /compact 一样概括对话。它能让窗口填满后的会话继续运行,但不会让会话一直便宜。
默认触发点很晚。以 2026 年 9 月的文档为准,对话达到模型的上下文上限时会压缩;在 Anthropic API 上使用百万 token 窗口的模型,大约在 967,000 token 时触发,例如 Sonnet 5、Fable 系列以及 Opus 4.7 及更新版本。确切位置取决于模型、服务提供方和设置。此时此前的请求早已反复携带不断增长的历史,压缩本身还要读一个几乎填满的窗口,而且可能恰好发生在任务中途。
可以调整阈值:/autocompact 500k 设置自动压缩前窗口可填满的程度;/autocompact auto 恢复模型默认值。这条命令需要 Claude Code v2.1.221 或更新版本。/config 中的 Auto-compact 设置可关闭自动压缩,手动 /compact 仍可使用。
如何查看上下文填满了多少
/context 会用按类别划分的彩色网格显示当前用量,包括加载了哪些 CLAUDE.md 和记忆文件;某类内容占用过多时还会给出建议。做决定前先运行它。
/context查看窗口里现在有什么,以及哪些内容占用了空间。
如需持续查看,可以把百分比放在状态栏中:/statusline 能按描述设置状态栏,脚本也可直接读取 context_window.used_percentage 字段。/usage 回答的是另一个问题:本次会话花了多少,以及距离套餐上限还有多少。
该选哪一条命令
- 下一项任务与此前无关:用
/clear。旧对话会挤占新任务所需文件的空间,而且每条消息都要为它付费。 - 仍是同一任务,历史很长但思路仍有用:在一个子任务完成等自然节点使用带重点指令的
/compact,不要在步骤中途压缩。 - 会话有一段已无用:用
/rewind。选中走错方向前的消息,选择 Restore conversation 可以丢弃后续对话并保留代码;选择 Summarize up to here 可以压缩更早的内容,保留近期消息。 - 同一个问题改了两次仍失败:用
/clear,带着新发现重新说明任务。Anthropic 的建议是,带着更好提示的新会话,几乎总比堆满纠正记录的长会话有效。 - 只是插问一句:用
/btw,它的回答不会进入对话历史。 - 不确定时:
/clear的试错成本更低。它本身免费,旧对话仍能用/resume找回。
更省的习惯:每项任务一个会话
两条命令都是补救手段。更便宜的习惯是少用补救:任务开始时开新对话,任务结束时清空。
必须跨会话保存的内容,应写进文件,不应只留在历史里。规则写进 CLAUDE.md,它在每次 /clear 和压缩后重新加载;长期工作的进度写进笔记文件,清空前让 Claude 保存。写笔记也要花一轮请求,和压缩类似,但你能决定保留什么,而且文件会留到下一次会话。
如果希望这条习惯自动执行,capsul 可驱动你已经登录的 Claude Code,把每次 capsul ask 当作独立任务,并遵守你设定的 token 预算。它发送任务需要的内容,在达到预算时停止,并告知哪些内容没有纳入。
capsul ask 'fix the flaky checkout test' --budget 3000每条命令对应一项任务,并遵守你设定的上限。
常见问题
Claude Code 该用 /compact 还是 /clear?
下一项任务与此前对话无关时,用 /clear:它本身免费,提供干净的上下文,旧对话仍可通过 /resume 找回。仍在同一任务中途且历史有用时,用 /compact,最好选在自然节点,并给出重点指令,例如 /compact focus on the auth bug fix。不确定时,选 /clear 的试错成本更低。
/compact 会消耗 token 吗?
会。Claude Code 会另外发送一次包含整段对话和摘要指令的请求,生成的摘要也算输出 token。会话进行中,大部分输入可按缓存价格处理;休息时间超过缓存有效期后,历史需要重新处理,刚恢复会话就压缩的成本最高。后续请求因只携带摘要而变便宜。
Claude Code 何时自动压缩对话?
自动压缩默认开启,在对话接近自动压缩窗口时运行;默认阈值接近模型的完整上下文窗口。以 2026 年 9 月的文档为准,在 Anthropic API 上使用百万 token 窗口的模型,阈值约为 967,000 token。/autocompact 可设置其他大小,/config 的 Auto-compact 设置可关闭自动运行,手动 /compact 仍可用。
/clear 会删除 CLAUDE.md 或旧对话吗?
不会。/clear 清空的是对话,不是项目;新对话开始时会重新加载 CLAUDE.md 和自动记忆。旧对话保存在本地,可通过 /resume 恢复。给 /clear 传入名称,例如 /clear release-prep,还会先为旧对话添加便于查找的标签。
怎样查看 Claude Code 的上下文窗口还剩多少?
运行 /context,它按类别显示当前用量,并对占用过多的内容给出建议。若要持续查看,可用 /statusline 配置显示 context_window.used_percentage 的状态栏。/usage 显示会话花费和套餐限额,这是另一种指标。
$ npm i -g @penra/capsul