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

89 lines
3.4 KiB
Markdown
Raw Permalink 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.
# Route Lab Validation
> 该文档现在只保留“同 group 多 channel + alias 下沉”失败实验的历史记录。
> 针对插件前置路由架构的当前正确方向,请改看 [docs/SHADOW_PROVIDER_VALIDATION.md](/home/long/project/sub2api-cn-relay-manager/docs/SHADOW_PROVIDER_VALIDATION.md)。
本文件记录 `asxs + codex2api` 同组双线路实验的最小验证路径。
## 目标
验证以下结论是否成立:
1. 同一个 `group` 下可以挂两条不同 `base_url` 的 GPT 线路
2. 两条线路可以通过不同 `channel` 和不同公开 alias 同时对外暴露
3. 用户进入同一个 group 后,可以稳定看到并调用两条线路
## 实验 pack
- pack 目录:`packs/openai-cn-pack-route-lab`
- provider A`gpt-asxs-route-lab`
- provider B`gpt-codex2api-route-lab`
## 实验建模
```text
Group: GPT Shared 路由实验
Channel: GPT Shared - asxs
Models:
- gpt-5.4-asxs -> gpt-5.4
- gpt-5.4-mini-asxs -> gpt-5.4-mini
Channel: GPT Shared - codex2api
Models:
- gpt-5.4-codex2api -> gpt-5.4
- gpt-5.4-mini-codex2api -> gpt-5.4-mini
```
## 关键约束
- 两条 provider 的 `group_template.name` 必须完全一致
- 两条 provider 的 `channel_template.name` 必须不同
- 第一轮实验不要把两条线路都暴露成同一个公开模型名
- `codex2api` 当前先按 `https://www.codex2api.com/v1` 作为假设 API 根地址;若 preview 失败,需要先校正
## 建议验证顺序
1. 静态检查 pack
2. 导入 `gpt-asxs-route-lab`
3. 记录 `group_id / channel_id / account_ids`
4. 导入 `gpt-codex2api-route-lab`
5. 再记录 `group_id / channel_id / account_ids`
6. 核对:
- 两次导入后的 `group_id` 应相同
- `channel_id` 应不同
- 两组 account 的 `base_url` 应分别落到 `asxs``codex2api`
7. 用同一个 group 下的用户 key 验证:
- `GET /v1/models`
- `POST /v1/chat/completions`
## 成功标准
- 同一个 group 下同时存在两条独立 channel
- `gpt-5.4-asxs` 命中 `asxs`
- `gpt-5.4-codex2api` 命中 `codex2api`
- 关闭其中一条上游后,另一条 alias 仍能独立工作
## 2026-05-28 remote43 实际结果
- `gpt-asxs-route-lab` 已在 remote43 完成真实导入:
- artifact`artifacts/real-host-acceptance/20260528_142205_remote43_gpt-asxs-route-lab_key_import/21-summary.json`
- 导入资源:`group_id=8``channel_id=7``plan_id=7``account_id=9`
- upstream `asxs``/models``/chat/completions``200`
- `gpt-codex2api-route-lab` 在尝试复用同一 group 时被宿主拒绝:
- artifact`artifacts/real-host-acceptance/20260528_142320_remote43_gpt-codex2api-route-lab_key_import/03-import.body.json`
- 宿主返回 `409 GROUP_ALREADY_IN_CHANNEL`
- 错误消息:`one or more groups already belong to another channel`
- 因此这轮实验已经证明:
- 当前宿主允许一个 provider 创建 `group + channel`
- 但**不允许第二个 channel 复用同一个 group**
- 所以“group = 模型族channel = 官方/中转线路”的方案 B在当前 sub2api 宿主约束下不能直接落地
## 第二轮暂不做
第二轮是把两条线路都暴露成同一个公开模型名,例如都叫 `gpt-5.4`
这一步当前不建议直接做,因为:
- 现有服务端有同模型冲突校验
- 即使绕过校验,也还缺显式的 route policy无法保证官方 / 中转的命中优先级和 fallback 语义