Repository navigation
Sub2API 0.2.14
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 模型发现
- Wei-Shaw#7850(
- 依赖修复(
0f9d460dc):升级 Vue 与 source-map-js 以通过前端安全审计
- 来源提交:
- 来源二:
ranxi2001/sub2api分支production- 批次十二(本次新增):
1c28a9f5a(PR Wei-Shaw#314 – Wei-Shaw#318,ranxi releasev2.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.14backend/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 当作伪造回调重放,无需商户密钥即可绕过支付校验。修复分两层:CanonicalizeReturnURL丢弃客户端提交的全部 query 参数(buildPaymentReturnURL会自行附加签名字段);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(与 tagv0.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,请使用上方镜像部署。