Skip to content

Sub2API 0.2.14

Choose a tag to compare

@github-actions github-actions released this 08 Oct 13:31
· 2185 commits to main since this release
7d1585f

AI API Gateway Platform - 将 AI 订阅配额分发和管理

Important

本版本为 0.2.14:在完整保留 Fork 自有功能的前提下同时追平两条主线 ——
上游 Wei-Shaw/sub2api 的 main(v0.2.14)与 ranxi2001/sub2api 的 production(批次十二 Wei-Shaw#314 – Wei-Shaw#318,v2.9.11)。
latest 与 0.2.14 均指向本版本。

版本号与 tag 沿用上游编号 0.2.14(GoReleaser 强制语义化版本;应用内 parseVersion 只取前三段)。
0.2.14 大于此前的 0.2.13 / 0.2.12 / 0.2.11,应用内「检查更新」可正常提示升级。
上一版本 0.2.13 见 docs/releases/v0.2.13.md。

Note

本次为 0.2.14 第二次更新(2026-10-08):在上一次 0.2.14(上游 v0.2.14 + ranxi 批次十二)的基础上,
继续追平上游 main 的 66 个提交 与 ranxi 的 批次十三(PR Wei-Shaw#321 – Wei-Shaw#343,v2.9.11 → v2.10.0)。
上游自 v0.2.14 起未再发新 tag,故版本号与 tag 仍沿用 0.2.14(与 0.2.13 的处置方式一致)。
发布产物为 Docker 镜像(GHCR + Docker Hub 双 registry),Release 零附件(不附带二进制包与重登运行包)。

移植来源

  • 来源一:上游 Wei-Shaw/sub2api 分支 main
    • 来源提交:3f1a2ea0a(v0.2.14,2026-10-07 02:03 UTC);上次移植基准 b8dece900(v0.2.13)
    • 本次增量(b8dece900..3f1a2ea0a):5 个提交(5 个文件,+775 / −162),含 3 个上游 PR:
      • Wei-Shaw#7850(6e315616e):全新安装不再预置可猜测的管理员口令,部署脚本改为生成随机初始密码
      • #7881(d1aac6b98):关闭易支付(EasyPay)伪造回调的签名复用漏洞
      • Wei-Shaw#7851(bbba01dae):远端 Codex 目录启用 API Key 模型发现
    • 依赖修复(0f9d460dc):升级 Vue 与 source-map-js 以通过前端安全审计
  • 来源二:ranxi2001/sub2api 分支 production
    • 批次十二(本次新增):1c28a9f5a(PR Wei-Shaw#314 – Wei-Shaw#318,ranxi release v2.9.11,2026-10-07);上次移植基准 23eed543b(批次十一)
    • 批次十二增量(23eed543b..1c28a9f5a):15 个提交(10 个非合并),60 个文件(+1476 / −256)
  • 本次两条主线合入后,本 Fork 相对上一版净增:60 个文件(+1476 / −256)
  • 新增迁移:无(批次十二不含数据库迁移)
  • 版本号:backend/cmd/server/VERSION 为 0.2.14

本次新增(2026-10-08):上游增量(3f1a2ea0a..5fc0e486c,66 个提交)

  • 规模:66 个提交(含 40+ 个上游 PR 合并),155 个文件(+5719 / −204)
  • 上游自 v0.2.14 后未再发新 tag,backend/cmd/server/VERSION 保持 0.2.14
  • 主要方向:
    • 用量与延迟指标:新增 formatUsageOutputRate(输出吞吐,含首字等待,与运维统计口径一致);延迟健康度阈值与着色
    • 监控请求采样(Wei-Shaw#7916):渠道监控采样取数与展示修正
    • 复合路由模型列表(Wei-Shaw#7793):复合分组路由下的模型列表修正
    • 长上下文标记(Wei-Shaw#7897)、账号筛选紧凑模式(Wei-Shaw#7853)、用量输出 TPS(Wei-Shaw#7911)
    • 思考签名(Wei-Shaw#7703):thinking signature 相关处理
    • 大量前端健壮性修复(组件卸载竞态、分页竞态、对话框 Esc 栈、备份轮询、定时任务竞态等)
    • 邮箱绑定草稿保留(Wei-Shaw#7833)、分数字节速率(Wei-Shaw#7721)、缩放价格指数(Wei-Shaw#7716)等

本次新增(2026-10-08):ranxi 批次十三(1c28a9f5a..17c88b012,PR Wei-Shaw#321 – Wei-Shaw#343)

  • 规模:v2.9.11 → v2.10.0,24 个提交(22 个非合并),296 + 43 个文件(+39358 / −686,含截图与文档)
  • 新增迁移:265_new_api_site_authorizations.sql、266_account_ops_notifications.sql、
    267_account_ops_threshold_episodes.sql、268_controlled_experiments.sql、268_support_tickets.sql
    (两个 268_ 前缀为 ranxi 并行 PR 各自编号,迁移以文件名为键,互不覆盖)

新功能

  • 网站工单(support tickets):用户端提问 + 管理员回复,含列表、汇总、状态流转与删除;由功能开关 support_ticket_enabled 控制(默认关闭)
  • 账号运维告警(account ops):上游钱包监控 + 机器人 webhook 阈值告警,含阈值事件台账
  • 受控渠道实验(controlled experiments):渠道实验分组、评分与提交台账;受控模式下跳过 HTTP/SSE 回退与部分重试
  • New API 站点授权:新 API 上游站点授权与配置对话框
  • BPS OAuth 账号入口:新增 BPS OAuth 账号类型并适配 Excel 会话凭据

修复与改进

  • BPS / Prism 协议总开关:excel_bps_enabled 可全局关闭(关闭时账号徽标不再显示)
  • 智商测试:支持模型与思考强度下拉选择,并支持手动输入;保留配置模型
  • 调度:空闲容量与「质量就绪」API Key 的探索均衡
  • OpenAI WS 加速:完善保护逻辑并补齐新增账号开关;取消定向打票次数与并行通道上限,续接节点遍历
  • 用量:单输出 Token 的记录不再显示 0.0 t/s,改为不可用占位
  • 渠道状态 V3:页面显示布局优化
  • 依赖安全:xlsx 升级到 SheetJS CDN 0.20.3(含 CVE-2023-30533 / CVE-2024-22363 修复),
    相应移除 .github/audit-exceptions.yml 中两条已失效的 xlsx 例外

本次合并的冲突处理(2026-10-08)

  • backend/cmd/server/VERSION:保留本 Fork 编号 0.2.14
  • backend/cmd/server/wire_gen.go:清除冲突标记后用 wire 重新生成,Fork 与 ranxi 的 provider 四组并存
  • backend/internal/service/admin_account.go(5 处):UpstreamUsageProbeExtraKey(Fork 自有额度探测)与
    UpstreamBillingProviderExtraKey(ranxi 新 API 上游)是两个不同的键,创建 / 编辑 / 批量更新路径都必须一并剥离,保留两者
  • backend/internal/service/openai_gateway_forward.go(2 处):保留 Fork 的 wsResult.WebSearchCalls 短路返回与
    invalidEncryptedContentError 扩展匹配,同时吸收 ranxi 的 isControlledExperiment 门
  • backend/internal/web/embed_on.go:服务路由前缀并集并去重(保留 /videos 系列,采纳上游 /models/…)
  • backend/internal/handler/openai_gateway_handler.go:上游逐 turn 计费分组重取与 Fork 的代理车道跨 turn 刷新共存
  • backend/internal/service/account_test_service.go:上游的日志初始化 / 平台绑定 / 后台标记与 Fork 的质量探测标记、
    BPS 观测校验、首字延迟统计共存
  • frontend/src/components/admin/account/CreateAccountModal.vue:平台切换重置并集(Fork 的协议 / 自适应基址 + ranxi 的 BPS OAuth)
  • 前端其它:featureFlags 两个 flag 并存、AccountsView 两个组件 import 并存、SettingsView 两个设置字段并存、
    UsageTable 保留 Fork 的 TPS 单元格(严重度着色 + t/s 单位 + 原 data-testid)
  • .github/audit-exceptions.yml:采纳 ranxi 对已失效 xlsx 例外的移除
  • Makefile、i18n(dashboard en/zh):并集

上游增量(b8dece900..3f1a2ea0a,v0.2.14)

安全

  • 易支付回调签名复用漏洞(#7881 / d1aac6b98):订单创建签名(用户在 submit.php 弹窗 URL 中可见)对 return_url 等字段签名时不做转义,
    客户端可在 return_url 末尾夹带 &trade_status=TRADE_SUCCESS,使订单创建签名与「支付成功」通知签名逐字节相同,
    从而把已签名 URL 当作伪造回调重放,无需商户密钥即可绕过支付校验。修复分两层:
    1. CanonicalizeReturnURL 丢弃客户端提交的全部 query 参数(buildPaymentReturnURL 会自行附加签名字段);
    2. VerifyNotification 对参数做白名单校验,任何不在真实异步通知集合内的参数一律拒绝。
      白名单外键(return_url、notify_url、cid、device、clientip 等)在回调中一律 fail-closed;
      被误拒的真实已付款订单仍可由上游 QueryOrder 对账路径恢复。
      回归测试覆盖伪造签名复用、订单 URL 重放、未知参数、成功通知缺少 trade_no 等场景。
  • 全新安装不再预置可猜测的管理员口令(Wei-Shaw#7850 / 6e315616e):全新部署曾使用可猜测的默认管理员凭据。
    现改为由部署脚本生成随机初始密码并在安装结束时一次性展示,deploy/ 下各 compose 与脚本同步更新。

修复与依赖

  • 远端 Codex 目录启用 API Key 模型发现(Wei-Shaw#7851 / bbba01dae):UseKeyModal 在「远端模型目录」模式下生成的 Codex 配置补上
    api_key_model_discovery = true,使 API Key 模式能够发现远端目录中的模型。
  • 前端依赖安全审计(0f9d460dc):Vue 升级到 ^3.5.43,source-map-js 覆盖提升为 >=1.2.2;audit-exceptions.yml 中 xlsx 例外说明改为
    「仅写入、无解析路径」并顺延有效期。

ranxi 批次十二增量(23eed543b..1c28a9f5a,PR Wei-Shaw#314 – Wei-Shaw#318,v2.9.11)

调度与额度

  • OAuth 额度优先与末位 API Key 自动后备(Wei-Shaw#315 / 576179d18):OAuth 账号按额度优先调度,额度用尽时自动回退到排位最末的 API Key,
    并附带冷启动探索限定到 OAuth 账号(32e00e1ad)与分池边界回归测试(d343e99b1)。
  • 新 OAuth 账号自动复制质量运维规则(Wei-Shaw#316 / afb0a5bf9):新 OAuth 账号自动继承质量运维规则;首次质量规则(InitialQualityPlan)
    标记为创建期内部策略,不进入插件可读快照(497fec47a)。

修复

  • 凭证运营记录清理(Wei-Shaw#318 / fb77e6c8f):定期清理已删除账户遗留的凭证运营记录,避免孤儿数据累积。
  • Prism 浏览器内存准入可配置(Wei-Shaw#314 / 87628dd72):浏览器内存准入预算改为可配置,便于按部署规模调整。
  • 移动端账号浮层(Wei-Shaw#317 / 84b844a93):账号提示浮层收敛在移动端视口内,不再溢出。

本次合并的冲突处理

  • backend/cmd/server/VERSION:保留本 Fork 版本号,本次为 0.2.14(不采用 ranxi 的 2.9.11)
  • backend/internal/service/openai_plugin_account_directory_test.go:并集 —— ranxi 新增的 InitialQualityPlan 与 Fork 自有的
    ProxyLanes / SelectedProxyLane 私有字段同时列入快照剥离清单
  • backend/internal/payment/provider/easypay.go、payment_resume_service.go:仅注释措辞差异(修复逻辑一致,Fork 此前已独立实现同一修复),
    采纳上游更完整的安全说明
  • backend/internal/payment/provider/easypay_notify_security_test.go:两侧各自编写了同名用例,采用上游版本(覆盖更全)并保留 Fork 独有的
    「成功通知缺少 trade_no 必须拒绝」断言为独立用例
  • frontend/package.json:并集 —— Vue 采纳上游 ^3.5.43,source-map-js 采纳上游 >=1.2.2 范围写法,保留 Fork 自有的 nanoid 固定
  • frontend/pnpm-lock.yaml:按上述并集手工解决,并去重 source-map-js 覆盖项;pnpm install --frozen-lockfile(pnpm 9)校验通过
  • .github/audit-exceptions.yml:采纳上游更准确的措辞与更长的有效期

Fork 自有功能(完整保留)

  • Codex 292 门票(x-codex-turn-state)打票与注入、上游剩余额度探测、账号代理车道(proxy lanes)
  • 管理员请求采集、凭证守护(令牌巡检 / 自动重登 / 错误态自愈,默认关闭)、账号质量运维
  • Excel / BPS 协议、Mihomo 托管 / 动态代理区域、Pelican 定时演练
  • 图片创作 / 画布 / Studio Bridge、邮件广播、模型广场、Claude 重置额度查询
  • 发布流水线:双 registry(GHCR + Docker Hub)推送;latest 只由 Release 写;二进制归档停发(仅保留 Docker 镜像)

升级说明

  • 升级方式:管理后台左上角「检查更新」可一键升级;也可在服务器执行
    curl -sSL https://raw.githubusercontent.com/ziyue67/sub2api/v0.2.14/deploy/install.sh | sudo bash -s -- upgrade。
  • 回滚方式:install.sh rollback <version>。
  • 也可以使用 Docker 镜像部署:docker pull ghcr.io/ziyue67/sub2api:0.2.14,具体见 部署文档。
  • 镜像只提供 linux/amd64 单架构(不产出 arm64;install.sh 在 arm64 上会明确报错),标签为 0.2.14 / 0.2.14-amd64 / latest(同一镜像)。
  • 数据库迁移:本版本不含新增迁移;此前版本的迁移于启动时自动执行。升级前请备份数据库。
  • ⚠️ 全新安装首次使用的管理员口令:上游 Wei-Shaw#7850 起不再预置默认口令,改为安装时生成随机初始密码。
    沿用旧 compose/脚本自定义部署的用户,请确认自己已显式设置 ADMIN_PASSWORD,否则首次启动需从安装输出中获取随机口令。
  • 请求采集与凭证守护默认关闭,需在「系统设置 > 功能开关」中显式启用。
  • 安装脚本与在线更新服务的默认仓库为 ziyue67/sub2api(backend/internal/service/update_service.go、deploy/install.sh)。

验证

  • 本地校验(Linux,Go 1.27.1 / Node 22 / pnpm 9.15.9):
    • 后端:go build ./...、gofmt -l、go test -tags=unit ./... 全部通过(无 FAIL)
    • 前端:pnpm install --frozen-lockfile 通过(锁文件未被改写);vue-tsc --noEmit 通过;eslint . 通过;
      关键清单 vitest 62 个文件 / 1021 个用例全部通过
    • 定向回归:易支付回调安全用例、CanonicalizeReturnURL 用例全部通过
  • 工作树检查:无残留冲突标记(<<<<<<< / >>>>>>>),git status 干净
  • 发布配置校验:构建目标 goarch 仅 amd64;发布说明按 docs/releases/v0.2.14.md(与 tag v0.2.14 同名)由 release.yml 回写

📥 Installation

Docker:

# Docker Hub
docker pull ziyue67/sub2api:0.2.14

# GitHub Container Registry
docker pull ghcr.io/ziyue67/sub2api:0.2.14

本版本起不再发布 tar.gz / zip 二进制包与 checksums.txt,请使用上方镜像部署。

📚 Documentation