上下文窗口是模型的工作记忆,不是它的知识库。讲清一次请求里都装了什么、窗口有多大、为什么装满了反而变笨,以及它「忘事」的真实原因
上下文(Context)指模型这一次生成回答时能读到的全部文字,装它的额度叫「上下文窗口」。系统提示词、历史对话、你贴的资料、工具返回的结果、以及它自己要输出的回答,全都占这个额度。现在主流模型的窗口是 20 万到 100 万 token,但塞得越满,准确率和召回反而会下降(官方称之为 context rot)。所以关键不是塞满,是塞对。
你和同事用的是同一个工具、同一个模型,他产出的东西就是更准、更贴合。差别经常不在提示词写得多漂亮,而在于他给模型看到的东西不一样。
这个「能看到的东西」,就是这一篇要讲的上下文(Context)。
它是本站第 4 段(让 AI 高效工作)的核心概念,也是你以后遇到这些问题时的解释:
这一篇只讲清楚它是什么、装了什么、有多大。怎么管好它是 4.2 的主题。
Anthropic 的官方文档给的定义很直接:
上下文窗口指的是模型在生成回答时可以参考的全部文字,包括它自己生成的这段回答。这不同于它训练时读过的海量数据,而更像是模型的**「工作记忆」**。
拆成两句人话:
很多人以为「我上传过这份文件,它就永远记得了」——不是的。文件的内容是在这一次请求里被塞进上下文给它看的,请求结束就没了;下次要用,工具会再塞一次。
一句话:上下文 = 它这一次的可见范围。 你没放进去的东西,它就是看不见。

官方文档写得很明确:请求里的一切都算进上下文——系统提示词、消息列表里的每一条(包括工具返回结果、图片、文档)、以及你提供的工具定义;模型这一轮生成的内容(包括它的思考过程)同样占额度。
落到你的日常使用,一次请求的上下文通常包含:
| 内容 | 谁放进去的 | 大概占多少 |
|---|---|---|
| 系统提示词 | 工具/产品 | 几百到上万字,你看不见 |
项目约定文件(如 CLAUDE.md) | 工具自动读 | 几百到几千字 |
| 历史对话 | 工具自动带 | 越聊越多 |
| 你贴的资料 / 附件 | 你 | 取决于文件大小 |
| 工具返回的结果 | agent 工具 | 经常是最大头,比如读进来的一整个文件、一次搜索的结果 |
| 它的思考和回答 | 模型 | 也算 |
注意倒数第二行。在 agent 工具里,真正吃掉额度的往往不是你打的字,而是它自己读进来的东西:一次搜索返回几十条结果、一个文件几千行,全都进了上下文。
这解释了一个常见现象:你什么都没多说,但它「读了几个文件」之后就突然变慢、开始压缩了。

上下文窗口的大小按模型算,单位是 token(1 个中文字大约 0.6 个 token,2.6 会细讲)。
目前的大致水位(2026 年 8 月):
| 量级 | 大概能装多少中文 | 典型情况 |
|---|---|---|
| 20 万 token | 约 30 万字 | 一批较小或较早的模型,日常够用 |
| 100 万 token | 约 160 万字 | 现在多数旗舰模型的规格,Claude 的 Opus / Sonnet 系列、DeepSeek V4、Kimi K3 都在这一档 |
100 万 token 是什么概念?一本《三体》全集大约 90 万字,也就是说理论上你可以把整套书塞进去让它读。
但这里有个陷阱:能装下 ≠ 用得好。下一步就讲这件事。

顺带一提:窗口大小是模型的属性,不是工具的。同一个 agent 工具接不同的模型,可用额度就不同——这也是选模型时要看的一项(2.6)。
官方文档里有一句话值得你记住:
更大的上下文窗口让模型能处理更复杂、更长的输入,但上下文不是越多越好。随着 token 数量增长,准确率和召回都会下降,这个现象叫做 context rot(上下文腐烂)。
翻译成使用体验就是:
所以官方的结论是:「筛选放进上下文的内容」和「窗口有多大」同样重要。

这也是为什么本站第 4 段花整整一篇讲上下文管理(4.2)。核心思路就三条:
记住这句:上下文管理不是省钱技巧,是质量技巧。
额度用完,不同工具的表现不一样,常见的有三种:
① 直接报错。 走原始 API 的时候,输入超过窗口会返回「prompt is too long」这类错误。
② 自动压缩(compact)。 现在的 agent 工具普遍会在快满的时候,把前面的对话总结成一段摘要,用摘要替换原文继续聊。你会看到「compacting conversation」之类的提示。压缩之后细节会丢,这就是它「忘了刚才的细节」的真实原因。
③ 丢掉最早的内容。 一些聊天产品按「先进先出」滚动:新的进来,最早的出去。你不会收到任何提示,只会感觉它前面说过的忘了。

你该怎么应对:
你以为的「AI 记性差」,多数时候其实是上下文被压缩或者被挤掉了。
| 问题 | 答案 |
|---|---|
| 上下文是什么 | 模型这一次能读到的全部文字,它的工作记忆 |
| 里面装了什么 | 系统提示词 + 项目文件 + 历史对话 + 你的材料 + 工具返回 + 它的回答 |
| 有多大 | 按模型算,现在主流 20 万~100 万 token |
| 满了会怎样 | 报错、自动压缩、或者悄悄丢掉最早的内容 |
| 塞满好不好 | 不好,越长越容易抓错重点(context rot) |
上下文不是它的记忆,是你每次递给它的那叠材料。 递什么、递多少,决定它答得准不准。 接着看:这叠材料怎么计费和消耗,去 2.6 Token;怎么管好它,去 4.2 如何管理上下文;怎么让重要信息每次自动带上,去 4.3 长期记忆。
不是。上下文是这一次请求的可见范围,请求结束就没了。你在产品里看到的「记忆」功能,实现方式通常是把要长期记住的内容存成文件或数据库,下次请求时自动塞进上下文——本质上还是靠上下文,只是有人替你重新递了一遍。
大一点更从容,但不能靠它偷懒。官方明确说过 token 越多准确率和召回会下降。真正的用法是:窗口大意味着你可以一次放进一整份长文档,而不是意味着你可以把十件不相关的事堆在一个会话里。
多数 agent 工具会在界面上显示已用比例或剩余额度(比如 Claude Code 可以用 /context 查看)。走 API 的话,每次响应都会返回 usage 字段,写明这次消耗了多少 token。
因为旧会话里堆了大量与这个问题无关的历史,稀释了重点,甚至可能已经被压缩过。换成干净的上下文 + 一次说清要求,通常立刻就好了。这是最简单也最有效的一招。