Seedance 2.5 is live — 30-second cinematic video with native audio & real-person references
Claude 上下文窗口是什么,以及什么会占用它
2026/07/27

Claude 上下文窗口是什么,以及什么会占用它

Claude 当前模型上下文窗口是 100 万 token,工具定义、保留思考和缓存输入都占用空间。更多 token 不一定更好。

上下文窗口是 Claude 在生成响应时可以引用的所有内容,包括响应本身。Anthropic 将其称为工作内存,区别于训练语料库[1]

值得内化的部分是 Anthropic 紧接着这个定义之后给出的这句话:更多上下文不一定更好。随着 token 数量增加,准确度和召回率下降,这个现象在文档中被称为上下文衰减[1]。精心选择放入的内容与可用空间的大小一样重要。

要点速览

  • 当前模型上限为 100 万 token:Opus 5、Opus 4.8/4.7/4.6、Sonnet 5、Sonnet 4.6、Fable 5、Mythos 5。其他模型(包括 Sonnet 4.5)是 20 万 token[1]
  • 100 万 token 是默认配置。无需发送 beta header,100 万 token 的请求与 9000 token 的请求按同样的单位价格计费[1]
  • 输出也会计入,包括扩展思考,且 100 万窗口的模型上 max_tokens 限制为 12.8 万[1]
  • 请求中的所有内容都计数:系统提示、每条消息、工具结果、图像、文档和工具定义[1]
  • 较新模型默认保留前次思考块,因此会在后续轮次中作为输入进行计费[1]
  • Sonnet 模型注入实时 token 预算;Opus 和 Fable 没有[1]

什么真正被计算

Claude 上下文窗口内容:系统提示、工具定义、包含工具结果和图像的消息、再次作为输入计费的保留思考块,以及这一轮次的输出限制为 12.8 万

常见的误解是只为对话预留预算。完整列表[1]

  • 系统提示
  • messages 中的每条消息,包括工具结果、图像和文档
  • 工具定义
  • Claude 这一轮次生成的输出,包括扩展思考

每个响应都会在其 usage 字段中报告请求的消耗。使用提示缓存时,输入计数会分为 input_tokenscache_read_input_tokenscache_creation_input_tokens这三个都计入窗口[1]。缓存不意味着不占用窗口;它意味着每 token 费用更低。

要在发送前计算请求大小,请使用 token 计数 API,而不是从字符数估算。

大小与 100 万实际成本

模型上下文窗口
Opus 5、Opus 4.8、Opus 4.7、Opus 4.6100 万
Sonnet 5、Sonnet 4.6100 万
Fable 5、Mythos 5100 万
Sonnet 4.5 及其他更早模型20 万

两个细节可以省钱和避免混淆[1]

100 万是这些模型上的默认配置。 无需发送 beta header,90 万 token 的请求与 9000 token 的请求按同样的单位费率计费。没有长上下文溢价。

任何 100 万窗口模型上最大输出都是 12.8 万,无论输入还剩多少空间。

单个请求最多可以携带600 张图像或 PDF 页(20 万窗口模型上为 100 张),大型有效负载可能先触及请求大小限制而不是 token 限制[1]

思考改变了数学

思考 token 是 max_tokens 的子集,作为输出计费,并计入速率限制。使用自适应思考时分配因请求而异,所以使用情况无法单独从提示长度预测[1]

令人意外的行为是前面轮次思考会发生什么。

在 Opus 4.5 及更新版本、Sonnet 4.6 及更新版本、Fable 5 和 Mythos 5 上,API 默认保留前面的思考块,它们像任何其他输入 token 一样计入窗口。它们在生成时作为输出被计费过一次,然后保留的块在后续每个携带它们的请求中都作为输入进行计费[1]

在早期 Opus 和 Sonnet 模型以及所有 Haiku 模型上,API 会在你传回它们时自动剥离它们。

如果长代理对话消耗上下文的速度超过可见记录解释的范围,保留的思考通常就是原因。思考块清除会在任何一个方向覆盖默认值。

上下文感知:有些模型知道,有些不知道

这是大多数人不知道的分割[1]

Sonnet 5、Sonnet 4.6、Sonnet 4.5 和 Haiku 4.5 追踪它们的剩余预算。 API 会将总数注入到每个请求的系统提示中:

