Merge pull request #3708 from sweetcornna/fix/antigravity-401-self-heal

fix(antigravity): 网关转发默认走生产端点(修复一请求就 401/502、账号被 benched)
This commit is contained in:
Wesley Liddick
2026-07-07 15:12:29 +08:00
committed by GitHub
@@ -153,14 +153,24 @@ type antigravityRetryLoopResult struct {
}
// resolveAntigravityForwardBaseURL 解析转发用 base URL。
// 默认使用 daily(ForwardBaseURLs 的首个地址);当环境变量为 prod 时使用第二个地址。
//
// 默认使用生产端点 cloudcode-pa.googleapis.com(antigravity.BaseURLs 的首个地址,
// 与账号 OAuth 登录/测试连接所用的 antigravity.BaseURL 一致)。
//
// 历史上这里改用 ForwardBaseURLs()(把 daily/sandbox 排到首位)并默认取首个地址,
// 导致网关把带生产 OAuth token 的请求发到 daily-cloudcode-pa.sandbox.googleapis.com,
// 上游拒绝 → 账号被 401「Invalid bearer token」/502 打入临时不可调度且无法恢复
// (见 #3611 / #2962)。后台「测试连接」用的是生产端点,所以「测试成功但网关 401」。
//
// daily/sandbox 端点仅供内部联调,需显式设置
// GATEWAY_ANTIGRAVITY_FORWARD_BASE_URL=daily(或 sandbox)才启用。
func resolveAntigravityForwardBaseURL() string {
baseURLs := antigravity.ForwardBaseURLs()
baseURLs := antigravity.BaseURLs
if len(baseURLs) == 0 {
return ""
}
mode := strings.ToLower(strings.TrimSpace(os.Getenv(antigravityForwardBaseURLEnv)))
if mode == "prod" && len(baseURLs) > 1 {
if (mode == "daily" || mode == "sandbox") && len(baseURLs) > 1 {
return baseURLs[1]
}
return baseURLs[0]