
CLIProxyAPI 的一次瞬时上游错误能把整池 Codex 号同时关进 60 秒冷却,而这几毫秒返回的 503 一行日志都不写:给出三个配置键的取舍与新的告警口径,另附 sub2api OpenCode Go 协议表缺 Claude 规则的手工补法。
POST /backend-api/codex/responses 上成串的 503。每个都在几毫秒内答完,日志里只留下 gin 的访问行,比如 503 | 3ms | POST ...。1no auth available (providers=codex, model=..., last upstream error: server_is_overloaded: ...)error.type 是 server_error,error.code 是 internal_server_error。这两项由状态码落进默认分支得来,503 一律如此,跟具体是额度还是过载无关。2error.code 配的告警一定会漏。能认出这类事件的特征有三个:毫秒级返回、Retry-After 是整数秒、message 以 no auth available 开头并带 last upstream error。NextRetryAfter,默认落在 60 秒后,常量在 conductor_refresh.go 第 40 行。4request-retry: 3 允许额外三轮重试,max-retry-credentials: 0 又允许每轮试全部可用凭证。上游对所有尝试都回过载,一次请求就能把四张号全写进同一个 60 秒窗口。blockReasonCooldown,那个分类只留给额度耗尽。瞬时不可用落到 availabilityBlock 的最后一支。
sdk/cliproxy/auth/selector.go 第 885–907 行。第 901 行让瞬时不可用带上恢复时刻却归入 blockReasonOther,这是它与额度冷却分开的那一行。5reason == blockReasonCooldown 的凭证放进摘要列表,瞬时那类不进。列表为空,函数直接返回,一条日志都不打。
sdk/cliproxy/auth/conductor_selection.go 第 2444–2464 行。第 2451 行的过滤条件把瞬时不可用挡在摘要之外,第 2456 行的 len(coolingSummaries) > 0 因此不成立;两条 Warnf 的措辞也证明它只会说「in cooldown」。6max-retry-interval 的 30 秒,短于 60 秒冷却,冷却期内的请求不会等它,直接带着 503 出去。7routing.cooldown.transient-error-cooldown-seconds,它只管瞬时错误这一类,额度冷却不受影响。
config.example.yaml 第 206–222 行。第 221 行写明 0 保持 60 秒旧行为、-1 关闭瞬时错误冷却;第 209 行的 max-retry-interval 是重试轮之间的最长等待。8recoverableFailureRetryAfterWithHint 里。正数按秒算,0 走 60 秒常量,负数直接返回零时刻,也就是不冷却。9Retry-After 存在 + message 以 no auth available 开头」报警,这一步只改告警,不动运行时行为。transient-error-cooldown-seconds 从默认的 0 改成 5 到 10。多号池的收益最大,黑窗从 60 秒缩到几秒,坏号的代价也还能接受。routing.cooldown.disable-cooling: true 是更粗的开关,额度冷却会一起关掉。只有临时救火时才用它,事后记得改回来。reason != blockReasonDisabled,措辞从「in cooldown」改成「unavailable」。1grok-*、gpt-*、muse-spark-* 走 Responses,minimax-*、qwen* 走 Anthropic,没有 claude-*。
backend/internal/service/opencode_go.go 第 127–152 行。上面第 129–135 行的 Go 表没有 claude-*,下面第 142–149 行的 Zen 表第 146 行有。11claude-haiku-5-5 的端点是 https://opencode.ai/inference/go/anthropic/v1/messages,而 minimax-m3.1-flash-free 走 chat/completions、minimax-m3 走 anthropic。12minimax-* 这条 Anthropic 规则会抓住免费的 minimax-m3.1-flash-free,而它要的是 Chat Completions。补法是在 minimax-* 前面插一条精确规则。protocol_rules 的账号不会自动拿到新默认,显式规则始终优先。claude-* 到 Anthropic Messages。minimax-* 抓去 Anthropic。github.com
github.com
github.com
github.com
github.com
github.com
github.com
github.com
github.com
github.com
github.com
opencode.ai
github.com
github.com
github.com
status.openai.com
status.openai.com
status.openai.com
status.anthropic.com
status.cloud.google.com
codex-reset.com
community.openai.com
This story was produced automatically by a channel. One sentence is all it takes for Neodrop to keep producing for you.