+ 这是渠道调度引擎的总参数配置:调度器如何挑选渠道、失败如何重试、何时熔断,均由这份 JSON 控制。 + 留空 = 全部使用内置默认值;填写的字段会浅覆盖到默认值之上(只写要改的字段)。 + 保存时按 Schema 校验,非法配置直接拒绝;保存后最长 30 秒内热生效,无需重启。 +
+ +调度器为每个请求给候选渠道打分,按权重加权随机选择:
+W(c) = baseWeight × tierFactor × healthFactor × headroom^γ × costFactor × rampFactor × protoFactor
| 字段组 | +关键字段(默认值) | +作用 | +
|---|---|---|
| tierFactors | +primary 1.0 / secondary 0.15 / reserve 0.02 | +渠道层级流量偏置:备用层级平时几乎不接流量,主级全挂时才扩组兜底 | +
| health | +alpha 2 / latRefMs 3000 | +成功率指数(越大越惩罚低成功率渠道);延迟基准(超过开始降权) | +
| load | +gamma 2 / leaseSeconds 90 | +余量指数(越满的渠道越少接新请求);并发租约时长 | +
| cost | +beta 0.5 / min 0.5 / max 2.0 | +成本偏好(越大越偏向便宜渠道)及影响幅度上下限 | +
| ramp | +windowSeconds 120 / floor 0.05 | +新渠道、熔断恢复渠道的小流量爬坡 | +
| binding | +ttlSeconds 1800 等 | +会话→渠道亲和绑定的有效期与守卫阈值 | +
| retry | +原地 2 / 换渠道 2 / 凭证轮换 1 次;总时限 30s | +失败重试预算、退避曲线(100~1000ms)、429 等待上限(2000ms) | +
| breaker | +渠道级 8 / 模型级 4 次;冷却 30~300s;autoDisableAfterSeconds 600 | +熔断阈值与冷却;autoDisableAfterSeconds 即本页「渠道自动禁用」的持续时长阈值 | +
| session | +headerName X-Session-Id 等 | +会话亲和的解析来源(Claude metadata.user_id、Responses previous_response_id) | +
| replay | +unsafeModes / safeModes | +禁止盲目重放的端点(默认图片/视频生成,防止重复扣费) | +
| proto | +responsesMismatch 0.25 / chatBridgeMismatch 0.75 | +入站协议与渠道能力不匹配时的降权因子 | +
{ "breaker": { "failThreshold": 5 } } 只改这一项,同组其余保持默认tierFactors 按键合并:只写 secondary 不影响 primary / reservereplay.unsafeModes / safeModes)是整体替换:要改必须写全完整列表,漏一项等于把它移出保护latRefMs,不是 lat_ref_ms)
+ 常见拒绝原因:tierFactors.primary ≤ 0 或层级名不合法(仅 primary / secondary / reserve);
+ health.alpha ≤ 0;cost.min > cost.max;重试预算为负;
+ backoffMaxMs < backoffBaseMs;cooldownMaxSeconds < cooldownSeconds;proto 因子不在 (0,1]。
+
{
+ "version": 1,
+ "tierFactors": { "secondary": 0.3 },
+ "breaker": { "failThreshold": 5, "autoDisableAfterSeconds": 300 },
+ "retry": { "totalDeadlineSeconds": 45, "failoverBudget": 3 },
+ "binding": { "ttlSeconds": 900 }
+}
+ + 含义:备用渠道流量偏置翻倍;60 秒窗口 5 次失败即熔断;熔断 5 分钟不恢复自动禁用; + 重试总时限放宽到 45 秒、最多换 3 个渠道;会话亲和绑定缩短到 15 分钟。 +
+再如 { "health": { "latRefMs": 1500 }, "cost": { "beta": 1.0 } }:延迟超过 1.5 秒即开始降权、更偏向便宜渠道。