Files
pikasTech-unidesk/docs/MDTODO/details/sub2api-upstream-reliability/R2.2.12_Task_Report.md
T

2.4 KiB
Raw Blame History

R2.2.12 任务报告

结果

已为 runtime-manual 账号 https://sub.yjxm1221.top plus 0.025ID 27)下发精确 Input must be a list 临时不可调度规则:

  • statusCode400
  • keywordinput must be a list
  • duration1分钟
  • 行为:命中后当前账号短时冷却,当前请求返回 UpstreamFailoverError 进入切号。

未使用通用400匹配,避免把真实客户参数错误错误切号。

所有权与配置

  • owning YAMLconfig/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 后会调用 handleOpenAIAccountUpstreamErrorRateLimitService.HandleUpstreamError 在默认400处理前执行 tryTempUnschedulable。规则命中返回 shouldDisable=trueOpenAI gateway 构造 UpstreamFailoverError,因此既冷却后续调度,也会为当前请求触发切号。

执行证据

Dry-run

  • accounthttps://sub.yjxm1221.top plus 0.025 / 27
  • changeupdate
  • beforeRules6
  • afterRules7
  • beforeCodes429,500,502,503,504,524
  • afterCodes400,429,500,502,503,504,524

确认下发:mutation=true。最终 runtime get

  • managementruntime-manual
  • schedulabletrue
  • matching rule count7
  • status codes400,429,500,502,503,504,524
  • pool modefalse

短窗口

下发后5分钟只读窗口:

  • unidesk-codex-pool:43请求、0客户错误、客户错误率0%。
  • 账号277次尝试、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或其他调度配置。