Mindket
提示词工程入门课程第 3 节,共 4 节

什么是上下文窗口?什么会填满它,满了怎么办

黑色横幅,标题“提示词入门课”,下面写着“提示词、系统提示词、上下文窗口与 AI 智能体”。

上下文窗口,是语言模型在写出回复时能参考的全部文本,回复本身也算在内。它相当于模型的工作记忆,按 token 计量。你的消息、系统提示词、文件和工具结果都占地方。窗口满了,产品会返回错误、在回复中途停下,或者把较早的部分总结掉。

本节内容

  • 系统提示词、到目前为止的整段对话、文件、工具结果和回复,都共用同一个窗口。
  • 窗口大不一定更好,因为 token 越多,质量可能越往下掉。
  • 长文档放前面,问题放最后,换新任务就开一个新对话。
  • Claude Code 有两条跟窗口有关的命令:/context 用来看,/compact 用来总结。
全部课程
本页目录
  1. 开始之前
  2. 分五步在窗口里把活干好
  3. 窗口是怎样一轮一轮被填满的
  4. 窗口有多大
  5. 窗口满了会怎样
  6. 为什么窗口大不一定更好
  7. 智能体怎样越过这个上限
  8. Andrej Karpathy 谈上下文工程,Summer Yue 讲一条在压缩中丢掉的指令
  9. 常见错误
  10. 自己试一试
  11. 下一课:AI 智能体
  12. 自测一下
  13. 常见问题
  14. 资料来源

开始之前

这一课的大部分内容不用安装任何东西,只需要一个可以一直聊下去的对话。如果你在用 Claude Code,可以顺手运行它的 /context 命令。下面的数字全都以 token 为单位。

分五步在窗口里把活干好

这五步依据的是各家厂商页面里写的窗口怎样被填满、质量在哪里下滑。两条命令是 Claude Code 的,它的文档里有说明。

/context
/compact focus on the API changes
  1. 列出你每一轮发出去的东西。指令、到目前为止的整段对话、文件或工具结果,加上你的下一条消息,全都要算。在 Claude Code 里,/context 能看到什么在占空间。
  2. 每个新任务开一个新对话。Claude Code 的文档说,每个新会话都从全新的上下文窗口开始,不带之前会话的历史。
  3. 长文档放前面,问题放最后。Anthropic 的指南说要把长篇数据放在靠上的位置,在你的问题之前,Google 的长上下文页面则说要把问题放在末尾。
  4. 先要引文,再要结论。处理长文档时,Anthropic 建议先请模型摘出相关的原文,这能帮它聚焦到相关内容上,忽略其余部分。
  5. 在窗口满之前先总结。请一个很长的对话列出已有的决定和未决的问题,再把这段贴进新对话。这是压缩的手动版,在 Claude Code 里,/compact focus on the API changes 会按你指定的重点来做。

窗口是怎样一轮一轮被填满的

Anthropic 的上下文窗口页面说,请求里的一切都计入:系统提示词、每一条消息(包括工具结果、图片和文档),以及你的工具定义。模型的回复也计入,连同思考部分。每一轮的输入,包含之前所有的轮次加上新消息,回复又成为下一轮输入的一部分。

Claude Code 的窗口装的不只是聊天。它的文档列出了对话历史、文件内容、命令输出、CLAUDE.md、自动记忆、已加载的技能和系统指令。

一场对话是怎样变长的
  1. 第 1 轮

    系统提示词、工具定义(如果有)和你的第一条消息进入窗口,然后生成回复。

  2. 第 2 轮

    第 1 轮的全部内容,包括回复,连同你的新消息,再进入一次。

  3. 之后的轮次

    附上的文件和工具结果也留在历史里,每多一次回复,积累得就更多。

  4. 接近上限

    产品必须裁剪、总结或停下,下面的表列出了各种做法。

窗口有多大

窗口大小随模型而变,所以请把下面的数字看作各厂商页面在 2026 年 11 月 4 日的说法。

Gemini 的数字是共用的,所以回复写得长,留给输入的空间就少。Google 的页面还说,较早的 Gemini 3 和 2.5 模型是分开计预算的:输入 100 万 token,输出 6.4 万 token。

各厂商给出的上下文窗口数字

1M

token,Claude Fable 5.1、Opus 5.5、Sonnet 5.5、Haiku 5.5 以及该页面列出的其他模型的窗口大小

来源:Anthropic:上下文窗口 (2026年11月4日 查阅)

200k

token,Anthropic 其他模型的窗口大小,包括已弃用的 Claude Sonnet 4.5

来源:Anthropic:上下文窗口 (2026年11月4日 查阅)

128k

输出 token,对一个 1M 窗口的 Claude 模型,单次请求最多能生成这么多

来源:Anthropic:上下文窗口 (2026年11月4日 查阅)

1,048,576

token,Gemini 4 的窗口大小,输入、思考和输出共用

来源:Google AI Studio:长上下文 (2026年11月4日 查阅)

窗口满了会怎样

