读懂 stable 通道:stable-* 买到什么、代价是什么

stable-* 是通往同一个上游模型的专属通道,走我们自己的 key,而不是共享账号池。Claude 上倍率是四倍,且不参与账号池故障转移。

同一个模型,不同的到达路径

stable-* 指向的上游模型,和它的池内同名兄弟是同一个。stable-claude-opus-5 与 claude-opus-5 都是 100 万 token 上下文、最多输出 12.8 万 token,都支持工具调用和扩展思考,都走 /v1/messages。权重一模一样,前缀说的是请求怎么走到它面前。

区别在凭证。池内请求由众多账号共同贡献的共享账号池承载;stable 请求走的是我们自己直接持有的一把 key。机制就这一条——前缀不代表质量档位,不是微调版本,也不是另一个上下文长度。

有些 id 只有 stable 这一种形态。stable-claude-fable-5-1、stable-claude-fable-5、stable-claude-haiku-4-5 和 stable-gpt-6-astra 没有池内的对照版本,所以对这几个来说并不存在「选哪条路」,它就是唯一一条路。

池内和 stable 走同一个端点、同样的 body,只有 id 不同。
# Pool lane — 0.1x
curl https://token-share.app/v1/messages \
  -H "x-api-key: $TOKEN_SHARE_KEY" \
  -H "anthropic-version: 2023-06-01" \
  -H "content-type: application/json" \
  -d '{
    "model": "claude-opus-5",
    "max_tokens": 512,
    "messages": [{"role": "user", "content": "Summarize this changelog."}]
  }'

# Dedicated lane — 0.4x, same weights, same endpoint
curl https://token-share.app/v1/messages \
  -H "x-api-key: $TOKEN_SHARE_KEY" \
  -H "anthropic-version: 2023-06-01" \
  -H "content-type: application/json" \
  -d '{
    "model": "stable-claude-opus-5",
    "max_tokens": 512,
    "messages": [{"role": "user", "content": "Summarize this changelog."}]
  }'

代价:Claude 上是四倍倍率

Claude 的 stable 通道一律 0.4 倍率,池内 id 是 0.1 倍。claude-opus-5 和 stable-claude-opus-5 的官方价一样——输入每百万 5 美元、输出 25 美元——所以同样的 token,stable 要贵四倍。stable-gpt-6-astra 是 0.2 倍,它没有池内版本可比。

有一条 stable 通道的官方价比池内版本更低。stable-claude-sonnet-5 标的是输入 2 美元、输出 10 美元,而 claude-sonnet-5 是 3 和 15,所以 0.4 倍对 0.1 倍算下来,实际差距不到四倍——但仍然是差距。别套比例,逐个 id 拿官方价乘自己的倍率算。

stable 通道不能用奖励余额付。奖励余额的来源是有人把账号贡献给了共享池,而这条通道是我们向外部供应商买的,所以会走到奖励余额的请求会在花钱之前就被拒绝,返回 402 earned_credit_not_accepted。

放弃了什么:没有账号池故障转移

池内请求在一台机器上失败后,还能换到持有另一组账号的集群重试;stable 请求根本不进这套流程。这条通道卖的就是「用我们自己的 key 打一个确定的上游」,失败了再偷偷从共享池发出去,等于把你花钱想避开的东西原样塞回来。

于是 stable 上失败就是失败。这里的 429 表示触到了通道自身的速率上限,而非让共享池去接住溢出,返回 stable_channel_rate_limited 或 stable_channel_busy;可用性问题是 503 stable_channel_unavailable,超时是 504 stable_channel_timeout。

重试逻辑因此得你自己写,这点和池内不同。至于怎么选,是关于你自己业务的算术题:429 真落到头上时损失多少,不落时四倍 token 单价又要多花多少,以及这个 id 究竟有没有池内版本可退。拿同一批真实流量各跑一轮,比账单,也比你实测到的错误率。

反方向确实存在,别和这条搞混:池内请求失败时,若它有对应的 stable 通道且该通道在线,会改由 stable 服务,按 stable 计价,调用记录里写明你原本请求的 id 与池子失败的原因。那是从便宜通道走向贵通道,所以不会拿走你已经付钱买到的东西;反过来做就会。

常见问题

stable 通道比共享池更可靠吗?
两边我们都没有公布可用性或 SLA 数字,所以没有可比的指标,我们也不会暗示有。能确定的是:stable 请求走我们自己的 key,而不是共享账号池,并且不参与池内故障转移,所以那边失败会直接返回给你,而不是换个地方重试。这笔交换对你划不划算,取决于你的流量——自己测。
我调 claude-fable-5,结果被告知要用 stable-claude-fable-5。为什么不直接帮我转过去?
因为「id 退役」和「请求失败」是两件事。退役不会悄悄发生:400 会点名替代者,换不换由你决定,改起来也就一行——真要拿 stable-claude-fable-5 去服务,等于按 0.4 倍给你计费一个你没点过的 id,返回的 model 字段也和你发的不一致。另一种情况是:id 本身还在,只是这次池子没能供上。那次请求是合法的,我们供不出算力,于是改由 stable 兄弟通道服务,而不是直接把失败甩给你。这种同样按 stable 计价,但它是明示而非悄悄:响应里返回的就是 stable 的 id,调用记录里写着你原本请求的 id,以及池子为什么没服务成。
stable 通道上,提示词缓存和扩展思考的表现一样吗?
stable 通道的能力标注和池内版本一致——text、tools、thinking 都有——cache_control 也会随请求一起走。但每条通道在目录里都有自己的 cache read 与 cache creation 单价,并且不一定与输入单价成比例,所以要按你实际要跑的那个 id 去算带缓存的成本。