深度

Claude Code Context Window 完全拆解:从会话启动到 Compaction 的 Token 全流程

基于官方文档全面拆解 Claude Code 上下文窗口的完整生命周期:从会话启动前的预装内容、工作过程中的累加机制,到 Compaction 后不同机制(CLAUDE.md/paths规则/Skill)的存活差异,并给出主动管理 Token 预算的实战建议。

2026/7/125分钟 阅读ClaudeEagle

Claude Code 的上下文窗口(Context Window)保存了 Claude 在一次会话中知道的一切——你的指令、它读取的文件、它自己的回复,以及一些从不会出现在你终端里的内容。官方文档提供了一个完整的时间线,本文将其转化为文字版的深度拆解。

会话启动前:已经预装的内容

在你输入第一个字之前,以下内容就已经加载进上下文:

  • CLAUDE.md
  • 自动记忆(Auto memory)
  • MCP 工具名称
  • Skill 描述

你自己的额外设置也可能在这里加入更多内容,比如 Output Style或通过 --append-system-prompt 追加的文本——两者都以同样的方式进入系统提示词(System Prompt)。

bash
# 会影响启动时上下文体积的因素
claude --append-system-prompt "额外的团队约定文本"
# ↑ 这段文本会和 CLAUDE.md 一样,进入系统提示词部分

工作过程中:持续增长的部分

随着 Claude 工作,上下文会持续增长:

  • 每次文件读取都会增加上下文
  • 路径限定的规则(path-scoped rules)会在匹配的文件被读取时自动加载
  • PostToolUse Hook 会在每次编辑后触发

后续追问:Subagent 如何隔离大量读取

A subagent handles the research in its own separate context window, so the large file reads stay out of yours. Only the summary and a small metadata trailer come back.

这正是 Subagents 存在的核心价值——当你追问一个需要研究大量文件的问题时,Subagent 在自己独立的上下文窗口里处理这些大文件读取,只有摘要和一小段元数据会返回到你的主上下文中,大量原始内容不会污染你的对话。

会话末尾:Compaction 如何重构对话

当对话变长,/compact 会用一份结构化摘要替换掉对话历史。这里有一个 v2.1.198 引入的细节:

As of v2.1.198, the summarization request inherits your session's extended thinking configuration.

也就是说,如果你的会话本来就开启了 Extended Thinking,生成摘要时也会用 Thinking 模式推理(但只影响摘要生成过程本身,不会改变你会话后续的设置)。

Compaction 之后:哪些内容能存活,哪些会消失

这是本文档最实用的一张表——不同机制加载的指令,在 Compaction 之后的命运完全不同:

机制Compaction 之后
系统提示词和 Output Style不受影响;不属于消息历史的一部分
项目根目录 CLAUDE.md 和无范围限定的规则从磁盘重新注入
自动记忆从磁盘重新注入
paths: frontmatter 的规则丢失,直到匹配文件再次被读取
子目录中嵌套的 CLAUDE.md丢失,直到该子目录中的文件再次被读取
被调用过的 Skill 正文重新注入,但每个 Skill 上限 5000 Token、总计上限 25000 Token,超出部分优先丢弃最旧的
Hooks不适用;Hooks 作为代码运行,不是上下文的一部分

关键启示一:路径限定规则会「隐身」

paths: frontmatter 的规则和嵌套 CLAUDE.md,本质上是在触发文件被读取时才加载进消息历史,所以 Compaction 会把它们和其他内容一起摘要掉,下次读到匹配文件时才会重新加载。如果某条规则必须在 Compaction 后依然存在,解决方法是:去掉 paths: frontmatter,或者把它移到项目根目录的 CLAUDE.md 中。

关键启示二:Skill 正文会被截断,且保留开头

Truncation keeps the start of the file, so put the most important instructions near the top of SKILL.md.

这是一个直接影响 Skill 编写习惯的细节——截断只保留文件开头部分,所以编写 SKILL.md 时,应该把最重要的指令放在文件靠前的位置,确保即使被截断也不会丢失关键信息。

上下文快满时可以主动做的三件事

Claude Code 会在接近上限时自动执行 Compaction,但你也可以在此之前主动介入:

bash
# 1. 带焦点的手动压缩:在开始新的长任务前,指定要保留什么
> /compact focus on the auth bug fix

