跳转到内容

上下文窗口怎么算的:会忘记前面说的吗

📍 Claude Code 干活

一个友善的 AI 机器人头部是透明容器,里面装着满满的 token 纸条

跟 Claude Code 从上午聊到下午,中间让它读了一大堆文件。某个时刻你输入:

「把上午那个 endpoint 的命名再改一下,跟开头你提的那个风格一致。」

它愣了一秒,然后说:

「抱歉,我没看到「上午那个 endpoint」的上下文。能再贴一下吗?」

你皱眉。那个 endpoint(接口)你明明上午刚跟它讨论过。它怎么就忘了?

不是 AI 抽风,是它的「短期记忆」装满后被压缩过:前面的对话只剩一段摘要,细节没了。这就是上下文窗口(context window)的核心问题。

读懂这一篇,你会知道:

  • 怎么看你现在用了多少记忆(/context 命令)
  • 快满了会发生什么(auto-compact 自动压缩)
  • 三种主动给它腾地方的方法

token 像小纸条一样从传送带流进一个矩形窗口

简单粗暴的定义:

Claude 在一次对话里「能同时看到的所有文字」就是上下文。

它包括:

  • 你的每一条问话
  • 它的每一条回复
  • 你让它读过的所有文件内容
  • 它跑过的命令的输出
  • 你的 CLAUDE.md 文档
  • 它使用的工具调用记录

全部加起来,会被换算成一个数字单位叫 token(模型计数用的小单位。粗略说,国产模型 1 个汉字约 0.5–1 个 token,Claude 这类海外模型处理中文通常更多一些;英文 1 个单词约 1–2 个 token。准确数字以工具显示的用量为准)。

模型一次能装下的 token 总数 = 上下文窗口大小。

超出这个数就装不下了:工具只能把前面的内容压缩成摘要,或者提示你清空重来,前面的细节就会丢,模型就「忘事」了。

三个不同高度的容器对比模型容量

模型(截至 2026-10-12,各家 API 官方公布;豆包一行核对于 2026-10-05,Gemini 一行核对于 2026-10-19)上下文窗口用户体感
Claude Fable 5.1 / Opus 5.5 / Sonnet 5.5(Sonnet 5.5 于 2026-09-28 发布,上一代 Sonnet 5 也是 100 万)100 万 token很难聊满(≈ 大半本《红楼梦》)
Claude Haiku 5.5(2026-10-07 发布;上一代 Haiku 4.5 是 20 万,已转为旧版、仍可调用)100 万很难聊满(轻快便宜档;一次请求带的全部内容超过 10 万 token 时,单价更高)
DeepSeek(deepseek-flash / deepseek-v4-pro)100 万很难聊满
OpenAI GPT-6 Astra / GPT-6.1 Sol / GPT-6 Luna(2026-09-29 Sol 升级为 6.1 版,窗口不变)105 万很难聊满
Google Gemini 4 Argon / Gemini 3.x(如 3.8 Flash)(Gemini 4 Argon 2026-10-13 起对付费 API 开放,它的窗口是输入和输出合计)约 105 万很难聊满
豆包 Doubao-Seed 2.1 Pro(2026-09-16 上线的新版)1024K(约 100 万);更早的 2.1 版和 2.0 系列是 25.6 万看你用的是哪一版
千问 qwen3.8-max / qwen3.7-plus / qwen3.8-flash(官方文档现在首推的三款;更早的 qwen3.6 系列也是 100 万)100 万很难聊满
文心 ERNIE 5.1 / 5.012.8 万长任务要勤压缩

关键结论:

  • 100 万左右已经是多家旗舰 API 的共同水平:Claude、DeepSeek、GPT、Gemini、豆包新版、千问都在这一档,Claude 并不是独一份。窗口大也不等于不会忘:读的文件多了一样会满,压缩后前面只剩摘要。
  • DeepSeek 的 100 万主要走 API 调用,Claude Code + DeepSeek 配置默认就走它。
  • 网页版和 App 能用多大的窗口,跟 API 不一定一样:Claude 付费版公布的是 100 万;ChatGPT 按套餐和模式分,从 2.7 万到 40 万不等;豆包等国内 App 官方没有公布。别直接拿 API 的数字去推。

所以工具之间的差别,主要不在窗口大小,而在具体功能、套餐和你给它的权限;窗口大小决定的是一次能摆多少材料、多久要压缩一次。

终端窗口里有一条进度条显示约 65% 填充

在 Claude Code 内输入:

/context

它会画一张彩色方格图(每个小格代表一小块上下文),旁边列出各类内容各占多少。大致长这样(示意:数字是编的,真实界面是彩色的,具体类别以你电脑上显示的为准):

Context Usage
⛁ ⛁ ⛁ ⛁ ⛁ ⛁ ⛁ ⛁ ⛁ ⛁ Opus 5.5 (1M context)
⛁ ⛁ ⛁ ⛁ ⛁ ⛁ ⛁ ⛁ ⛀ ⛶ claude-opus-5-5
⛶ ⛶ ⛶ ⛶ ⛶ ⛶ ⛶ ⛶ ⛶ ⛶ 382k/1m tokens (38%)
⛶ ⛶ ⛶ ⛶ ⛶ ⛶ ⛶ ⛶ ⛶ ⛶
⛶ ⛶ ⛶ ⛶ ⛶ ⛶ ⛶ ⛶ ⛶ ⛶ Estimated usage by category
⛁ System prompt: 3k tokens (0.3%)
⛁ System tools: 15k tokens (1.5%)
⛁ MCP tools: 2k tokens (0.2%)
⛁ Memory files: 8k tokens (0.8%)
⛁ Skills: 3k tokens (0.3%)
⛁ Messages: 351k tokens (35.1%)
⛶ Free space: 618k (61.8%)

几个类别的意思:System prompt 和 System tools 是 Claude Code 自带的说明和工具;MCP tools 是你接的外部工具;Memory files 是 CLAUDE.md 和自动记忆;Skills 是技能说明;Messages 是对话本身,你让它读过的文件、它跑过的命令输出都算在这里。

怎么读这个报告:

  • 38% 用完了 — 还很安全,继续聊
  • 超过 70% — 开始留意,考虑 /compact
  • 超过 90% — 马上 /compact 或 /clear
  • 快满时 — Claude Code 会自动压缩(用 100 万窗口的模型,默认在约 96.7 万 token 时触发)。想让它早点压缩,可以用 /autocompact 设一个数,比如 /autocompact 500k;按本站 DeepSeek 配置设置的,到约 78.6 万 token 就会压缩

按类别看哪一块占得最大:

  • Messages 大 → 聊得太长、读的文件太多,该 /compact;换任务了就 /clear
  • Memory files 大 → 你的 CLAUDE.md 或自动记忆写臃肿了,该精简
  • MCP tools 大 → 接的外部工具太多,用不上的在 /mcp 里关掉(走 DeepSeek 时工具说明会全部预先加载,更占地方)

3 格画面 → 漏斗压缩 → 半满,展示 auto-compact 流程

Claude Code 不会让你「装超」就死掉:快满时它先自己腾地方,实在腾不出来,就停下来等你处理。

🟢 第一步:自动压缩(auto-compact)

Section titled “🟢 第一步:自动压缩(auto-compact)”

快满时(用 100 万窗口的模型,默认约 96.7 万 token),Claude Code 会先清掉较早的工具输出,再自动把前面的对话总结成一段摘要,腾出空间。

你看到的体感:

  • 对话里出现一条提示,说明前面的对话已经被压缩成摘要
  • 它接下来的回复记得「大致内容」,但不记得每一句原话
  • 你早期只在对话里说过的规则(比如「不许加注释」),压缩后可能只剩摘要里的一句,甚至丢了

类比:就像你把 30 页的会议纪要总结成 1 页提纲——核心议题还在,但具体话术丢了。

还有一种不等快满就压缩的情况,叫闲置压缩(idle compaction,Claude Code v2.1.299 起有):在终端里用的时候,对话已经超过 20 万 token,你又放着不动大约 54 分钟,它会赶在提示缓存(服务器把最近处理过的对话暂存一小时,接着聊时可以直接接上)过期之前,先压缩一次,这样你回来发下一条消息时,不用把整段长对话重新处理一遍。所以离开一会儿回来,发现对话已经变成摘要,不是出了故障。不想要的话,v2.1.302 起可以在 /config 里把 Idle compaction 这一项关掉,也可以在设置文件 settings.json 里写上 "idleCompaction": false(官方更新日志,英文)。

🟡 第二步:实在装不下,就报错等你处理

Section titled “🟡 第二步:实在装不下,就报错等你处理”

如果压缩完还是装不下(比如你一直在让它读超大文件),它不会悄悄丢掉最早的对话,而是让这次请求失败,界面提示:

Context limit reached · /compact or /clear to continue

意思是「上下文满了,先 /compact 或 /clear 再继续」。这时手动 /compact(最好写上要保留什么,见下面方法 1),或者 /clear 开新一轮。如果刚压缩完马上又被大文件塞满、连续几次,它会报 Autocompact is thrashing 并停止重试,不会一直空转:让它分段读那个大文件,或者把读大文件的活交给子智能体(见坑 2)。

这是为什么 CLAUDE.md 重要——项目根目录的 CLAUDE.md 在压缩后会从磁盘重新读一遍,不会被总结掉。所有「长期规则」写进根目录的 CLAUDE.md,不要只在对话里说。(子目录里的 CLAUDE.md 例外:它会跟着对话一起被总结掉,要等 Claude 再读到那个子目录里的文件才重新加载。)

3 个小场景 / 翻开新本 / 三个并行工位

/compact

手动触发一次压缩。当 /context 显示 70%+ 时,主动跑一次。

命令后面还可以写上你想保留的重点,摘要就按你说的来,不用它自己猜哪些重要:

/compact 只保留方案和改动

好处:

  • 比 auto-compact 更可控(你选时机)
  • 不会突然在你正聊到一半时打断

适合:聊得很深入、不想丢上下文但需要腾地方。

/clear

开一段新对话、清空上下文,但 CLAUDE.md 跟项目设置照常加载。

好处:

  • 100% 干净的环境
  • 速度最快

适合:

  • 换主题(刚才在聊简历,现在要聊代码)
  • 上一轮已经收尾(任务完成、给你结果了)
  • context 用到 90%+,与其压缩不如重开

🚨 重点:/clear 后,新对话里 Claude 看不到前面聊过的内容了;但旧对话没有删掉,还存在你电脑上,需要时用 /resume 找回。重要结论最好先存成文件再 /clear。

🪟 方法 3:开多个会话(session)并行

Section titled “🪟 方法 3:开多个会话(session)并行”

新手忽略的一招——Claude Code 不是只能开一个对话。

你可以:

  • Terminal 窗口 A 跑「改简历」
  • Terminal 窗口 B 跑「整理发票」
  • Terminal 窗口 C 跑「写周报」

3 个独立 context,互不干扰。

每个任务只占自己的 context,不会互相挤。

还可以开「Worktree 隔离」:终端里用 claude -w 名字(完整写法 --worktree),桌面版在新建会话时选 worktree,每个会话就在独立的 git 分支里跑,改完不影响主线。详见 Git Worktree 那篇。

❌ 坑 1:开一个对话从早聊到晚

Section titled “❌ 坑 1:开一个对话从早聊到晚”

「我从早 10 点跟它聊到下午 3 点,改简历 → 改代码 → 整理发票 → 写周报 → 又改了次简历…」

5 个完全不同的任务塞同一个 context,到下午多半已经自动压缩过,早上在对话里定的规则只剩摘要里的一句,甚至丢了。

修正:任务切换 = 新开会话或 /clear。

「帮我读 ~/Documents/合同/ 里这 10 个 PDF,逐份分析。」

10 个 PDF 每个 50 页 = 几百 k token 直接占满 context,后面分析时它已经「记不住」第 1 份了。

修正:分批读、分析完一份保存结果再读下一份。或者让它先扫目录列清单,你挑出真正要分析的 3-5 份。

还可以把「读一大批文件、只交回结论」的活交给子智能体(subagent:Claude 派出去的帮手,在它自己的上下文里读文件,只把总结带回来),主对话就不会被塞满,见子智能体那篇。

「CLAUDE.md 我现在 800 行了,什么都往里塞。」

每次启动,这 800 行都会被加载进 context——你还没开口就已经消耗了几十 k token。

修正:CLAUDE.md 控制在 200 行内,把过时规则删掉,把模块特定规则放到对应子目录的 CLAUDE.md。

每天用 Claude Code 之前,养成这个习惯:

  • ✅ 开干前:/context 看一眼,确认你新开的会话是干净的
  • ✅ 聊到 70%:主动 /compact
  • ✅ 任务完成 / 换主题:/clear,开新一轮
  • ✅ /cost 跟 /context 关联看:context 大 → token 多 → 烧钱多
  • ✅ CLAUDE.md 每月精简一次:删过时规则,合并重复条目

做到这 5 条,你不会因为 context 问题被它「失忆」坑到。

读完这篇你应该理解 上下文窗口的本质 + 三种省 context 的方法 + 怎么看用量。

接下来:

→ 一次说错可以撤回:checkpoint 用法 —— Claude 改坏了一键回滚

→ 出错怎么办:常见报错排雷大全 —— 速查表

想及时看到更新,可以收藏 niuxue.org 主页。