AI API Gateway Platform - 将 AI 订阅配额分发和管理
本版面向需要复用质量检测配置、接入第三方生图模型及准备多主机运行的部署者,补齐配置复用入口、共享会话归属与并发结算回归,并按需引入上游 v0.2.18 的功能和修复。发布范围为 v2.16.0 之后至 #552 的已合并提交,包含 #546、#547、#548、#549、#550、#551、#552;不包含冻结范围之后的功能,也不表示已同步全部上游最新提交。
本 fork 的功能与修复
- 质量检测配置复用:新建(含多个目标)、单条编辑及批量编辑,均可选择纯配置模板或已有账号的具体规则;应用来源只预填,确认保存后才创建或更新。批量只更新勾选字段与目标,展示逐项差异,配置变化后需重新确认,部分失败仅保留失败目标。目标账号绑定、运行历史与处罚归属保留,不复制源凭据、结果或运行状态;纯模板保存不会分发计划或立即检测。原动态分组模板继续保留。#548、#550
- 质量恢复诊断:区分“分组已在场,旧归属待对账”、部分恢复、目标删除及受管字段冲突,保存有限的当轮检查证据;不会把外部恢复认领为本规则成功,也不会自动清除旧处罚归属。#528
- 第三方生图模型:OpenAI API Key 账号可配置精确模型 ID 或字面前缀名单,沿 Images generations 协议透传真实模型名;后台测试和异步生成复用该授权。名单默认空,原名及各级映射目标必须在同一账号获准,仍受分组生图与模型限制;不扩展 OAuth、Setup Token 或 Images edits。配置与计价边界
- 安全审计:增加默认关闭的内置安全政策注入与独立拒绝标识识别;仅精确匹配的 Responses 助手文本且无工具输出时改写拒绝并记录脱敏事件,不冒充上游 cyber_policy 判定、不自动封号。事件按实例保存,最多 500 条,默认保留 30 天,可配 1–90 天,多实例不聚合。内容审计补齐导航、逐 Key TypeSafe URL 编辑,以及自动封号、关键词、外部审核 API 三类独立豁免;新增审核豁免默认关闭,旧自动封号名单不会自动获得新豁免。#529、#532
- 兼容与日常运维:BPS 支持确定形态的 Codex create_thread 交接记录,将其作为 user 上下文保留而非伪造工具结果;明确的请求级内容拒绝或内部 WS 握手 403 不再处罚整个 OpenAI 账号,其他 403 和既有安全终止仍受原策略约束,历史冷却不会自动清理。余额不足拒绝在既有通知条件满足时可触发有界异步邮件提醒;未验证真实 SMTP 投递。账号智商测试的记录默认按当前账号弹窗展示,并保留全部账号入口和原测试草稿。#541、#545
- 依赖与代理配置:DOMPurify 升级至 3.4.17,未新增安全扫描例外;四套 Compose 支持传入 SERVER_TRUSTED_PROXIES,管理员诊断补充 TCP 对端。未设置环境变量时保留原 YAML,显式空值会禁用代理信任;已有 .env 中的该变量在新模板下会开始生效,升级前应检查,勿扩大默认信任范围。
多主机准备与验收边界
- gateway 默认作为共享调度快照 reader,缓存缺失或错误时拒绝服务,不回源账号库重建;full 保留 writer 行为,未提供 writer 自动选主。BPS 预热改用窄字段投影,gateway 减少全局扫描,空闲审计先等待任务再读取配置;没有真实带宽或性能提升测量。快照职责与就绪配置
- 新增默认关闭的指定桶快照就绪门禁,以及可选 WS node/boot/原连接归属、临时图片本节点 HTTPS owner origin 和日志节点标签。HTTP Responses 使用共享 tenant-owner 记录;兼容适配器只有共享写成功后才安装新本地 owner,避免发布失败仍产生新本地授权。旧双键路径的非原子性、旧 owner 重绑定及热缓存 TTL 边界仍保留。#552、会话与媒体边界
- 提供独立可选的 HTTP/HTTPS Caddy Responses 入口样例;HTTPS 上游验证 CA 与 SNI,不关闭证书校验、不自动降级。远端隔离回归覆盖真实 Caddy、两个完整应用进程、共享 PostgreSQL/Redis、合成模型的 SSE、drain、EOF、客户端取消,以及并发成功精确累计结算、失败零扣费和独立租约、满载排队取消不误释放活跃租约。#547、#549、#551
- 这些是隔离 CI 契约验证,不是两台真实生产主机上线或验收。尚不提供透明跨节点续接、统一长期媒体迁移、自动 DNS 摘除或百分比分流;真实双机、网络分区、生产 TLS/DNS、SDK、出口带宽及规模验收仍需另行执行。可选入口及新门禁不会因发版自动启用,中央代理仍承载正文带宽。
按需引入上游 v0.2.18
通过 #546 按功能挑选并适配 Wei-Shaw/sub2api v0.2.18,包括 Vertex 总/日/周配额与超限调度、账号筛选持久化、调度快照解码 memo 和模型映射签名、周期额度 SQL、Anthropic/Gemini 流式异常与中断用量、Cloudflare 1010 识别、工具 schema、DeepSeek 图片字段以及异步图片下载校验。保留 fork 独立版本与发布地址、BPS/WS、292 长度 ticket(x-codex-turn-state)、DeepSeek compaction/SSE、模型能力保护及账务幂等入口;292 是票据长度,不是 HTTP 状态或模型质量保证。
升级与兼容风险
- 生图开关:已有分组的 false 保持关闭;新增 Gemini/Antigravity/Grok 分组省略值时默认开启,composite 默认关闭,显式 false 优先。新的 Gemini 系门禁会令关闭生图的分组返回 400;混合分组需要管理员主动开启。未引入会重开旧分组的上游 246 迁移,fork 的同号迁移保持原用途。
- Grok 价格:grok-4.7-fast 与 grok-4.7-build-fast 改用专属 Fast 价卡,后续费用可能高于此前误落入的普通价卡;须检查自定义价卡、长上下文与倍率。变更只影响后续请求,不回算历史账单。第三方生图名单本身不配置价格;应显式设置分组/渠道图片单价,未知模型无价格时仍使用既有兜底,不套用 GPT 官方单价。
- 模板与数据库迁移:新增 forward-only 的 298_content_moderation_exemption_types.sql 和 299_quality_rule_presets.sql,分别补充独立审核豁免及管理员动作快照、独立纯配置模板表。升级前备份并评估迁移锁和存储开销。旧动态分组模板不会被转换或合并,保存纯模板不执行检测。回退二进制不会撤销表/列或已写配置;旧程序不认识复用编辑的 preserve_quality_state 语义,需配套回退前端,不能保证新状态保护仍生效。
- DeepSeek 旧协议:默认 input_image 只发 image_url;仍要求 url 的上游需由管理员在对应账号 credentials 中显式设置 deepseek_responses_image_field=url,只发 url。更新时合并其他已有凭据,不能替换整份 credentials;协议在首次发送前选择,不因上游错误自动重放。配置说明
- 多实例顺序与回退:先升级 full writer 并等待目标桶完整发布,再对 gateway 配置可选 readiness;旧 writer 无发布时间戳时新门禁可能拒绝就绪。reader 不会自动读库补齐;回滚 gateway 前按现有流程撤流排空,旧二进制会恢复部分旧扫描/归属局限。快照发布年龄不等于账号即时撤销或完整业务健康,保留 outbox、缓存及在途请求边界。
- 本次为软件正式发布,不包含部署、生产数据库迁移、SSH/重启、DNS/切流、真实模型或付费请求,也不验证真实用户邮件投递。发布验证以当前精确 SHA 的远端 CI、安全扫描、隔离 fullapp 与 Release 产物证据为准;本机未运行 Go 编译、动态测试、Docker、build/lint/vue-tsc/Wire。
📥 Installation
Docker:
# GitHub Container Registry
docker pull ghcr.io/ranxi2001/sub2api:2.17.0One-line install (Linux):
curl -fsSL https://raw.githubusercontent.com/ranxi2001/sub2api/v2.17.0/deploy/install.sh | sudo bash -s -- install -v v2.17.0Manual download:
Download the appropriate archive for your platform from the assets below.
K3s gateway upgrade (on each existing single-node host):
curl -fsSL https://raw.githubusercontent.com/ranxi2001/sub2api/v2.17.0/deploy/upgrade-k3s.sh | sudo bash -s -- --version v2.17.0Defaults: namespace tosky-canary, Deployment tosky-nerd; override with --namespace NAME --deployment NAME.
Upgrade every instance sharing Redis to this release.