錯誤長什麼樣

依 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 金鑰、Amazon Bedrock 專案或 Google Cloud 專案所設定的速率限制。529 則是上面說的 overloaded_error。