Skip to content
看累了听个音乐吧

3.1 理解上下文窗口

3.1 理解上下文窗口

一个不太准确但很好用的比喻

想象你正在和一位记忆力很好但工作记忆有限的同事协作。

他能记住对话里说过的每一句话——但他的大脑只有一张固定大小的白板。你们聊得越多,白板越满。当白板快满的时候,他开始不得不擦掉最早写的内容,腾出位置记新的东西。

结果是:你在对话开头说的那些重要规则,他可能已经记不清了。

这就是上下文窗口的工作方式。


上下文窗口里装的是什么

Claude Code 每次会话都有一个上下文窗口,里面装着:

  • 你们的全部对话历史
  • 它读过的每一个文件的内容
  • 每一条命令的输出结果
  • CLAUDE.md 和 Auto Memory 的内容
  • 任何它用工具拿到的数据

这些加在一起,用 token 来计量。一个汉字大约是 1-2 个 token,一行代码大约是 5-15 个 token。

Claude Code 的上下文窗口是 20 万 token,听起来很大——但一个中等规模的代码库加上一个调试过程,几万 token 就没了。


为什么填满了会"变蠢"

上下文窗口有一个不太直觉的特性:填得越满,性能越差。

这不是空间不够用的问题,而是 AI 模型在处理超长上下文时,注意力会被稀释。简单说:东西太多了,它会"抓不住重点"。

常见的症状:

  • 忘记你之前说过的规定(比如"用 pnpm 不用 npm")
  • 给出的建议越来越宽泛,不够精准
  • 开始重复已经说过的内容
  • 修改代码时走偏,不符合你的预期

一旦出现这些情况,基本就是上下文该清了的信号。


怎么看当前用了多少

在 Claude Code 会话里,底部状态栏会实时显示当前上下文用量:

[■■■■■□□□□□] 45% | 89,432 tokens

Claude Code 还提供了一个自定义状态栏的功能(通过 /statusline 命令),可以显示更详细的信息。

💡 经验参考:超过 60-70% 就要开始注意了;超过 80% 建议考虑清空或开新会话。


什么时候该 /clear

/clear 命令会清空当前对话历史,但不会清掉 CLAUDE.md 和 Auto Memory——下次对话开始时,它们还是会自动加载。

建议在这些时机 /clear

  • 完成一个独立任务之后:比如修完一个 bug、写完一个功能,接下来要做不相关的事
  • 感觉它开始走偏的时候:答非所问、忘记规则、反复确认已经说过的事
  • 开始一个全新主题之前:上下文里装的东西和新任务完全没关系

不建议 /clear 的时机:

  • ❌ 还在调试同一个问题的中途——清掉了之前的报错和分析就没了
  • ❌ 正在进行多步骤任务的中间——会丢失任务状态

一个实用习惯

把 Claude Code 的会话想成一次工作任务的范围,而不是一个一直开着的聊天窗口。

任务开始 → 做完 → /clear → 下一个任务。

这样每次对话都在一个干净、聚焦的上下文里,效果会明显好于一个越来越长的"万能会话"。


下一节,我们来看如何用 CLAUDE.md 给每次会话打好基础,让它不需要你每次都重新介绍项目。

基于 CC BY-NC-SA 4.0 协议发布