AI API Gateway Platform - 将 AI 订阅配额分发和管理
人机验证新增腾讯天御与阿里云验证码 2.0,后台合并为单张人机验证卡片按服务商单选;修复 Codex 请求因客户端身份落入上游降载分桶、返回过载错误后被误判为账号故障并冷却,对外表现为「Codex 账号频繁不可用」的问题,出站身份统一收口并跟随官方发布自动同步版本号。
新增功能
- 人机验证新增腾讯天御验证码:与 Cloudflare Turnstile 并列的独立服务商,除注册 / 登录 / 找回密码等既有保护面外,OAuth 登录启动与 passkey 登录同样纳入拦截
- 人机验证新增阿里云验证码 2.0:同时支持阿里云中国站与国际站,由「服务地域」决定线路(中国内地 / 新加坡),保存设置时真实探测 AccessKey 有效性,校验异常按 fail-closed 拦截
- 后台「安全与认证」合并为单张人机验证卡片:总开关 + 服务商单选(Turnstile / 腾讯天御 / 阿里云),三者互斥,选中即启用该家并关闭其它
- Codex 客户端版本号自动同步官方最新稳定版(每 6 小时,面板可关闭),无需为跟随上游版本而发版;出站 User-Agent 与 version 头由同一版本来源派生
- 组合分组支持推理强度策略:推理强度上限与映射规则从 OpenAI 分组扩展到 composite 分组,并覆盖 Messages 路线(仅当客户端显式指定 effort 时应用,不改变桥接默认值)
- OpenAI 账号重置额度详情缓存:账号卡片可直接展示剩余重置次数与到期时间,过期额度自动剔除,避免重复查询上游
- 新增配置项 gateway.disable_codex_originator_normalization(默认 false):供上游调整降载分桶策略后回滚身份归一化
优化改进
- Codex 出站身份统一收口:所有 OAuth 出站的 User-Agent / originator / version 一律使用网关规范身份,覆盖 HTTP / 透传 / WS 握手 / 探针 / 模型列表 / alpha-search 等全部路径
- 管理端与账号级自定义 Codex UA 改为只贡献客户端名与 OS / 架构 / 终端指纹,版本段一律按当前生效版本重建;填写过陈旧版本号的存量配置无需迁移即自愈
- 补齐 4 处出站路径(WS 握手、账号测试 ×2、用量探针)对账号级自定义 UA 的支持,账号测试的出站身份与真实转发保持一致
- Codex 版本同步主路径改用 GitHub /releases/latest(响应体由约 10MB 降到约 0.3MB)并保留列表扫描回退;同步间隔由 3 小时改为 6 小时并新增启动防抖,频繁重启或滚动发布不再放大对 GitHub 的请求
- 流内 server_is_overloaded / slow_down 改为先在同账号有界重试再切号,按请求级瞬时故障处理,不再据此临时封禁账号
- Grok CLI 固定版本升级至 0.2.114(原 0.2.93),三处硬编码收敛为单一常量;固定值同时作为下限,低于该版本的环境变量覆写会被丢弃
- Claude OAuth 授权地址对齐 Claude Code CLI(claude.com/cai/oauth/authorize)
- 仪表盘用户消费排行优先显示用户名,其次邮箱,都未设置才回退到用户 ID
- 默认 CSP 策略放行验证码所需的腾讯与阿里云 CDN 域名
Bug 修复
- 修复 Codex 请求命中上游按 originator 分桶的降载策略后返回 server_is_overloaded,被网关判定为上游故障并冷却账号,表现为 Codex 账号频繁过载不可用的问题
- 修复计费失败时整条用量记录被丢弃导致用量漏记的问题(此类请求仍会落库,实收金额记为 0)
- 修复同一订阅并发续期时基于事务外的过期时间计算,导致其中一次续期天数被覆盖丢失的问题
- 修复用户余额不足时退款只按可用余额部分扣减、仍按全额退款造成的资金缺口:余额不足改为要求管理员显式强制确认;待确认退款的最终扣减与状态流转收敛到同一事务,避免重复扣减
- 修复管理端遇到需强制确认的退款时只弹错误提示、无法在界面上完成退款的问题(补齐强制确认勾选项与后端警告展示)
- 修复 Stripe 退款重试可能重复发起的问题(改为幂等请求)
- 修复前端访问令牌并发刷新的竞态,避免多个请求同时轮换令牌导致偶发掉登录
- 修复 OpenAI 账号承载的 Messages 路线遇到命中「临时不可调度」错误策略的上游错误时不切换账号、直接把错误返回客户端的问题
- 修复入站 WS 租约丢失时正在下发的终止事件被租约取消信号打断,客户端只收到关闭帧而看不到事件内容的问题
- 修复请求已取消后调度快照仍继续抓取缓存写入令牌、回落数据库查询的问题
- 修复模型广场图片模型展示价与实收口径不一致的问题(档位单价按分组图片价 > 渠道档位价 > 渠道默认按次价取值,分组开启生图独立倍率时按独立倍率计算)
- 修复提示词安全审计未解析 Responses 的 output_text 内容导致快照缺失的问题
- 修复重置额度展示缓存刷新失败会中断账号状态恢复、以及客户端中断可能让已消耗的重置额度无法恢复账号的问题
- 修复待建号 OAuth 表单在验证码令牌被消费后提交按钮仍可点击、提交必然失败且无任何提示的问题
破坏性变更
- 管理端退款接口在用户余额不足时不再自动按可用余额部分扣减,改为返回 require_force 并要求显式强制确认;直接调用退款 API 的集成需处理该返回
升级指南
- 启用腾讯天御或阿里云验证码前,若自定义过 CSP 策略,请参考 deploy/config.example.yaml 放行对应的 script-src / style-src / frame-src 域名
- 三家人机验证服务商互斥:升级后原有 Turnstile 配置保持不变;在新卡片中切换服务商会自动关闭其它服务商开关
- 管理端「OpenAI Codex UA」若填写过带版本号的旧值,升级后版本段会按生效版本自动重建,无需手动清理
📥 Installation
Docker:
# Docker Hub
docker pull weishaw/sub2api:0.1.171
# GitHub Container Registry
docker pull ghcr.io/wei-shaw/sub2api:0.1.171One-line install (Linux):
curl -sSL https://raw.githubusercontent.com/Wei-Shaw/sub2api/main/deploy/install.sh | sudo bashManual download:
Download the appropriate archive for your platform from the assets below.