同一个上限,在 API、聊天应用和编程智能体里表现各不相同。

场景会发生什么来源
Claude API,仅输入就超过窗口API 返回 400 invalid_request_error,提示 "prompt is too long"。Anthropic:上下文窗口
Claude API,输入加 max_tokens 超过窗口在 Claude 4.5 及更新的模型上,请求会被接受,生成碰到上限时以 stop_reason: "model_context_window_exceeded" 停止。更早的模型则返回校验错误。Anthropic:上下文窗口
claude.ai 这类聊天应用它们可以用滚动的先进先出方式管理窗口,也就是最早的几轮会被挤出去。Anthropic:上下文窗口
Claude Code它会把对话压缩成一份摘要,摘要保留你的请求和关键代码片段,早先的详细指令可能丢失。Claude Code 文档:How Claude Code works
Gemini 4 API输入加 max_output_tokens 超过 1,048,576 时,API 会把输出限制在剩下的空间内。Google AI Studio:长上下文

为什么窗口大不一定更好

Anthropic 的工程文章用“注意力预算”来解释。每多一个 token,就用掉模型一部分可用的注意力,而每个 token 都可能和其他所有 token 产生关联,上下文一长,注意力就被摊薄了。Google 的长上下文页面也看到同样的规律:提示词里要找回的事实很多时,准确率比只找一条要低,输入越长,出第一个 token 的时间通常也越长。

所以目标是精选。Anthropic 的文章把它说成:找到数量最少、信息密度最高的那组 token,让你想要的结果最有可能出现。

上下文多不一定更好。token 数量增加后,准确率和召回率会下降,这种现象叫做 context rot(上下文腐化)。

Anthropic, Claude API 文档 · Anthropic:上下文窗口 (2026年11月4日 查阅)

智能体怎样越过这个上限

  • 压缩。把对话总结一遍,再从摘要开始一个新窗口。Anthropic 在 Claude 4.6 及更新的模型上提供服务端压缩,目前是测试版。
  • 把笔记放到窗口外。智能体把进展写进 NOTES.md 这样的文件,稍后再读回来,工程文章里就是这么描述的。
  • 子智能体。专门的子智能体在自己干净的窗口里干活,只交回一份摘要,Anthropic 的文章里通常是一千到两千 token。Claude Code 子智能体就是这样运作的。
  • 按需加载。Claude Code 在会话开始时只显示技能的描述,用到这个技能时才加载它的完整内容。

Andrej Karpathy 谈上下文工程,Summer Yue 讲一条在压缩中丢掉的指令

用这些模型做产品的人,现在把这门手艺叫作上下文工程。Shopify 首席执行官 Tobi Lütke 在 2025 年 6 月 19 日写道,他更喜欢这个说法,因为它说的是把任务所需的全部背景交给模型的手艺。

AI 研究者和教育者、OpenAI 创始成员之一的 Andrej Karpathy,在 2025 年 6 月 25 日表示赞同。他写道,在真正的应用里,功夫在于让窗口里正好装着下一步要用的信息:太少,模型缺东西;太多,成本可能上去,效果反而可能下降。

在 Meta Superintelligence 做安全与对齐工作的 Summer Yue,2026 年 2 月 23 日发帖讲了任务做到一半窗口满了的情形。她让一个智能体看看她的收件箱,建议哪些该归档或删除,在她发话之前什么都别做。

这在一个小的测试收件箱上一直没问题,可她真正的收件箱太大,触发了压缩,她最初的那条指令就丢了。

这正是上面表格里 Claude Code 那一行的风险。必须保留的规则,要放在对话之外。在 Claude Code 里,把它写进 CLAUDE.md,文档还说可以在里面加一个 Compact Instructions 小节,写明压缩时要留下什么。能删东西的智能体,“先问我”这条规则要写进它的长期指令,不要只放在早先的一条消息里。

上下文工程是一门精细的艺术,也是一门科学:给上下文窗口填进下一步恰好需要的信息。

Andrej Karpathy, AI 研究者和教育者,OpenAI 创始成员之一,引文为译文 · X (2026年11月5日 查阅)
Andrej Karpathy(@karpathy)2025 年 6 月 25 日在 X 上发帖,引用 Tobi Lütke 的一条帖子:赞成用“上下文工程”这个说法,而不是“提示词工程”
Andrej Karpathy 在 X 上,2025 年 6 月 25 日
Summer Yue(@summeryue0)2026 年 2 月 23 日在 X 上回复 @petergyang:这在我的测试收件箱上一直没问题,但我真正的收件箱太大,触发了压缩,压缩时它丢掉了我最初的指令
Summer Yue 在 X 上,2026 年 2 月 23 日

X 官方嵌入卡片的截图,拍摄于 2026 年 11 月 5 日,时间为 UTC。X 用“Show more”截断了 Karpathy 那条帖子的后半部分。点击截图可到 X 上打开原帖。

