遇到 529 过载别硬刷:CLAUDE_CODE_OVERLOADED_RETRY_BASE_DELAY_MS 调长重试间隔
高峰时段用 Claude Code,偶尔会看到 Overloaded 之类的报错,背后是 HTTP 529:服务端暂时忙不过来。Claude Code 会自动退避重试,但如果间隔太短,几次重试可能都撞在同一波高峰里,最后还是失败。
CLI 2.1.292 新增环境变量 CLAUDE_CODE_OVERLOADED_RETRY_BASE_DELAY_MS,让你给 529 重试设一个更长的基础延迟。
529 和退避重试
- 529 表示服务过载,和你的账号、额度无关,通常过一会儿就好。
- 遇到 529,Claude Code 会退避重试:每次失败后等一段时间再试,等待时间逐次变长。
- 「基础延迟」就是这串等待时间的起点。起点越大,整串重试分布得越开,越有机会等到高峰过去。
注意它和额度用完不是一回事。周限额、用量上限触发时,重试再久也没用,要看 周限额说明。
什么时候值得调大
- 无人值守的任务:
claude -p、CI 流水线、定时脚本,宁可慢一点,也别因为一阵过载整个任务失败。 - 高峰时段跑长任务:一次重构要跑很久,中途撞上过载就前功尽弃。
- 多个会话并发:同时开很多会话或子代理,一起重试会互相加剧拥堵,拉长间隔更温和。
交互使用、希望尽快拿到结果时,保持默认即可。
怎么设置
单位是毫秒。临时用:
bash
CLAUDE_CODE_OVERLOADED_RETRY_BASE_DELAY_MS=5000 claude -p "跑一遍测试并修复失败用例"长期生效,写进 shell 配置:
bash
export CLAUDE_CODE_OVERLOADED_RETRY_BASE_DELAY_MS=5000或者写进 settings.json 的 env,让项目或团队统一:
json
{
"env": {
"CLAUDE_CODE_OVERLOADED_RETRY_BASE_DELAY_MS": "5000"
}
}上面的 5000 只是示例,按你能接受的等待时间来定。这个变量的用途是设置更长的基础延迟,不是用来把重试变得更快。
同版本另一个网络相关修复:NO_PROXY
如果你在公司网络里用 HTTPS_PROXY 走代理,同时用 NO_PROXY 排除了一些地址,旧版本有个问题:Claude Code 自己的 API 请求(登录、策略、反馈、artifacts)会忽略 NO_PROXY,照样走代理。2.1.292 已修复,NO_PROXY 对这些请求也生效了。之前因此登录卡住或策略拉取失败的,升级后可以再试。
小结
- 529 是服务过载,Claude Code 会自动退避重试。
- 2.1.292 起可用
CLAUDE_CODE_OVERLOADED_RETRY_BASE_DELAY_MS(毫秒)拉长重试的基础延迟。 - 无人值守、高峰长任务、多会话并发时值得调大;交互使用保持默认。
- 同版本修复了
NO_PROXY对 Claude Code 自身请求不生效的问题。