共享 Provider 池
wesgine Hypervisor 级共享 Provider 的管理机制。
定位
共享 Provider 池(SharedProviders)是 Hypervisor 级的 LLM Provider 共享资源。
多个 Cell 可以共享同一组 Provider,通过 ProviderStrategy 决定使用优先级。
三种归属
| 归属 | 管理层 | 说明 |
|---|---|---|
| Hyp:Shared | Hypervisor | 全局共享池 |
| Hyp:Named | Hypervisor | 按名分配 |
| Cell:Private | Cell(BYOK) | Cell 私有 |
API
列出共享 Provider
GET /admin/shared-providers
SDK:
hyp.SharedProviders().List() []ProviderInfo
配置共享 Provider
POST /admin/shared-providers
重新配置
POST /admin/shared-providers/reconfigure
SDK:
result, err := hyp.SharedProviders().Reconfigure(ctx, cfg)
返回 *ReconfigureResult,包含成功/失败的 Provider 列表。
与 Cell 的关系
Cell 通过 ProviderStrategy 决定如何使用共享与私有 Provider:
| 策略 | 行为 |
|---|---|
own_only | 只用私有,忽略共享 |
shared_only | 只用共享,忽略私有 |
own_first | 优先私有,fallback 共享 |
shared_first | 优先共享,fallback 私有 |
per-cell 健康追踪
每次调用带 cellID:
type Provider interface {
Stream(ctx context.Context, cellID string, req Request) (Stream, error)
}
实现 per-cell 的:
- 健康追踪
- 速率限制
- 使用量记录
降级态密文保护
共享池的密钥降级保护与 CellSpec 不同(INV-PERSIST-07):
- 池是按名字的数组,合并语义由数据本身定义
- 合并而非拒绝:不让运维改 A provider 被 B 的坏 key 扣为人质
SharedProviderStore自持preserved密文表
判据放在 SharedProviderStore.Save 内部而非两个调用方——同 INV-EXEC-PROC-01 的治法。
Provider 探测
Admin 级 Provider 连通性探测:
POST /admin/cells/{id}/providers/{name}/probe
探测特定 Cell 的特定 Provider 是否可连通。
与 Observe 的关系
Provider 延迟统计
GET /admin/observe/provider-latency
SDK:
stats, err := hyp.Observe().ProviderLatencyStats(ctx)
跨 Cell 聚合 Provider 的延迟统计数据。
ContextWindow 配置
引擎不含 LLM 模型知识(INV-DS-01/05)。
Provider 配置中的 Models[].ContextWindow 必须显式配置。
未配时引擎不猜测物理窗口,经济预算走 DefaultEconomicWindow 并 Warn。
模型市场数据由应用层 weisyn.git/catalog.yaml(weisyn.ProviderCatalog())管理。