gcli2api / cmd /server /wiring.go
a3216's picture
chore: 同步到上游 1.12.0-panel + 凭证同步/独立启动器/保活
6d60378 verified
Raw History Blame Contribute Delete
1.21 kB
package main
import (
"github.com/linguo2625469/workbuddy2api-panel/internal/pool"
"github.com/linguo2625469/workbuddy2api-panel/internal/server"
)
// realmAwareAvailableForModel 构造会话粘性路由按模型可用口径的 realm 感知闭包。
//
// 粘性分配的模型名可能带 realm 前缀("global:gpt-5.4" / "cn:glm-5.2"):必须按前缀剥出
// realm + bareModel,再交给分池选号域过滤——否则裸名取池子全集,global 号会被粘性分配给
// CN 前缀请求(跨 realm 泄漏)。裸名/显式 cn → cn 集合;global: → global 集合。
//
// realm 为空串时 pool.WeightedAvailableUIDsForModelRealm 退化为现状
// (AvailableUIDsForModel),老调用(无前缀模型名)语义零改动。
//
// 返回列表可能对快过期账号重复同一 UID,作为虚拟实例权重;会话哈希分配无需感知
// 权重细节,已有绑定的快路径仍直接返回原账号,不做迁移。
func realmAwareAvailableForModel(p *pool.Pool) func(model string) []string {
return func(model string) []string {
realm, bare := server.ResolveModel(model)
return p.WeightedAvailableUIDsForModelRealm(bare, realm)
}
}