常见错误

  • 窗口大就什么都往里贴。token 多不等于帮助多。
  • 所有任务都在同一个对话里做,旧的内容就一直占着地方。
  • 对话很长了还指望很早以前的指令。Claude Code 的文档说,压缩时早先的详细指令可能丢失,并建议把长期规则写进 CLAUDE.md。

自己试一试

  • 在 Claude Code 里,会话开始时运行一次 /context,做完一个长任务后再运行一次,记下是什么变多了。
  • 请一个很长的对话总结它的决定和未决问题,贴进新对话,看第一个回答是否还保有它需要的东西。
  • 把一份长文档放在问题上面,请模型先摘出相关原文,看看回答是不是更贴近原文。

下一课:AI 智能体

上下文窗口就是智能体干活的地方,所以智能体才需要裁剪、总结和把东西搬出去的办法。最后一课什么是 AI 智能体,会讲把窗口填满的那个循环。

token 是贯穿全课的单位。什么是 AI 里的 token讲了怎么数,里面的图表还列出了一次请求能装下多少。

自测一下

  1. 下面哪些内容会计入一次请求的上下文窗口?

    查看答案

    D. 系统提示词、每一条消息、工具结果、文件,以及回复 Anthropic 的页面说请求里的一切都计入,模型的回复也计入,所以每一轮的输入都包含之前所有的轮次。

  2. 你要就一份长文档提问,两部分各该放在哪里?

    查看答案

    A. 文档在上,问题放最后 Anthropic 说要把长篇数据放在靠上的位置,在你的问题之前,Google 则说要把问题放在末尾。

  3. Claude Code 压缩了一个很长的会话。什么可能会丢,长期规则该放在哪里?

    查看答案

    C. 早先的详细指令可能丢失,所以把长期规则写进 CLAUDE.md Claude Code 的文档说,压缩时早先的详细指令可能丢失,并建议把长期规则写进 CLAUDE.md。

  4. 窗口越大,答案就一定越好吗?

    查看答案

    B. 不是,token 数量增加后,准确率和召回率可能下降 Anthropic 把 token 增多后准确率和召回率下降的现象叫做 context rot,所以要精选放进去的内容。

常见问题

上下文窗口就是记忆吗?

不是。Anthropic 把窗口称为当前对话的工作记忆,和模型训练时用的数据是两回事。跨会话保留下来的东西存在别处,比如 Claude Code 的 CLAUDE.md 文件和自动记忆。

上下文窗口按字数还是按 token 算?

按 token。OpenAI 的指南用 token 来定义窗口,token 就是你传入的数据块,从文本到图片都算。token 数和字数不是一回事,什么是 AI 里的 token里有说明。

为什么模型会忘了我之前说过的话?

常见的原因有两个。窗口满了以后,产品可能丢掉或总结了较早的轮次,而且上下文一长,召回率就会下降。Claude Code 的文档建议把长期规则写进 CLAUDE.md。

提示缓存能让窗口变大吗?

不能。Anthropic 说,被缓存的提示前缀仍然占着窗口。缓存改变的是这些 token 的计费方式,不是它们算不算数。

怎样知道一次请求会用多少 token?

在 Claude API 里,每次响应的 usage 字段会报告这次请求用了多少,发请求之前还可以用 token 计数 API 先估算。在 Claude Code 会话里,/context 能看到空间花在了哪里。

哪个模型的上下文窗口最大?

请去看厂商的模型表,因为每次发布数字都会变。Anthropic 把各模型的窗口大小放在它的模型对比表里,本课的数字是 2026 年 11 月 4 日读到的。

资料来源

  1. Anthropic: Context windows (2026年11月5日 查阅)https://platform.claude.com/docs/en/build-with-claude/context-windows
  2. Anthropic Engineering: Effective context engineering for AI agents (2026年11月4日 查阅)https://www.anthropic.com/engineering/effective-context-engineering-for-ai-agents
  3. Anthropic: Prompting best practices (2026年11月5日 查阅)https://platform.claude.com/docs/en/build-with-claude/prompt-engineering/claude-prompting-best-practices
  4. Google AI Studio: Long context (2026年11月4日 查阅)https://aistudio.google.com/docs/long-context
  5. OpenAI: Prompt engineering (2026年11月4日 查阅)https://developers.openai.com/api/docs/guides/prompt-engineering
  6. Claude Code docs: How Claude Code works (2026年11月5日 查阅)https://code.claude.com/docs/en/how-claude-code-works
  7. Tobi Lütke on X, 19 June 2025 (2026年11月5日 查阅)https://x.com/tobi/status/1935533422589399127
  8. Andrej Karpathy on X, 25 June 2025 (2026年11月5日 查阅)https://x.com/karpathy/status/1937902205765607626
  9. Summer Yue on X, 23 February 2026 (2026年11月5日 查阅)https://x.com/summeryue0/status/2025836517831405980

分享本节课

数一数你的窗口里有什么

我们的 token 指南讲了文字和图片怎样变成计数,以及一次请求能装下多少。

读 token 指南

本节课的 Markdown 版本 · 提示词工程入门课程 · 全部课程