Claude Code 的上下文窗口包含 Claude 在您的会话中了解的所有内容:您的指令、它读取的文件、它自己的响应以及从不在您的终端中出现的内容。下面的时间线展示了从启动到压缩的完整会话:在您输入之前加载的内容、每个文件读取、规则和 hook 在 Claude 工作时添加的内容,以及子代理如何将大型读取保留在您的上下文之外。有关相同内容的列表形式,请参阅书面分解。

时间线显示的内容

该会话通过具有代表性的令牌计数演示了一个现实的流程:

  • 在您输入任何内容之前:CLAUDE.md、自动记忆、MCP 工具名称和 skill 描述都加载到上下文中。AGENTS.md 文件可以代替 CLAUDE.md 加载。您自己的设置可能会在此处添加更多内容,例如输出样式或来自 --append-system-prompt 的文本。
  • 当 Claude 工作时:每个文件读取都会添加到上下文中,路径范围的规则会自动与匹配的文件一起加载,并且PostToolUse hook在每次编辑后触发。
  • 后续提示:子代理在其自己的单独上下文窗口中处理研究,因此大文件读取不会进入您的窗口。只有摘要和一个小的元数据预告片返回。
  • 在演练结束时:您运行 /compact,它用结构化摘要替换对话。大多数启动内容会自动重新加载;下表显示了每个机制会发生什么。

压缩后保留的内容

当长会话压缩时,Claude Code 会总结对话历史以适应上下文窗口。从 v2.1.198 开始,总结请求继承您会话的扩展思考配置,因此当您的会话启用思考时,它会在启用思考的情况下进行推理,否则保持关闭。思考仅影响摘要的生成方式;您的会话设置之后保持不变。每种内容的处理方式取决于其加载方式:

机制 压缩后
系统提示词和输出样式 两者仍然适用
项目根目录 CLAUDE.md 和无范围规则 从磁盘重新注入
自动记忆 从磁盘重新注入
skill 描述 根据您当前的 skill 重新构建并重新注入。需要 Claude Code v2.1.304 或更高版本
Git 状态快照 如果会话开始时包含快照,Claude Code 会从您的仓库读取一个新的
Claude 在计划模式中编写的计划 从磁盘重新注入
带有 paths: frontmatter 的规则 Claude Code 按需重新加载它们
子目录中的嵌套 CLAUDE.md Claude Code 按需重新加载它们
Claude 读取或编辑的文件 Claude Code 重新读取最多五个,最近修改的优先
调用的 skill 主体 重新注入,每个 skill 上限为 5,000 个 token,总计 25,000 个 token;最旧的首先删除
后台命令和后台子代理 继续运行。Claude Code 提醒 Claude 哪些仍在运行,以便它不会启动重复的
hook 先前添加的上下文 与对话的其余部分一起总结
匹配 compact 源的 SessionStart hooks Claude Code 运行它们并将其输出添加到压缩的上下文中

压缩后立即,Claude Code 重新读取最多五个 Claude 在会话中读取或编辑的文件,选择最近修改的文件。超过 5,000 个 token 的文件作为路径引用返回,不包含其内容,显示为 Referenced file 而不是 Read。

路径范围的规则和嵌套的 CLAUDE.md 文件在 Claude 读取、写入或编辑其触发文件时加载到消息历史中,因此压缩会将它们与其他所有内容一起总结。如果规则必须在压缩过程中保持不变,请删除 paths: frontmatter 或将其移动到项目根目录 CLAUDE.md。

skill 主体在压缩后重新注入,但大型 skill 会被截断以适应每个 skill 的上限,一旦超过总预算,最旧的已调用 skill 就会被删除。截断保留文件的开头,因此请将最重要的指令放在 SKILL.md 的顶部附近。

当上下文填满时

Claude Code 会在接近上限时自动压缩,因此上下文窗口填满并不会结束您的会话。自动压缩的工作方式与时间线中的 /compact 步骤相同。有关它会保留哪些内容,请参阅当上下文填满时。关于 Claude Code 何时也会压缩您闲置的对话,请参阅空闲压缩。

您也可以在自动压缩运行之前采取行动:

  • 带重点进行压缩:在开始一项较长的新任务之前,运行带有指令的 /compact,例如 /compact focus on the auth bug fix。摘要会保留您选择的内容,而不是自动压缩所推测的重要内容。
  • 压缩部分对话:运行 /rewind,选择一条消息,然后选择 Summarize from here 或 Summarize up to here。有关每个选项会保留哪些内容以及如何引导摘要,请参阅回退与摘要。
  • 更早进行压缩:运行带有 token 数量的 /autocompact,例如 /autocompact 500k,以设置上下文窗口填充到多满时运行自动压缩。有关可接受的值和覆盖方式,请参阅设置自动压缩窗口。
  • 在任务之间清除:切换到不相关的工作时运行 /clear。旧的对话会挤占您接下来需要的文件,并且在每条消息上都会消耗 token。
  • 委派大量读取:将研究工作交给子代理,这样文件内容会保留在它的上下文窗口中,而不是您的上下文窗口中。

如果您需要更大的窗口而不是更短的对话,Fable 模型、Sonnet 5 及更高版本、Haiku 5.5、Opus 4.6 及更高版本以及 Sonnet 4.6 支持 100 万 token 的上下文窗口。有关各计划的可用性以及如何选择 [1m] 模型变体,请参阅扩展上下文。在更大的上限下,压缩的工作方式相同。

自动压缩的运行时机取决于您的模型和配置。有关每个模型的边界,请参阅默认自动压缩阈值;如果 Claude Code 为您的模型 ID(例如 LLM 网关别名)假定了错误的窗口,请参阅为网关或自定义模型 ID 更正窗口。

检查您自己的会话

该可视化使用代表性数字。要在任何时刻查看您的实际上下文使用情况,请运行 /context 以获取按类别的实时分解和优化建议,包括加载了哪些 CLAUDE.md 和自动内存文件。运行 /memory 以打开和编辑这些文件。

相关资源

有关时间线中显示的功能的更深入覆盖,请参阅这些页面: