上下文窗口怎么算的:会忘记前面说的吗
📍 Claude Code 干活

你一定会遇到的诡异瞬间
Section titled “你一定会遇到的诡异瞬间”跟 Claude Code 从上午聊到下午,中间让它读了一大堆文件。某个时刻你输入:
「把上午那个 endpoint 的命名再改一下,跟开头你提的那个风格一致。」
它愣了一秒,然后说:
「抱歉,我没看到「上午那个 endpoint」的上下文。能再贴一下吗?」
你皱眉。那个 endpoint(接口)你明明上午刚跟它讨论过。它怎么就忘了?
不是 AI 抽风,是它的「短期记忆」装满后被压缩过:前面的对话只剩一段摘要,细节没了。这就是上下文窗口(context window)的核心问题。
读懂这一篇,你会知道:
- 怎么看你现在用了多少记忆(/context 命令)
- 快满了会发生什么(auto-compact 自动压缩)
- 三种主动给它腾地方的方法
「上下文」到底是什么
Section titled “「上下文」到底是什么”
简单粗暴的定义:
Claude 在一次对话里「能同时看到的所有文字」就是上下文。
它包括:
- 你的每一条问话
- 它的每一条回复
- 你让它读过的所有文件内容
- 它跑过的命令的输出
- 你的 CLAUDE.md 文档
- 它使用的工具调用记录
全部加起来,会被换算成一个数字单位叫 token(模型计数用的小单位。粗略说,国产模型 1 个汉字约 0.5–1 个 token,Claude 这类海外模型处理中文通常更多一些;英文 1 个单词约 1–2 个 token。准确数字以工具显示的用量为准)。
模型一次能装下的 token 总数 = 上下文窗口大小。
超出这个数就装不下了:工具只能把前面的内容压缩成摘要,或者提示你清空重来,前面的细节就会丢,模型就「忘事」了。
主流模型容量对比
Section titled “主流模型容量对比”
| 模型(截至 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.0 | 12.8 万 | 长任务要勤压缩 |
关键结论:
- 100 万左右已经是多家旗舰 API 的共同水平:Claude、DeepSeek、GPT、Gemini、豆包新版、千问都在这一档,Claude 并不是独一份。窗口大也不等于不会忘:读的文件多了一样会满,压缩后前面只剩摘要。
- DeepSeek 的 100 万主要走 API 调用,Claude Code + DeepSeek 配置默认就走它。
- 网页版和 App 能用多大的窗口,跟 API 不一定一样:Claude 付费版公布的是 100 万;ChatGPT 按套餐和模式分,从 2.7 万到 40 万不等;豆包等国内 App 官方没有公布。别直接拿 API 的数字去推。
所以工具之间的差别,主要不在窗口大小,而在具体功能、套餐和你给它的权限;窗口大小决定的是一次能摆多少材料、多久要压缩一次。
怎么看你现在用了多少:/context
Section titled “怎么看你现在用了多少:/context”
在 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 时工具说明会全部预先加载,更占地方)
容量满了会发生什么
Section titled “容量满了会发生什么”
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 再读到那个子目录里的文件才重新加载。)
三种主动省 context 的方法
Section titled “三种主动省 context 的方法”
💧 方法 1:/compact 主动压缩
Section titled “💧 方法 1:/compact 主动压缩”/compact手动触发一次压缩。当 /context 显示 70%+ 时,主动跑一次。
命令后面还可以写上你想保留的重点,摘要就按你说的来,不用它自己猜哪些重要:
/compact 只保留方案和改动好处:
- 比 auto-compact 更可控(你选时机)
- 不会突然在你正聊到一半时打断
适合:聊得很深入、不想丢上下文但需要腾地方。
📒 方法 2:/clear 开新一轮
Section titled “📒 方法 2:/clear 开新一轮”/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 那篇。
三个新手必踩的坑
Section titled “三个新手必踩的坑”❌ 坑 1:开一个对话从早聊到晚
Section titled “❌ 坑 1:开一个对话从早聊到晚”「我从早 10 点跟它聊到下午 3 点,改简历 → 改代码 → 整理发票 → 写周报 → 又改了次简历…」
5 个完全不同的任务塞同一个 context,到下午多半已经自动压缩过,早上在对话里定的规则只剩摘要里的一句,甚至丢了。
修正:任务切换 = 新开会话或 /clear。
❌ 坑 2:让它读 10 个大文件
Section titled “❌ 坑 2:让它读 10 个大文件”「帮我读 ~/Documents/合同/ 里这 10 个 PDF,逐份分析。」
10 个 PDF 每个 50 页 = 几百 k token 直接占满 context,后面分析时它已经「记不住」第 1 份了。
修正:分批读、分析完一份保存结果再读下一份。或者让它先扫目录列清单,你挑出真正要分析的 3-5 份。
还可以把「读一大批文件、只交回结论」的活交给子智能体(subagent:Claude 派出去的帮手,在它自己的上下文里读文件,只把总结带回来),主对话就不会被塞满,见子智能体那篇。
❌ 坑 3:CLAUDE.md 越写越长
Section titled “❌ 坑 3:CLAUDE.md 越写越长”「CLAUDE.md 我现在 800 行了,什么都往里塞。」
每次启动,这 800 行都会被加载进 context——你还没开口就已经消耗了几十 k token。
修正:CLAUDE.md 控制在 200 行内,把过时规则删掉,把模块特定规则放到对应子目录的 CLAUDE.md。
一个实用 checklist
Section titled “一个实用 checklist”每天用 Claude Code 之前,养成这个习惯:
- ✅ 开干前:
/context看一眼,确认你新开的会话是干净的 - ✅ 聊到 70%:主动
/compact - ✅ 任务完成 / 换主题:
/clear,开新一轮 - ✅ /cost 跟 /context 关联看:context 大 → token 多 → 烧钱多
- ✅ CLAUDE.md 每月精简一次:删过时规则,合并重复条目
做到这 5 条,你不会因为 context 问题被它「失忆」坑到。
读完这篇你应该理解 上下文窗口的本质 + 三种省 context 的方法 + 怎么看用量。
接下来:
→ 一次说错可以撤回:checkpoint 用法 —— Claude 改坏了一键回滚
→ 出错怎么办:常见报错排雷大全 —— 速查表
想及时看到更新,可以收藏 niuxue.org 主页。