# 2. 切换任务时清空,避免旧对话挤占空间和消耗 Token
> /clear

# 3. 把大量读取委托给 Subagent,让文件内容留在 Subagent 自己的上下文里
> 帮我研究一下这个模块的历史实现,用一个 subagent 来做

更大的上下文窗口选项

如果你需要的是更大的窗口而不是更小的对话,Fable 5、Sonnet 5、Opus 4.6 及更新版本、Sonnet 4.6 都支持 100 万 Token 的上下文窗口(Sonnet 5 默认即以 1M 运行,不需要额外选择 [1m] 变体)。

总结

理解 Context Window 的完整生命周期——启动预装 → 工作中累积 → Compaction 摘要 → 各机制存活规则不同——能帮你更精准地控制上下文预算:把关键规则放进不带 paths: 的项目级 CLAUDE.md、把大量文件读取甩给 Subagent、把 SKILL.md 的重点内容前置。这些细节看似琐碎,但在长会话、大项目场景下,直接决定了 Claude 是否还「记得」你真正在意的约束条件。


来源:Explore the context window — Claude Code 官方文档,Anthropic

相关文章推荐

深度Claude Code Skills vs CLAUDE.md vs Plugins vs Sub-agents:何时用哪个的完整决策指南Claude Code 四种扩展机制的完整决策指南:四种机制本质对比表;CLAUDE.md 适合放/不适合放的内容清单(含内容精简测试);Skills 四种模式和完整决策树;Plugins 与 Skills 的选择对比表及 Token 开销警告;Sub-agents 三种触发方式和 context: fork 对比;四种组合使用模式;以及快速决策查询表(12 个场景)。2026/5/10深度Claude Code 记忆系统深度解析:CLAUDE.md、Auto Memory、.claude/rules/ 如何协同Claude Code 记忆系统完整解析:CLAUDE.md 和 Auto Memory 的分工、四种作用域配置、.claude/rules/ 路径感知规则用法、写有效指令的 4 个原则,以及记忆不生效的排查方法。2026/4/13深度Claude Code Memory 系统完全指南:CLAUDE.md vs Auto Memory、.claude/rules/ 路径规则与大团队管理Claude Code Memory 系统完整指南:CLAUDE.md vs Auto Memory 5 维度对比(谁写/内容/范围/加载/适合内容)、四个作用域(Managed policy/Project/User/Local 文件路径/优先级)、/init 快速创建、4 条高效指令原则(<200行/结构化/具体可验证/一致性)、@ 语法导入(相对路径/5层递归/批准对话框)、CLAUDE.md 向上遍历加载机制(CLAUDE_CODE_ADDITIONAL_DIRECTORIES_CLAUDE_MD)、.claude/rules/ 路径规则系统(路径特定规则/glob 模式/按需加载节省 Token/symlink 跨项目共享)、大团队管理(组织 MDM 部署/claudeMdExcludes 排除),以及 Auto Memory(工作机制/目录 hash 存储/启用禁用 /memory 界面)和四大故障排查。2026/3/9深度Claude Code 并行工作四种方式完全对比:Subagents、Agent View、Agent Teams、Dynamic Workflows 怎么选基于官方文档深度对比 Claude Code 四种并行处理方式:Subagents、Agent View、Agent Teams 和 Dynamic Workflows,从谁来协调工作、工作者是否需要相互通信、任务是否修改同批文件三个关键维度出发,帮你快速选对工具,同时介绍 Worktrees 和 /batch 这两个辅助能力的定位。2026/7/12深度Claude Code v2.1.207 安全深度解析:插件 headersHelper Shell 注入漏洞修复始末深度解析 Claude Code v2.1.207 修复的插件系统 Shell 注入漏洞:${user_config.*} 在 Shell 形式命令中被拒绝,Hooks 需改用 exec 形式或环境变量,Monitors 和 headersHelper 需在脚本内部读取配置。同步解析关联的 pluginConfigs 读取来源收紧措施。2026/7/11深度Claude Code 7 月第二周更新全景:v2.1.202-206 从工作流规模控制到安全加固2026 年 7 月 6 日至 9 日,Claude Code 连续发布 5 个版本。本文串联四条主线:Dynamic Workflows 走向可控与可观测、/doctor 从诊断工具进化为体检+优化助手、安全默认值持续收紧、后台代理与 Worktree 稳定性持续打磨。2026/7/10