<budget:token_budget>200000</budget:token_budget>

并在每次工具调用后更新它:

<system_warning>Token usage: 35000/200000; 165000 remaining</system_warning>

这是自动的。你永远不需要自己发送这些标签,图像 token 也包括在计数中。

Opus 4.7 及更新版本、Fable 5 和 Mythos 5 不会收到这些标签。 对于这些,使用任务预算提供显式预算,目前处于测试版。

实际后果:Sonnet 模型可以根据剩余空间调整长任务的速度,而 Opus 模型除非你告诉它,否则不能。这是不同层级之间的真实行为差异,与能力分数无关。

当对话超过窗口时

两个服务端机制都值得在构建自己的截断前了解[1]

压缩自动在服务器上总结对话的早期部分,以便它可以继续超过限制。测试版,在 Claude 4.6 及更新版本上。

上下文编辑提供更多针对性策略,包括在代理工作流中清除旧工具结果,这通常是长对话的大部分 token 实际驻留的地方。

触及其中任何一个都比自制的"删除最早消息"循环好,后者倾向于丢弃使对话连贯的系统级上下文。

使用方式

精心选择,不要填满。 上下文衰减是有文档记载的行为,不是谣言。90 万 token 提示不一定自动好过精心选择的 9 万 token 提示。

计数工具定义。 它们在每个请求中出现,大的工具 schema 是每一轮次的固定开销。

在较新模型上长代理运行期间留意保留思考

选择你需要行为的层级。 如果模型需要在长任务中调整步伐,Sonnet 的注入预算本身就可以做到。

from openai import OpenAI

client = OpenAI(api_key="YOUR_REAPI_KEY", base_url="https://api.reapi.ai/v1")

resp = client.chat.completions.create(
    model="claude-opus-5",
    messages=[{"role": "user", "content": "Read this repository and summarize the architecture."}],
    max_tokens=16000,
)
print(resp.usage)   # the number to reconcile against

100 万窗口模型的费率在 reapi.ai/models 上。

常见问题

Claude 中的上下文窗口是什么?

模型在生成响应时可以引用的所有文本,包括响应本身。它是工作内存,不是训练数据[1]

Claude 的上下文窗口有多大?

Opus 5、Opus 4.8/4.7/4.6、Sonnet 5、Sonnet 4.6、Fable 5 和 Mythos 5 上为 100 万 token。包括 Sonnet 4.5 在内的早期模型是 20 万[1]

使用完整 100 万窗口需要额外费用吗?

不需要。在拥有 100 万窗口的模型上,100 万是默认值,请求按标准价格计费,没有长上下文溢价[1]

什么会计入上下文窗口?

系统提示、所有消息(包括工具结果、图像和文档)、工具定义和输出(包括扩展思考)。缓存输入也计数[1]

我的上下文填充速度为什么比对话建议的快?

在较新模型上 API 默认保留前面的思考块,它们在后续轮次中作为输入计数[1]

更多上下文总是更好吗?

不是。Anthropic 文档记载准确度和召回率随 token 数量增加而下降,这个现象称为上下文衰减[1]

一个请求最多可以携带多少图像?

100 万窗口模型上最多 600 张图像或 PDF 页,20 万窗口模型上最多 100 张,受请求大小限制[1]

对话超过窗口时会发生什么?

使用服务端压缩,它总结早期轮次以便对话继续,或使用上下文编辑清除旧工具结果[1]

预算窗口而不是填满它

每个人都引用的关于 Claude 上下文窗口的数字是 100 万,它也是最无趣的事实。真正决定长上下文集成是否有效的是记账:每轮次随身携带的工具定义、再次计费的思考块、仍然占用空间的缓存 token 和与同一预算竞争的输出。

Anthropic 自身的表述是应该采用的正确框架。窗口是工作内存,更多的不一定自动更好,你选择放入的内容比剩余空间有多少更重要。

参考资料

  1. Anthropic. 上下文窗口——按模型的大小、什么计数、思考行为、上下文感知、压缩和溢出。 检索自 2026 年 7 月,docs.claude.com/en/docs/build-with-claude/context-windows

进一步阅读