CoreCode博客

用法

Claude Code 上下文窗口详解:上下文满了怎么办、compact 会保留什么

发布于 · 最后核对

上下文窗口装着 Claude 在这次会话里知道的一切:你的指令、读过的文件、它自己的回复,还有从来不会显示在终端里的内容。这一页按 Anthropic 的 Explore the context window 文档,中文整理启动时加载什么、怎么查看用量、上下文满了会怎样、/compact 之后哪些内容还在,以及 /compact、/clear、/rewind 各自怎么用。文档于 2026 年 10 月 30 日核对。

要点
  • 上下文窗口里不只有你的对话:CLAUDE.md、auto memory、MCP 工具名和 skill 描述在你输入任何内容之前就已经加载。
  • 运行 /context 可以看到按类别划分的实时用量,以及优化建议。
  • 接近上限时 Claude Code 会自动压缩,所以上下文满了不会结束会话。
  • 压缩后,项目根目录的 CLAUDE.md 和 auto memory 会从磁盘重新注入;带 paths: 的规则、子目录里的 CLAUDE.md 则要等再次触发才会重新加载。
  • 想让摘要保留你关心的内容,运行 /compact 并写上重点,例如 /compact focus on the auth bug fix;切换到不相关的工作时用 /clear。

上下文窗口里装了什么

文档用一个带时间线的模拟,演示一次会话从启动到压缩的全过程,里面用的是有代表性的 token 数字,不是你的真实用量。按文档的描述,顺序大致是这样:

subagent 的写法见 Claude Code subagents 使用教程,skill 的写法见 Claude Code skills 使用教程,CLAUDE.md 的写法见 CLAUDE.md 怎么写。

怎么查看上下文用量

文档说,要看自己会话的真实用量,随时运行 /context:它按类别给出实时明细和优化建议,包括加载了哪些 CLAUDE.md 和 auto memory 文件。运行 /memory 可以打开并编辑这些文件。

命令文档里对这两个命令的描述如下:

命令文档的说明
/context [all]把当前上下文用量显示成彩色网格,并针对占用上下文较多的工具、memory 膨胀和容量告警给出优化建议。对话超出上下文窗口时,输出里会带一条警告,显示超出了多少、用哪个命令可以腾出空间。在全屏模式下,/context 会把逐项明细折叠起来,让网格保持可见,加上 all 可以展开。
/memory编辑 CLAUDE.md 文件,开启或关闭 auto memory,并查看 auto memory 条目。

成本文档还提到,用 /usage 可以查看当前的 token 用量,也可以配置状态栏来持续显示。/usage 显示的是会话费用、套餐用量限额和活动统计。

上下文满了会怎样

接近上限时,Claude Code 会自动压缩,所以上下文窗口满了并不会结束你的会话。自动压缩的做法和时间线里的 /compact 一步相同。

压缩触发的位置取决于你的模型和配置。文档把各模型的默认阈值,以及 Claude Code 对你的模型 ID 假设了错误窗口时怎么修正,放在 model-config 页面,这一页没有给出具体数字。

如果需要的是更大的窗口,而不是更短的对话:文档说 Fable 模型、Sonnet 5 及之后、Haiku 5.5、Opus 4.6 及之后、Sonnet 4.6 支持 1 million token 的上下文窗口,各套餐是否可用、怎么选 [1m] 模型变体,见文档的 Extended context 一节。文档同时说明,窗口更大时压缩的方式不变。

压缩后什么保留、什么不保留

长会话压缩时,Claude Code 会对对话历史做摘要,让它装进上下文窗口。从 v2.1.198 起,摘要请求会沿用你会话的 extended thinking 配置:会话开着 thinking,摘要时就带着 thinking 推理,否则就关着。thinking 只影响摘要的生成,压缩之后你的会话设置不变。每一类内容怎么处理,取决于它是怎么加载进来的:

