Files
sub2api-cn-relay-manager/docs/SHADOW_PROVIDER_VALIDATION.md
2026-05-29 12:29:05 +08:00

71 lines
2.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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`