9134afed9f79d54bf40550fff7acdc573a185597
Downgrade the first third-party account test 403 to an advisory warning when models are already present, and retry transient gateway completion 503 responses during access closure. Add regression coverage for the probe race and completion retry paths, update the execution board, and store the final v0.1.129 Kimi A7M fresh-host acceptance artifact that now reaches succeeded/active/subscription_ready.
sub2api-cn-relay-manager
sub2api-cn-relay-manager 是一个独立于 sub2api 宿主仓库的外部伴生安装器 / 控制面项目。
目标不是修改 sub2api,也不是把国产模型能力硬塞进宿主源码,而是通过 sub2api 已有的管理 API,把“国产模型 OpenAI 兼容中转能力”以独立交付物的形式安装到任意一台已部署的 sub2api 实例上。
项目定位
- 宿主:第三方开源系统
sub2api - 约束:不修改宿主代码,不 fork 宿主,不要求宿主内置原生插件运行时
- 交付:一个独立控制面项目 + 一个或多个
model_pack - 结果:管理员可一键导入多个国产模型 key,普通用户继续只用
sub2api标准 API
这个项目解决的问题
- 不同机器部署了
sub2api后,如何用同一套交付物补齐国产模型中转能力 - 如何把多个国产模型 key 批量导入为可用的宿主资源
- 如何在不改宿主的前提下实现热生效、探测、对账和漂移发现
- 如何让普通用户完全无感,继续走
sub2api标准接口
非目标
- 不做宿主原生插件系统
- 不做任意第三方 Go 代码动态加载
- 不要求宿主识别“插件”概念
- 不接管宿主网关流量
目录结构
sub2api-cn-relay-manager/
cmd/ # 未来 CLI / server 入口
internal/ # 未来控制面后端实现
web/ # 未来管理端前端
docs/
2026-05-12-sub2api-cn-relay-manager-solution.md
packs/
openai-cn-pack/
README.md
pack.json.example
providers/
deepseek.json.example
交付模型
本项目最终会拆成两个可独立发布的产物:
-
sub2api-cn-relay-manager- 外部控制面 / 安装器
- 连接已有
sub2api - 安装模型包
- 调用宿主管理 API 创建资源
- 做 smoke test、对账和状态展示
-
model_pack- 只包含 provider 定义、默认模板、导入规则和校验信息
- 不携带宿主执行代码
- 可以跨机器复用
当前文档
先读这些:
- docs/README.md —— docs 目录导航首页;如果你准备从文档集入口开始读,先看这里
- docs/SOURCE_OF_TRUTH.md —— 当前文档真相入口;先看这份,避免把历史审查/历史 artifact 误读为当前结论
- docs/EXECUTION_BOARD.md —— 当前执行状态、最新 gate、剩余阻断
- docs/PRODUCTION_CLOSURE_BOARD.md —— 当前是否可按 PRD 首版范围放行
- docs/PROVIDER_ONBOARDING_PLAYBOOK.md —— 新增 provider、宿主版本变更后重验、稳定导入与快速诊断的完整作业手册
- docs/PROVIDER_VALIDATION_MATRIX.md —— 官方 provider 模板覆盖度、key 覆盖度、live 验收进度矩阵
- docs/REAL_HOST_ACCEPTANCE_RUNBOOK.md —— 真实宿主验收标准步骤
- docs/REAL_HOST_ACCEPTANCE_LEARNINGS.md —— 已调通细节、典型误判点、诊断顺序
背景/设计文档:
- docs/2026-05-12-sub2api-cn-relay-manager-solution.md
- docs/PRD.md
- docs/TDD_PLAN.md
- docs/DEPLOYMENT.md
当前 MVP 能力
当前仓库已经具备一个最小可运行闭环:
packs/openai-cn-pack/提供真实pack.json + provider + checksumsinternal/pack负责 pack 装载、checksum 校验、provider schema 校验internal/provision负责多 key 导入编排、账号探测和访问闭环判定cmd/cli import-provider提供一键导入入口
示例:
go run ./cmd/cli import-provider \
--host-base-url https://sub2api.example.com \
--host-api-key <admin-api-key> \
--pack-dir ./packs/openai-cn-pack \
--provider-id deepseek \
--keys sk-a,sk-b \
--access-mode self_service \
--access-api-key <user-api-key>
运行方式
服务端:
SUB2API_CRM_ADMIN_TOKEN=replace-me go run ./cmd/server
Docker Compose:
cp .env.example .env
# 编辑 .env 中的 SUB2API_CRM_ADMIN_TOKEN
scripts/build_local_image.sh
docker run --rm -p 8080:8080 \
--env-file .env \
-v "$(pwd)/data:/data" \
sub2api-cn-relay-manager:local
curl -fsS http://127.0.0.1:8080/healthz
真实宿主验收:
CRM_BASE_URL=http://127.0.0.1:8080 \
CRM_ADMIN_TOKEN='<crm-admin-token>' \
HOST_NAME=prod-sub2api \
HOST_BASE_URL=https://sub2api.example.com \
HOST_API_KEY='<sub2api-admin-key>' \
PACK_PATH=/app/packs/openai-cn-pack \
PROVIDER_ID=deepseek \
KEYS=sk-live-1 \
ACCESS_MODE=self_service \
ACCESS_API_KEY='<user-gateway-key>' \
DRY_RUN=1 \
scripts/real_host_acceptance.sh
Description
Languages
Go
77.7%
HTML
13.6%
Shell
6.9%
PLpgSQL
1.1%
Python
0.6%