跳到正文
FunCoding

搜索

搜索文档、智能体、博客、Skill 和 MCP

上下文窗口

上下文窗口在一次会话里怎么被填满:启动时自动加载什么、压缩后什么会保留、快满时能做什么,以及怎么查看自己会话的用量。

官方这一页是一个交互式模拟,演示 Claude Code 的上下文窗口在会话中如何被逐步填满。这里整理它想说明的要点(模拟里的 token 数是示意性的,不是你会话里的真实数字)。

时间线里发生了什么

模拟走了一遍典型的流程:

  • 你输入任何内容之前:CLAUDE.md、自动记忆、MCP 工具名和 Skill 描述就已经加载进上下文了。AGENTS.md 文件也可能加载,单独或与 CLAUDE.md 一起。你自己的设置可能在这里再增加东西,比如输出风格
  • Claude 工作时:每次读文件都会增加上下文;按路径限定的规则会随匹配的文件自动加载;每次编辑后 PostToolUse Hook 会触发
  • 后续提示:子智能体在自己独立的上下文窗口里完成调研,所以大量的文件读取不进你的上下文,只有摘要和一小段元数据回来
  • 最后:你运行 /compact,它用一份结构化摘要替换对话;大部分启动内容会自动重新加载

压缩后什么会保留

长会话压缩时,Claude Code 会总结对话历史以适应上下文窗口。从 v2.1.198 起,摘要请求继承你会话的扩展思考配置。各机制在压缩后的表现:

机制压缩后
系统提示和输出风格两者仍然适用
项目根 CLAUDE.md 和不限定路径的规则从磁盘重新注入
自动记忆从磁盘重新注入
git 状态快照Claude Code 从你的仓库读取一份新的
Claude 在计划模式里写的计划从磁盘重新注入
带 paths: 前置信息的规则Claude 读到它们匹配的文件时重新加载
子目录里嵌套的 CLAUDE.mdClaude 读到那个子目录里的文件时重新加载
Claude 读过或编辑过的文件Claude Code 重新读取最多五个,最近修改的优先
已调用的 Skill 正文重新注入,每个 Skill 上限 5,000 token、总计 25,000 token,最旧的先丢弃
后台命令和后台子智能体继续运行,Claude Code 会提醒 Claude 哪些仍在运行,避免重复启动
Hook 之前添加的上下文与对话的其余部分一起被总结
匹配 compact 来源的 SessionStart HookClaude Code 运行它们并把输出加入压缩后的上下文

压缩之后,Claude Code 立即重新读取 Claude 在会话里读过或编辑过的至多五个文件(选最近修改的);超过 5,000 token 的文件回来时只是一个路径引用,不含内容。按路径限定的规则和嵌套 CLAUDE.md 在触发文件被读取时加载进消息历史,所以压缩会把它们和其他一切一起总结掉;如果某条规则必须在压缩后保留,去掉 paths: 前置信息,或把它移到项目根 CLAUDE.md。Skill 正文在压缩后重新注入,但大 Skill 会被截断以适应单个上限,总预算超出后最旧调用的 Skill 先被丢弃;截断保留文件开头,所以把最重要的指令放在 SKILL.md 靠前的位置。

上下文快满时

Claude Code 在接近限制时自动压缩,所以上下文窗口满了不会结束你的会话。你也可以在自动压缩运行之前行动:

  • 带聚焦地压缩:开始一个长的新任务之前运行 /compact 并带上指令,如 /compact focus on the auth bug fix,摘要就保留你选的内容,而不是自动压缩猜测重要的内容
  • 压缩部分对话:运行 /rewind,选一条消息,选择 Summarize from here 或 Summarize up to here
  • 更早压缩:运行 /autocompact 并带 token 数(如 /autocompact 500k),设置上下文窗口填到多满时自动压缩运行
  • 任务之间清空:切换到无关工作时运行 /clear。旧对话会挤占你接下来需要的文件,并在每条消息上花 token
  • 把大量读取委派出去:把调研交给子智能体,文件内容留在它的上下文窗口里,而不是你的

如果你需要的是更大的窗口,而不是更小的对话:Fable 模型、Sonnet 5 及更新版本、Opus 4.6 及更新版本和 Sonnet 4.6 支持 100 万 token 的上下文窗口。

查看你自己的会话

可视化用的是有代表性的数字。想随时查看你实际的上下文使用,运行 /context,得到按类别划分的实时明细,附带优化建议,包括加载了哪些 CLAUDE.md 和自动记忆文件;运行 /memory 打开并编辑这些文件。