# Shadow Provider Validation 本文件记录插件前置路由架构下,`shadow provider` 的最小正确验证路径。 ## 目标 验证以下结论是否成立: 1. 插件层可以继续维护 `logical_group/public_model` 2. 宿主层的 `shadow group` 只承载 canonical upstream model 3. 真实 managed key 能通过宿主 `/v1/models` 与 `/v1/chat/completions` 4. 旧的 alias/public model 不再下沉到 stock host 的 `channel_mapped + restrict_models` 组合 ## 设计结论 旧的 `route-lab` 已证明两件事: 1. 当前宿主不支持“多个 channel 复用同一个 group” 2. 在 `weishaw/sub2api:0.1.129` 上,把 alias 继续下沉到宿主 shadow group,会触发 `channel pricing restriction` 因此新的 shadow provider 约束是: ```text plugin logical group -> route -> shadow group (host) -> canonical models only ``` ## 当前实验 pack - pack 目录:`packs/openai-cn-pack-shadow-asxs` - provider:`gpt-asxs-shadow-lab` ## 实验建模 ```text Shadow Group: GPT ASXS Shadow 实验 Channel: GPT ASXS Shadow Models: - gpt-5.4 - gpt-5.4-mini ``` 关键点: - shadow group 不再暴露 `gpt-5.4-asxs` - 插件 route 层如果需要 alias,必须在 `logical_group_route_models.shadow_model` 之外处理 - stock host 只看到 canonical 模型 ## 建议验证顺序 1. 导入 `gpt-asxs-shadow-lab` 2. 记录 `group_id / channel_id / account_id` 3. 用宿主订阅 key 直接验证: - `GET /v1/models` - `POST /v1/chat/completions` 4. 再用插件管理面创建临时 `logical_group / route` 5. 调 `POST /api/routing/proxy/chat/completions` 6. 核对: - `effective_gateway_key_source=managed_subscription` - `forward.upstream_status=200` - `route_decision_logs` 已写回同一 `request_id` ## 成功标准 - managed key `/v1/models` 返回 canonical model - managed key `/v1/chat/completions` 返回 `200` - 插件 `route proxy` 走真实 shadow group 时返回 `200` - 不再出现 `channel pricing restriction`