AI API Gateway Platform - 将 AI 订阅配额分发和管理
本版修复加密代理会话等待额度恢复、WS 加速流提前结束和 OAuth 重登后的调度状态,调整降智处置的恢复方式,并补齐账号列表与用量统计。包含自 v2.20.2 起合入的 16 个 PR。
会话续接与传输
- 原账号限流后保留代理会话(#759、#769):已有完整归属记录、原账号仍获授权且路由未变时,将已知额度限流和过载与永久不可用区分,返回 429 / 503、
Retry-After及预计恢复时间,并延长仍存在的归属记录。客户端等待后可继续原会话;网关不自动切号、重放工具结果或补建已丢失记录。原 owner、配置及实际出站信息一致时,允许携带加密代理历史进行原生remote_compaction_v2压缩;旧/responses/compact桥接不在此范围。预计恢复时间不保证供应商额度已恢复,Token 刷新或路由变化仍可能阻止续接。详见续接与等待边界。 - WS 加速流缺少终态时明确报错(#777):开启 HTTP 流式 WS 加速的请求在上游关闭或读取失败、且尚未收到推理终态时,返回
upstream_stream_incomplete。下游尚未提交时返回 HTTP 502,已提交 SSE 时追加单个response.failed,避免正常关闭帧被误认为完成;客户端取消保留原分类。两类 Codex 控制元数据短暂缓冲,已发送请求仍不自动重放。没有用量证据时不生成零 Token 用量记录,已观察到的部分用量保留。同步修复区域计量对预编码 WS 请求的校验和错误替换后的响应归属,避免重复写出错误。详见WS 加速说明。 - Serverless 转发不再固定等候 60 秒(#775):新增
runtime.serverless_response_header_timeout,默认0表示转发层不额外设置响应头截止时间,继续受客户端取消、请求 context 和 Pod 上游超时约束;可设置正数限制等待预算,修改后需重启入口进程。健康探测保留独立的 3 秒预算,已发送请求不跨节点重放。转发失败日志增加固定错误分类、耗时和请求关联信息。详见配置与连接占用边界。 - Codex 客户端兼容(#766、#767、#770):生成 Codex 配置时优先选择目录中的首个可用模型,空目录保留原回退;Responses HTTP 将符合特定格式、没有调用身份的 Companion Page 上下文转为用户文本,保留真实工具输出校验。WS 首帧日志区分客户端断开、请求取消、超时和读取错误,正常断开及取消降为 info。以上分别来自社区贡献者
seanshigit与ambi-vip;原 owner 压缩修复来自akihitohyh。
OAuth 处置与恢复
- 降智处置使用可编辑的原生配置(#771):模型限制直接保存为账号原生白名单,并清除可绕出范围的 compact 映射、关闭透传;空交集关闭调度并保留原映射。并发和分组也沿用原生配置,管理员可在账号编辑中恢复,不再被历史处置标记反复拦截;历史标记仅用于审计和防止重复处置。限制并发会暂停自动升档,管理员修改并发后重置旧进度并恢复正常策略。自动目录同步不扩充 OAuth 显式白名单,Token 刷新保留刷新期间的新配置与状态。全局处置默认仍关闭;关闭模板不会回改已处置配置。详见处置、迁移与人工恢复。
- 连续自身 OAuth 401 后清理质量规则(#772):质量运维新增轮次上限,新建规则默认 6 轮,
0关闭;已有规则缺少该设置时保持关闭。当前接入 OpenAI OAuth 答题路径,账号须处于明确的 401 错误状态,按自身直连的完整有效 401 轮次计数;混合或后续整轮model_unavailable还须有绑定当前凭据的结构化撤销证据,不采信判题账号、BPS、借用凭据或通用错误正文。达到上限后删除检测规则及其历史、恢复记录,保留账号;规则仍拥有模型/分组隔离或冷却时不会删除,也不自动解除限制。配置、凭据变化及不确定轮次重置计数,动态分组模板不补建已删规则。详见计数、删除与回滚语义。 - 401 重登保留当前调度开关(#774):OpenAI OAuth 认证失败仍进入错误状态并停止调度,但保留原开关;重登成功清除错误和临时冷却后继续使用数据库当前开关,保留手动、定时及 429 暂停。普通编辑不会用旧状态清除认证错误或覆盖已完成的恢复。旧版已写成关闭的账号不会在升级时自动开启,需核实后人工恢复。详见认证错误与调度恢复。
调度与管理页面
- 修正候选授权与快照发布(#757、#773、#778):旧版负载感知调度先完成外层传输与能力准入,再更新会话绑定,避免被拒候选占用旧绑定比较值;图片候选精简元数据保留额外模型和前缀授权。显式空账号快照可被正确读取并判定就绪,缺失快照仍视为未就绪。同一批次内的退休分组只复用已成功完成的生命周期协调,继续保留并发重开和旧写入围栏;本增量未实现活跃大分组的增量成员更新,也不表示 #711 已整体解决。
- 账号列表直接显示待执行任务(#763):无需打开定时任务弹窗,即可查看开启/关闭动作、一次性/每日周期、下次执行时间、时区与倒计时;沿用已有每日窗口摘要和管理入口。
- 用量页增加 RPM / TPM(#764):管理员及观察员用量页按当前统计范围计算平均每分钟请求和 Token 数,范围覆盖今天或未来时只计算截至读取时刻已过去的分钟数,沿用相同筛选。无有效数据或时间范围时显示
—;这是所选范围平均值,不能直接当作瞬时峰值。 - 优先调度区分历史分析和实时证据(#760):历史指标充分、仅缺实时并发时显示“历史指标达标”;未采集的实时并发和尝试错误率明确显示“未采集”,分流权重标为估算值。真实缺样本、已知超标和延迟恢复期分别展示,保留实际选号与评分规则,页面历史状态不表示账号当前可调度。
升级注意
- 相对
v2.20.2新增 3 份 SQL 迁移:338_oauth_degradation_native_controls.sql、338_quality_oauth_401_streaks.sql和339_quality_oauth_401_trusted_revocation.sql。升级前备份数据库与配置;它们分别迁移旧降智限制、新建独立连续 401 计数表,并加入可信撤销证据字段及清零旧计数。 - 旧降智标记迁移到原生白名单时,非法范围、空交集或无法安全还原映射的账号会关闭调度,需管理员核查后恢复。旧二进制会重新执行历史标记限制,可能使人工恢复失效;仅替换二进制不能视为完成回滚。已删除的质量规则和历史也不会因回退自动恢复。
- 共享 Redis 的网关、管理及质量检测实例应协调升级,再启用连续 401 清理。旧实例仍可能覆盖调度开关、解释历史降智标记或不识别新版空快照;前后端需配套更新。
- Serverless 默认取消转发层额外响应头截止时间后,未响应 Pod 可能持续占用连接,直到请求取消或 Pod 上游预算结束。需要限制时设置正数;回退旧二进制恢复原固定 60 秒上限。
📥 Installation
Docker:
# GitHub Container Registry
docker pull ghcr.io/ranxi2001/sub2api:2.20.3One-line install (Linux):
curl -fsSL https://raw.githubusercontent.com/ranxi2001/sub2api/v2.20.3/deploy/install.sh | sudo bash -s -- install -v v2.20.3Manual 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.20.3/deploy/upgrade-k3s.sh | sudo bash -s -- --version v2.20.3Defaults: namespace tosky-canary, Deployment tosky-nerd; override with --namespace NAME --deployment NAME.
Upgrade every instance sharing Redis to this release.