2.4 KiB
2.4 KiB
R2.2.12 任务报告
结果
已为 runtime-manual 账号 https://sub.yjxm1221.top plus 0.025(ID 27)下发精确 Input must be a list 临时不可调度规则:
- statusCode:400
- keyword:
input must be a list - duration:1分钟
- 行为:命中后当前账号短时冷却,当前请求返回
UpstreamFailoverError进入切号。
未使用通用400匹配,避免把真实客户参数错误错误切号。
所有权与配置
- owning YAML:
config/platform-infra/sub2api-codex-pool.yaml - 模板:
codex-upstream-failover - 账号管理类型:
runtime-manual - 下发方式:精准
runtime apply --account 27 --template codex-upstream-failover --confirm - 未把账号27加入 YAML managed profiles,也未运行全量
sync。
为避免模板覆盖账号27既有运行规则,YAML模板同时对齐了其已有:
- 429
upstream rate limit exceeded - 504
concurrency limit exceeded/upstream service temporarily unavailable
最终规则从6条增至7条,保留429、500、502、503、504、524,仅新增精确400。
源码确认
Sub2API v0.1.153 普通400进入 handleErrorResponse 后会调用 handleOpenAIAccountUpstreamError;RateLimitService.HandleUpstreamError 在默认400处理前执行 tryTempUnschedulable。规则命中返回 shouldDisable=true,OpenAI gateway 构造 UpstreamFailoverError,因此既冷却后续调度,也会为当前请求触发切号。
执行证据
Dry-run:
- account:
https://sub.yjxm1221.top plus 0.025/ 27 - change:update
- beforeRules:6
- afterRules:7
- beforeCodes:429,500,502,503,504,524
- afterCodes:400,429,500,502,503,504,524
确认下发:mutation=true。最终 runtime get:
- management:runtime-manual
- schedulable:true
- matching rule count:7
- status codes:400,429,500,502,503,504,524
- pool mode:false
短窗口
下发后5分钟只读窗口:
unidesk-codex-pool:43请求、0客户错误、客户错误率0%。- 账号27:7次尝试、7次成功、0失败。
- 窗口内没有自然出现新的
Input must be a list,因此尚未观察到真实account_temp_unschedulable命中;不能把“零命中”解释为规则无效。
验证
- 精准 runtime apply dry-run通过。
- 精准 runtime apply confirm通过。
- 逐账号 runtime get对账通过。
git diff --check通过。- 未发送错误探针,未修改proxy、账号凭据、priority、capacity、membership或其他调度配置。