完整课件

1.5 上下文窗口:一切最佳实践的根源

课型:讲解课 | 难度:⭐ | 前置课:1.4 | 预估学习时长:20-30 分钟 | 本课交付物:一套上下文管理决策规则(何时清、何时压、何时开新会话)

你大概已经遇到过这个怪现象:新开的会话一次就答对,聊了一下午的老会话却开始忘事、犯低级错误——同一个模型,为什么越聊越笨?答案只有一个词:上下文窗口。它是 Claude 在一次会话里「看得见」的全部内容——你的指令、它读过的文件、跑过的命令输出、它自己的回复,还包括一批从不显示在终端里的隐藏内容(官方上下文窗口图解)。官方把上下文管理列为所有最佳实践背后的第一约束(官方最佳实践),这一课把它讲透。做完这课,你会得到一套可归档的上下文管理决策规则:何时清、何时压、何时开新会话。

一、窗口里装着什么:你看不见的也占地方

很多人以为上下文就是「聊天记录」,实际它在你敲第一个字之前就已经开始被占用了。启动一个会话,Claude Code 会自动加载:系统提示、CLAUDE.md、auto memory、MCP 工具名列表、skills 描述——这些都不会显示在终端里,但都占窗口(官方上下文窗口图解)。会话开始后,每读一个文件、每跑一条命令、每轮对话,都在继续往里塞。

上下文窗口:标准 200K token 启动即加载:你看不见的部分 会话中累积:越干活越多 接近上限 自动压缩:历史被摘要替换 系统提示 CLAUDE.md / auto memory MCP 工具名 + skills 描述 你的每条消息与 Claude 的回复 读过的每个文件内容 每条命令的输出

图:上下文窗口由「启动即加载」和「会话累积」两部分填充,接近上限时触发自动压缩(构成与数值见 官方上下文窗口图解)。

标准窗口是 200K token;Fable 5、Sonnet 5 等新模型支持 1M 扩展窗口,但那是「把桶换大」,不是「不用管水位」(官方上下文窗口图解)。一次调试会话或代码库摸底就可能消耗几万 token(官方最佳实践)——桶再大也经不起不管。

想亲眼看看?在任意会话里跑 /context,会得到你当前窗口按类别的实时占用和优化建议;/memory 则列出启动时加载了哪些 CLAUDE.md 和记忆文件(官方上下文窗口图解)。

二、为什么越满越笨

LLM 的性能会随上下文填充而下降:窗口越满,Claude 越容易「忘记」早先的指令、犯更多错误。官方的原话是——上下文窗口是最需要管理的资源官方最佳实践)。

这解释了两个最常见的翻车模式(详细拆解见 2.10 坑合集①:五大失败模式与四级验证强度):

  • 大杂烩会话:任务 A 聊一半插进任务 B,再回头做 A——窗口里塞满与当前任务无关的内容,两边都变笨。
  • 反复纠错:Claude 错了你纠正、还错再纠正——失败的尝试全留在窗口里,继续污染后面的每一步。官方给的经验线是:同一问题纠正两次仍错,就该 /clear 重来,用学到的信息写一个更好的初始提示词(官方最佳实践)。

记住这句就够了:你和 Claude 的每一步交互都在花「上下文预算」,省着花的人才能一直聪明。后面所有课的最佳实践——精确提示词、子代理、/clear 纪律——本质上都是这一条的推论。

三、三件武器怎么选:清、压、隔离

管理水位的武器就三类,对应三种场景(依据均为 官方最佳实践官方上下文窗口图解):

场景动作为什么
切换到不相关的新任务/clear 整窗清空旧任务内容对新任务是纯噪音,留着只会降智
长任务做到一半、窗口渐满/compact 聚焦指令(如 /compact 只保留 API 改动主动压缩能指定保留什么;等自动压缩就只能靠它猜
同一问题纠正两次仍错/clear + 重写初始提示词失败尝试已污染窗口,清空重来几乎总是更快
需要大量读文件的调研交给子代理子代理在独立窗口里读,只把结论带回来(详见 3.5 Subagents:给自己配一队专家)
顺口一问的小问题/btw答案不进会话历史,零上下文成本

这张表就是本课交付物。两个补充判断:其一,窗口满了不是世界末日——接近上限时会自动压缩,会话不会中断,但自动压缩保留什么由系统猜测,不如主动 /compact 可控。其二,压缩不是无损的:项目根 CLAUDE.md、auto memory 会从磁盘重新注入,但带路径作用域的规则、子目录 CLAUDE.md 会暂时丢失,直到再次读到相关文件(官方上下文窗口图解;记忆体系详见 2.2 CLAUDE.md 与记忆体系)。

[!note] 本课不展开的操作 /rewind 按检查点回退、「Summarize from here」局部压缩,属于会话管理实操,下一课 1.6 后悔药:checkpoint 回滚与会话管理 带你动手。

动作落点:现在就看一眼你自己的水位

打开你手头任意一个 Claude Code 会话,跑这两条命令:

# 查看当前窗口按类别的实时占用与优化建议
/context

# 查看启动时加载了哪些 CLAUDE.md 与记忆文件
/memory

然后把上面那张决策表另存为 context-rules.md——它就是你以后每次会话的「水位操作手册」。

练习

在你最近一个真实项目会话里跑 /context,记下占用最大的类别是什么;把决策规则表存进 claude-learning-lab/notes/context-rules.md,并在本周的实际工作中主动用一次带聚焦指令的 /compact,对比压缩前后 /context 的变化。

小结

回到开头的怪现象:老会话变笨不是模型退化,是窗口塞满了噪音。一句话提炼本课——上下文是稀缺资源,Claude Code 的一切最佳实践都是围绕省上下文展开的;三个关键词:看水位(/context)、控水位(/clear、/compact)、隔离大开销(子代理)。想一想:你日常工作里哪类操作最费上下文——是反复读大文件,还是一个会话干到底?下一课学「后悔药」:checkpoint 回滚,让你敢放手让 AI 大改代码。

关联

  • 1.4 Claude Code 如何工作:agent loop、内置工具与权限确认(上一课:窗口里的内容如何被 agent loop 消费)
  • 1.6 后悔药:checkpoint 回滚与会话管理(下一课:/rewind 与会话管理实操)
  • 2.2 CLAUDE.md 与记忆体系(哪些内容每次启动都会占窗口)
  • 3.5 Subagents:给自己配一队专家(隔离大开销的实操)
  • 官方文档:上下文窗口交互式图解 · 最佳实践:把上下文当作第一约束

On this page