Claude Code 走中转自动用 1M 上下文:网关只到 200K 怎么办
截至 2026-10-07,Claude Code 自 2.1.285(2026-09-29 发布)起,只要设了自定义 ANTHROPIC_BASE_URL,就让 Opus 4.7 及以后、Sonnet 5 及以后和 Fable 系列直接按 1M 上下文运行;网关如果只支持 200K,官方建议运行 /autocompact 200k。同一批版本还加了网关提示头 x-claude-code-prompt-id 和 529 重试退避变量 CLAUDE_CODE_OVERLOADED_RETRY_BASE_DELAY_MS。本页把这三处变化和对应写法一次说清。
更新于 2026-10-07
先看懂四个数字
自定义 base URL 下的默认窗口
2.1.285 起,Opus 4.7 及以后、Sonnet 5 及以后与 Fable 系列在网关后面也按 1M 运行,不用再选 [1m]。
网关只到 200K 时
变更日志原话是 run /autocompact 200k if your gateway stops at 200K;网关设的更低上限,Claude Code 自己探测不到。
/autocompact 可设范围
命令接受 200k、1M 这类写法;环境变量 CLAUDE_CODE_AUTO_COMPACT_WINDOW 只认纯整数,写成 500k 会被读成 500 并抬到 100K 下限。
过载重试退避(2.1.292)
新变量 CLAUDE_CODE_OVERLOADED_RETRY_BASE_DELAY_MS 用来把 529 过载请求重试时的退避基准延迟设得更长。
设了 ANTHROPIC_BASE_URL 之后发生了什么
截至 2026-10-07,答案是:在自定义 ANTHROPIC_BASE_URL 后面,Claude Code 会给它认识的每个模型套上与 Anthropic API 相同的上下文窗口。官方文档写明 Fable 5.1、Fable 5、Sonnet 5 及以后、Opus 4.7 及以后直接拿到 1M 窗口,不需要选 [1m] 变体;只能靠 [1m] 变体达到 1M 的模型(官方举例 Opus 4.6,Sonnet 4.6 同理)不加后缀就按 200K 跑。关键一句是「Claude Code can't detect a lower limit that the gateway or the server behind it enforces」:网关或它背后的服务器设了更低的上限,客户端并不知道,会按 1M 的预算继续堆上下文,直到请求被拒。
同一批版本的变更(2026-09-25 至 2026-10-06)
按 GitHub Releases 的发布时间(UTC)排:2.1.283(2026-09-25)给网关提示头加了 x-claude-code-prompt-id,用 CLAUDE_CODE_GATEWAY_HINT_HEADERS=1 打开;2.1.285(2026-09-29)让自定义 ANTHROPIC_BASE_URL 下的会话使用模型自带的 1M 窗口;2.1.286(2026-09-30)改了重试规则,一次模型调用共用一个上限,默认设置下一次失败的调用最多发 14 个请求,同时模型回退把窗口从 1M 降到 200K 时,提示里会写明;2.1.288(2026-10-02)让 /autocompact 按模型分别保存窗口;2.1.292(2026-10-06)新增 CLAUDE_CODE_OVERLOADED_RETRY_BASE_DELAY_MS,把 529 重试的基准延迟设得更长。
三个关键版本
Claude Code 2.1.283 发布:网关提示头新增 x-claude-code-prompt-id,网关可以把同一条用户提示触发的请求归到一组。
Claude Code 2.1.285 发布:自定义 ANTHROPIC_BASE_URL 下的会话改用模型自带的 1M 窗口,网关只到 200K 时运行 /autocompact 200k。
Claude Code 2.1.292 发布:新增 CLAUDE_CODE_OVERLOADED_RETRY_BASE_DELAY_MS,可把 529 重试的基准延迟调长;本页于 2026-10-07 按官方页核对。
已确认 vs 没有核实到的
已确认(官方页逐字可核)
以下都能在 Claude Code 变更日志与官方文档里逐字核到:2.1.285 起,自定义 ANTHROPIC_BASE_URL 下按模型自带窗口运行(Opus 4.7+、Sonnet 5+、Fable 为 1M);网关只到 200K 时官方建议 /autocompact 200k;Claude Code 探测不到网关的更低上限;/autocompact 自 2.1.288 起按模型保存;命令接受 100K 到 1M;环境变量 CLAUDE_CODE_AUTO_COMPACT_WINDOW 只认纯整数,并优先于命令、启动参数与设置;CLAUDE_CODE_DISABLE_1M_CONTEXT=1 可整体关掉 1M;x-claude-code-prompt-id 自 2.1.283 起提供,自定义 base URL 下默认不发;CLAUDE_CODE_OVERLOADED_RETRY_BASE_DELAY_MS 自 2.1.292 起提供。
未证实与官方未公布
三件事没有核实到,别按它们做决定:① CLAUDE_CODE_OVERLOADED_RETRY_BASE_DELAY_MS 目前只有变更日志里的一句话,默认基准延迟和上限官方都没有给出;② 某个具体网关或中转(包括 QCode)对每个模型实际放行多大上下文,官方文档不替第三方作答,Claude Code 也探测不到,只能以你的实测为准;③ 网关会不会读取 x-claude-code-prompt-id、拿它做什么,由各网关自己决定,官方只说它可以用来把同一条提示的请求分组。
两种把窗口收回来的办法怎么选
调低自动压缩阈值(/autocompact 或环境变量)
只改压缩时机,不动模型选择器。2.1.288 起 /autocompact 200k 只保存到当前模型,换模型要再设一次;要对所有模型生效,在 ~/.claude/settings.json 写 "autoCompactWindow": 200000,或在启动 Claude Code 的环境里设 CLAUDE_CODE_AUTO_COMPACT_WINDOW=200000,后者优先级最高。下限是 100K,网关上限更低时只能靠 /compact 恢复。
整体关掉 1M(CLAUDE_CODE_DISABLE_1M_CONTEXT=1)
适合团队统一封顶。设了之后,模型选择器里的 1M 变体消失,Sonnet 5、Fable 这类原本就是 1M 的模型也按 200K 窗口对待:开着自动压缩就在 200K 边界压缩,关掉自动压缩则在 200K 边界直接报上下文超限。把自动压缩窗口调到 200K 以上也解不开这个封顶。
网关只到 200K:四步配好
① 先弄清网关的上限:网关设的更低上限 Claude Code 探测不到,只能看网关文档或自己实测。② 只改当前模型:在会话里运行 /autocompact 200k(2.1.288 起按模型保存,换模型后再设一次;/autocompact auto 恢复为模型的默认窗口)。③ 对所有模型生效:在 ~/.claude/settings.json 写 "autoCompactWindow": 200000,或启动前 export CLAUDE_CODE_AUTO_COMPACT_WINDOW=200000。注意同一文件里用 /autocompact 给某个模型存过的值优先于 autoCompactWindow;环境变量优先于两者,但只认纯整数,写成 500k 会被读成 500 并抬到 100K 下限。④ 已经报错时:先 /compact 恢复会话。如果网关把超限错误改写成自己的措辞(官方举例 ContextWindowExceededError、prompt token count of N exceeds the limit of M),Claude Code 认不出这是超长错误,不会自动压缩重试,只能手动 /compact。
在 QCode 上
QCode 文档写明,Claude Code 接入只需要两个环境变量:ANTHROPIC_BASE_URL 填 https://api.qcode.cc/api(末尾不要带斜杠),ANTHROPIC_AUTH_TOKEN 填在控制台创建的 cr_ 开头密钥。北美与欧洲用户可以把域名换成 us.qcode.cc(洛杉矶),同一把密钥通用。本页不对 QCode 各模型的上下文上限作承诺;遇到上下文超限报错,按 Claude Code 官方建议用 /autocompact 把阈值调低到实际能放行的大小。想看每次请求的模型、上下文长度和用量,文档给的办法是到 probe.qcode.cc 输入 cr_ 密钥查看。按 token 计费,各模型单价见 /models。
常见问题
为什么换成中转后,Claude Code 显示 1M 上下文?
因为 2.1.285(2026-09-29 发布)起,Claude Code 在自定义 ANTHROPIC_BASE_URL 后面也套用模型在 Anthropic API 上的窗口:Opus 4.7 及以后、Sonnet 5 及以后和 Fable 系列都是 1M,不用选 [1m]。Opus 4.6 与 Sonnet 4.6 只有加 [1m] 才到 1M,不加就是 200K;官方上下文窗口页写明 Claude Sonnet 4.5 与 Claude Haiku 4.5 是 200k。这只是客户端的预算,不代表你的网关一定放行 1M。
网关只支持 200K,会报什么错?
超过网关上限的请求会被网关拒绝。Claude Code 认得出的超长错误是 Prompt is too long,交互界面里显示为 Context limit reached · /compact or /clear to continue;如果网关把错误改写成自己的措辞,比如 ContextWindowExceededError,Claude Code 就认不出,也不会自动压缩重试。两种情况都先用 /compact 恢复会话,再按官方建议把压缩阈值调到 200K。
/autocompact 200k 对所有模型都生效吗?
不一定。2.1.288(2026-10-02 发布)起,/autocompact 把窗口按模型分别存进用户设置,换了模型要再设一次;在那之前它只存一个全局值。要一次管住所有模型,在 ~/.claude/settings.json 写 "autoCompactWindow": 200000,或设环境变量 CLAUDE_CODE_AUTO_COMPACT_WINDOW=200000。环境变量优先于命令、启动参数和设置,只接受纯整数。
x-claude-code-prompt-id 是什么,要不要开?
它是 2.1.283 加进网关提示头的一个随机 UUID:同一条用户提示触发的请求(包括这条提示启动的子代理的轮次)共用同一个值,方便网关按提示分组。直连 Anthropic API 时默认发送;自定义 base URL 下默认关闭,因为拒绝未知请求头的代理会让请求失败,要发送就设 CLAUDE_CODE_GATEWAY_HINT_HEADERS=1。官方写明这些提示头从不携带提示文本或文件内容。
CLAUDE_CODE_OVERLOADED_RETRY_BASE_DELAY_MS 有什么用?
它用来把 529 过载请求重试时的退避基准延迟设得更长,2.1.292(2026-10-06 发布)加入,默认值官方没有公布。另外,2.1.286 起一次模型调用共用一个重试上限,默认设置下一次失败的调用最多发 14 个请求;无人值守的任务可以看 CLAUDE_CODE_RETRY_WATCHDOG,它会无限期重试 429 与 529 容量错误。
在 QCode 上用 Claude Code,能用满 1M 吗?
本页不作承诺。Claude Code 会按模型在 Anthropic API 上的窗口做预算,但探测不到网关实际放行的上限。接入方式是 ANTHROPIC_BASE_URL 填 https://api.qcode.cc/api、ANTHROPIC_AUTH_TOKEN 填 cr_ 开头的密钥;遇到上下文超限报错,先用 /compact 恢复会话,再按官方建议用 /autocompact 把阈值调低到实际能放行的大小。
信息来源
Claude Code 变更日志(GitHub 上 anthropics/claude-code 仓库的 CHANGELOG.md,2026-10-07 抓取):2.1.283、2.1.285、2.1.286、2.1.288、2.1.292 的条目原文;各版本发布日期取自同一仓库 GitHub Releases 的发布时间(UTC)。Claude Code 官方文档(code.claude.com,2026-10-07 抓取):模型配置页(网关后的上下文窗口、自动压缩窗口、1M 开关)、环境变量页、LLM 网关连接页(网关改写超限错误的排查条目)、网关兼容指南(提示头)、错误参考页。Anthropic 平台文档的上下文窗口页(2026-10-07 抓取)。QCode 接入写法:docs.qcode.cc 的环境变量配置、接入点与 API 格式、Claude Code 功能可用性对照三页(2026-10-07 抓取)。
相关阅读
Context Length Exceeded 排查指南
上下文超限的三种伪装形态与判别方法。
Claude Code 自定义端点配置
两个环境变量、settings.json 写法、apiKeyHelper,以及网页版不走网关的官方限制。
如何在 1M+ 里高效 coding
repo map、缓存前缀、选择性加载与反模式。
本页内容核对于 2026-10-07,以 Anthropic 与 Claude Code 官方页面为准;Claude Code 每周发版,行为可能随版本变化且不另行通知。本页不对 QCode 各模型的上下文上限作承诺,模型可用性以 /models 为准。