4.6 KiB
4.6 KiB
开源网关代码深度理解(v1)
- 版本:v1.0
- 日期:2026-03-17
- 范围:
sub2api-tar、new-api、one-api、litellm - 目标:为“Subapi First + 自研 Router Core 接管”提供源码级认知基线。
1. 目录与迁移确认
当前开源仓库已位于统一项目根:
/home/long/project/立交桥/llm-gateway-competitors
核心仓库路径:
/home/long/project/立交桥/llm-gateway-competitors/sub2api-tar/home/long/project/立交桥/llm-gateway-competitors/new-api/home/long/project/立交桥/llm-gateway-competitors/one-api/home/long/project/立交桥/llm-gateway-competitors/litellm
2. 法务与商用风险快照
sub2api-tar:MIT(可商用,仍需遵守上游 ToS)new-api:AGPLv3(对闭源商用有强约束)one-api:MITlitellm:仓库主体 MIT,enterprise/子目录有独立授权边界
结论:你的主线“商用闭源控制面”不应以 new-api 作为核心代码基座。
3. 架构入口(代码级)
3.1 sub2api-tar(推荐重点)
主入口与启动装配:
/backend/cmd/server/main.go(setup 模式 + 主服务启动)/backend/internal/server/routes/gateway.go(协议路由汇总)
核心特点:
- 明确的多协议入口:
/v1、/v1beta、responses/chat别名 - 账号调度和 failover 逻辑深(适合借鉴路由中台能力)
- 并发槽位、等待队列、流式错误处理比较完整
建议你优先深读:
/backend/internal/handler/openai_gateway_handler.go/backend/internal/handler/gateway_handler.go/backend/internal/handler/gemini_v1beta_handler.go/backend/internal/service/openai_gateway_service.go/backend/internal/service/gateway_service.go
3.2 new-api(功能广但法务受限)
主入口:
/main.go/router/relay-router.go/controller/relay.go
核心特点:
- 协议覆盖广(OpenAI/Claude/Gemini/Responses/Realtime)
middleware.Distribute()+controller.Relay()主干清晰- 计费预扣/结算逻辑完善,但 AGPL 影响商用策略
可借鉴点:
- RelayFormat 分发模型
- 路由组织和中间件链条设计
3.3 one-api(经典轻量基线)
主入口:
/main.go/router/relay.go/middleware/distributor.go
核心特点:
- 架构简单,易读
- 渠道选择以“可用通道 + 随机”为主,策略深度有限
- 适合作为最小网关实现参考,不适合直接承载企业治理能力
3.4 litellm(生态和工程成熟度最高)
架构说明文件:
/ARCHITECTURE.md
关键目录:
/litellm(SDK 核心)/proxy(AI Gateway)/router.py+/router_strategy(路由策略)/tests(测试资产非常完整)
核心特点:
- SDK 与 Gateway 分层清晰
- Proxy 在 SDK 上叠加 auth/rate-limit/budget/routing
- 作为“多供应商适配能力参考”价值高
4. 代码体量画像(按文件后缀)
sub2api-tar:Go 1004,Vue 165,TS 139new-api:Go 511,JSX 321one-api:Go 235,JS 242litellm:Python 3500,TSX 844,Markdown 869
解读:
sub2api在 Go 侧中台能力深,适合做 S1/S2 接入基座。litellm在多 Provider 抽象和测试体系更强,适合策略与适配层借鉴。
5. 与你当前路线图的对齐建议
- S1-S2 直接对齐
subapi connector:以sub2api-tar路由和 handler/service 为准做契约测试。 - S2 国内供应商 100% 接管:优先把国内 Provider 的路由与计费从
subapi迁出到自研 Router Core。 - S3 机器人能力:优先消费你自研控制面的统一事件,不直接耦合
subapi内部事件格式。
6. 下一轮深挖计划(v2)
建议按以下顺序继续深挖并输出第二版文档:
sub2api调度链路时序图(选账号 -> 并发槽 -> failover -> usage 入账)sub2api计费链路字段表(请求级 idempotency 与 ledger 对齐)litellmRouter 策略可移植点(cost/latency/success 权重)new-api/one-api的可借鉴中间件清单(仅借鉴,不引入 AGPL 污染)
7. v2 文档已完成
已完成并落盘的 v2 深挖文档:
/home/long/project/立交桥/docs/sub2api_scheduler_billing_flow_deep_dive_v2_2026-03-17.md
覆盖内容:
SelectAccountWithScheduler三层调度策略与评分机制- 用户/账号并发槽位获取、等待队列与释放保障
- Failover 触发条件、同账号重试、流式 no-replay 边界
submitUsageRecordTask -> UsageRecordWorkerPool -> RecordUsage -> applyUsageBilling全链路- request_id + fingerprint 幂等扣费机制与冲突语义