机制压缩之后
系统提示和 output style两者仍然生效
项目根目录的 CLAUDE.md 和无范围限定的规则从磁盘重新注入
Auto memory从磁盘重新注入
Skill 描述按你当前的 skills 重新构建并注入。需要 Claude Code v2.1.304 或更高版本
Git status 快照如果会话启动时带了一份,Claude Code 会从你的仓库重新读取一份新的
Claude 在 plan mode 里写的计划从磁盘重新注入
带 paths: frontmatter 的规则Claude Code 按需重新加载
子目录里的嵌套 CLAUDE.mdClaude Code 按需重新加载
Claude 读过或编辑过的文件Claude Code 重新读取最多五个,按最近修改的优先
已调用的 skill 正文重新注入,每个 skill 上限 5,000 token,合计上限 25,000 token;最早的先被丢弃
后台命令和后台 subagent继续运行。Claude Code 会提醒 Claude 哪些还在运行,避免它重复启动
之前由 hook 加进来的上下文和对话的其余部分一起被摘要
匹配 compact 来源的 SessionStart hookClaude Code 会运行它们,并把输出加进压缩后的上下文

有三点文档特别说明:

压缩之前你能做什么

在自动压缩触发之前,你可以自己动手。文档列了五种做法:

做法怎么做
带重点地压缩开始一个长的新任务之前,运行带说明的 /compact,例如 /compact focus on the auth bug fix。摘要会保留你选的内容,而不是自动压缩猜测的重点。
压缩对话的一部分运行 /rewind,选一条消息,选择 Summarize from here 或 Summarize up to here。
提前压缩运行 /autocompact 并带上 token 数,例如 /autocompact 500k,设置上下文窗口填到多满才触发自动压缩。
任务之间清空切换到不相关的工作时运行 /clear。旧对话会挤掉你接下来需要的文件,并且每条消息都要为它付 token。
把大量读取交给 subagent把调研交给 subagent,文件内容留在它的上下文窗口里,而不是你的。

命令文档对相关命令的说明:

命令文档的说明
/compact [instructions]通过摘要当前的对话来腾出上下文。可以选择性地传入摘要的重点说明。
/clear [name]开始一个上下文为空的新对话。传入名字,可以在 /resume 选择器里给上一个对话加标签。想在继续同一个对话的同时腾出上下文,改用 /compact。用 /resume 可以恢复上一个对话。别名:/reset、/new。
/rewind把对话和(或)代码回退到之前的某个时间点,或者从选中的消息开始做摘要。别名:/checkpoint、/undo。
/autocompact [auto|<tokens>]设置自动压缩窗口:上下文窗口填到多满之前 Claude Code 才自动压缩。可以传入 500k 这样的大小,或用 auto 回到针对你模型调好的窗口。Claude Code 把这个值保存到用户设置,并应用于当前会话。需要 Claude Code v2.1.221 或更高版本。

让上下文保持精简

成本文档里和上下文有关的建议,摘录如下:

这些做法在费用上的效果,我们的 Claude Code 省钱指南里有按成本角度的讲解,缓存的行为见缓存说明;这一页只讲上下文本身怎么运作。

常见问题

上下文窗口满了,会话会中断吗?

不会。文档说 Claude Code 会在接近上限时自动压缩,所以窗口满了并不会结束你的会话。你也可以在它触发之前自己运行 /compact,用重点说明决定摘要保留什么。具体在什么位置触发,取决于你的模型和配置。

压缩之后,CLAUDE.md 里的规则还在吗?

项目根目录的 CLAUDE.md 和无范围限定的规则会从磁盘重新注入。带 paths: frontmatter 的规则和子目录里的 CLAUDE.md 不同:它们是按需重新加载的,在压缩时会被摘要掉。如果一条规则必须跨压缩保留,文档的建议是去掉 paths: frontmatter,或者把它移到项目根目录的 CLAUDE.md。

/compact 和 /clear 有什么区别?

/compact 摘要当前对话来腾出上下文,对话继续;/clear 开始一个上下文为空的新对话,上一个对话可以用 /resume 恢复。命令文档说得很直接:想在继续同一个对话的同时腾出上下文,用 /compact。切换到不相关的工作时,文档建议用 /clear。

来源