报错长什么样
按 Claude Code 的错误参考文档,提示原文是 "API Error: Repeated 529 Overloaded errors. The API is at capacity — this is usually temporary. Try again in a moment.",后面接着指向 Anthropic 的状态页。文档说最后这句会因服务商而不同:用 Amazon Bedrock、Google Cloud 的 Agent Platform 或 Microsoft Foundry 时,提示里写的是该服务商的状态页;用自定义网关时,写的是网关的主机名。
有时也会直接显示 API 的原始报错。在 GitHub 上 Anthropic 的 Claude Code 仓库里,北京时间 3 月 27 日 15:59 提交的 issue 39745 中,用户 DavidSchneiderDS 贴出了在 Windows 上用 Claude Code 2.1.85 跑 Opus 时的输出:"API Error: 529 {"type":"error","error":{"type":"overloaded_error","message":"Overloaded."。Anthropic 的 API 文档说明,API 的错误都以 JSON 返回,包含错误类型、消息和请求 ID;类型为 overloaded_error 的 529,文档的描述是 "The API is temporarily overloaded."
Anthropic 怎么解释
Claude Code 文档把这个报错描述为 API "temporarily at capacity across all users",API 文档的说法是 "529 errors can occur when the API experiences high traffic across all users."。Claude Code 文档还直接写明 "A 529 is not your usage limit and doesn't count against your quota."。对某一次具体发生的情况,两份文档都没有进一步说明。
看到这条提示时,Claude Code 已经重试过了。错误参考文档说,Claude Code 对临时性故障最多重试 10 次,采用指数退避;在 Claude 的回复开始流式输出之前返回的过载响应也在其中。重试时会显示 "Retrying in Ns · attempt x/y" 倒计时;从 2.1.198 版起,一旦确认是 529 过载,倒计时下面那一行还会写明去哪里查服务状态。
可以试的办法
错误参考文档列了三步。第一步是看 Anthropic 的状态页,或者提示里写的服务商状态页,有没有容量方面的公告。我们在北京时间 10 月 20 日 22:22 查看时,状态页显示 "All Systems Operational",Claude API 和 Claude Code 都是正常状态。第二步是过几分钟再试。
第三步是运行 /model 换一个模型,文档给的理由是 "capacity is tracked per model"。某个模型负载特别高时,Claude Code 会主动提示换模型,例如 "Opus is experiencing high load, please use /model to switch to Sonnet";文档说在 Fable 模型上,提示里写的是 Fable。在 Claude Desktop 应用运行的会话里,比如 Code 标签页或 Cowork,提示是 "Opus is experiencing high load. Switch to Sonnet.",要在应用的模型选择器里切换。
调整重试方式
文档还列出了几个和重试有关的环境变量。CLAUDE_CODE_OVERLOADED_RETRY_BASE_DELAY_MS 设定请求被 529 拒绝后重试的起始间隔,默认 500 毫秒,最高可调到 32000,这样 API 容量已满时重试会分散到更长的时间里,需要 2.1.292 或更新版本。CLAUDE_CODE_OVERLOADED_RETRY_MAX_DELAY_MS 设定退避间隔的上限,默认 32000,最高 64000,需要 2.1.296 或更新版本。这两个变量在 fast mode 下或开启重试看门狗时都不起作用。重试次数由 CLAUDE_CODE_MAX_RETRIES 设定,默认 10 次。
对 CI 任务这类无人值守的会话,文档说把 CLAUDE_CODE_RETRY_WATCHDOG 设为 1,Claude Code 会对 429 和 529 容量错误无限重试,而不是重试到通常次数就报错。从 2.1.295 版起,可以用 CLAUDE_CODE_RETRY_WATCHDOG_MAX_WAIT_MS 给每个请求等待这类错误的时间设上限。直接调用 API 的开发者,官方 SDK 已经内置了一部分:API 文档说 SDK 会对临时性故障做指数退避重试,默认两次。
529 和 429 有什么不同
两份文档都把这两个代码分开写。Anthropic 的 API 文档把 429(rate_limit_error)描述为组织撞上了速率限制、达到了所在用量等级的每月支出上限,或者达到了 Claude Code 工作区的支出上限;文档还说,少数情况下组织用量突然大增,也可能因为加速限制(acceleration limits)出现 429。在 Claude Code 里,"Request rejected (429)" 表示撞上了 API key、Amazon Bedrock 项目或 Google Cloud 项目设置的速率限制。529 则是上面说的 overloaded_error。
