Repository navigation
Sub2API 0.2.12
AI API Gateway Platform - 将 AI 订阅配额分发和管理
Important
本版本为 0.2.12:在完整保留 Fork 自有功能的前提下,追平上游 Wei-Shaw/sub2api 的 main(v0.2.12)。
latest 与 0.2.12 均指向本版本。
版本号与 tag 均沿用上游编号 0.2.12(GoReleaser 强制语义化版本,四段号会被拒绝;应用内更新检查的 parseVersion 只取前三段)。
0.2.12 大于此前的 0.2.11 / 0.2.91 / 0.2.10,应用内「检查更新」可正常提示升级。
Note
本次为 0.2.12(2026-10-02):并入上游 v0.2.12(含 20 个非合并提交、13 个上游 PR 合并),
引入 TypeSafe Jev System One 平台、充值优惠阶梯、账号优先级快捷调整等改动;发布产物为 Docker 镜像(GHCR + Docker Hub 双 registry)。
本 Fork 的 ranxi production 追平(批次十)安排在下一个版本 0.2.13,与上游 v0.2.13 一并合入。
移植来源
- 来源仓库:上游
Wei-Shaw/sub2api分支main - 来源提交:
458b92abd(v0.2.12,2026-10-02);上次移植基准为42bc7f6cf(v0.2.11,2026-09-30,PR #93) - 本次增量(上游 v0.2.12,
42bc7f6cf..458b92abd):29 个提交(20 个非合并),151 个文件(+5779 / −311) - 与本 Fork 合并后净增:149 个文件(+5774 / −305)
- 新增迁移:
241_add_typesafe_platform.sql(平台约束加入typesafe)、241_add_payment_order_bonus_amount.sql(payment_orders新增bonus_amount),
启动时自动执行 - 合并基准:上游
Wei-Shaw/sub2api;本次未引入 ranxi 代码 - 版本号:
backend/cmd/server/VERSION为0.2.12
上游 v0.2.12 增量(本次新增)
- TypeSafe Jev System One 原生平台(Wei-Shaw#7425 等):新增
typesafe平台与/v1/systemone端点,
含账号创建与测试、分组 / 渠道 / 配额 / Composite 路由、计费、内容审核与提示词审计覆盖;
新增backend/internal/pkg/typesafe/、gateway_systemone.go、account_test_service_typesafe.go,迁移241_add_typesafe_platform.sql- 校验口径与上游 schema 对齐(
bb97ab364),并补齐平台迁移、审计覆盖、端点隔离与错误策略(2d8a38681),
堵住校验解析差异与审计盲区、收紧模型列表口径(9eb394e3e) - 错误透传的平台列表守卫把
typesafe纳入(fa49647c6)
- 校验口径与上游 schema 对齐(
- 充值优惠阶梯(Wei-Shaw#7802):后台可配置「满 X 送 Y%」赠金或「满 X 打折」折扣模式及 Markdown 活动文案;
充值页快捷金额显示促销价签,订单与支付结果展示赠送额度
(payment_recharge_bonus.go、RechargeBonusTierEditor.vue、utils/rechargeBonus.ts、迁移241_add_payment_order_bonus_amount.sql) - 账号优先级快捷调整(Wei-Shaw#7630):账号列表悬停显示 -/+ 按钮、可点击直接输入,连续点击自动合并为一次保存
(AccountPriorityCell.vue);禁用状态的步进器在悬停前保持隐藏(58d605083) - API 密钥列表按分组名排序(Wei-Shaw#7803):
api_key_repo支持按分组名称排序 - Grok 请求身份头对齐官方交互式 CLI 1.0.46(
ad05eda15/fdce5b8d0),修复 CLI 版本过低返回 426 的问题
上游 v0.2.12 安全与修复
- Antigravity 上游错误体泄露:投递给客户端前清洗上游错误体,避免泄露账号池项目 ID 与服务账号邮箱(Wei-Shaw#7674)
- 邮箱验证码并发猜测:验证码尝试次数改为原子扣减,绕过 5 次上限的问题修复;重置密码 token 改为哈希存储并原子单次消费(Wei-Shaw#7676)
- 匿名订单查询限流:
/payment/public/orders/verify按 IP 限流 20 次/分钟,防止订单号枚举(Wei-Shaw#7673) - 自定义错误码警告文案:修正为准确描述其实际作用(Wei-Shaw#7773)
- 依赖安全:Axios 升级至 1.20.0(
53158587a/00940743d)
Fork 自有功能(完整保留)
- Codex 292 门票(x-codex-turn-state)打票与注入:独立代理后台打票、住宅 IP 请求覆盖该头,含后台开关、门票状态展示与缺票拦截
- 上游剩余额度探测:账号页可查询上游余额与用量窗口
- 账号代理车道(proxy lanes):车道级调度、车道粘性绑定与准入并发控制
- 管理员请求采集:按用户 / 上游账户 / 入口分组创建采集任务,默认关闭
- 凭证守护:令牌巡检、自动重登与错误态自愈(默认关闭),重登运行包来源可配置
- 账号质量运维、Excel / BPS 协议、Mihomo 托管 / 动态代理区域、Pelican 定时演练
- 图片创作 / 画布 / Studio Bridge、邮件广播、模型广场(model-square) 等
- 发布流水线:双 registry(GHCR + Docker Hub)推送;Release 零附件(
build-reauth-runtime仅在手动勾选时执行)
升级说明
- 升级方式:管理后台左上角「检查更新」可一键升级;也可在服务器执行
curl -sSL https://raw.githubusercontent.com/ziyue67/sub2api/v0.2.12/deploy/install.sh | sudo bash -s -- upgrade。 - 回滚方式:
install.sh rollback <version>。 - 也可以使用 Docker 镜像部署:
docker pull ghcr.io/ziyue67/sub2api:0.2.12,具体见 部署文档。 - 镜像只提供
linux/amd64单架构(不产出 arm64;install.sh在 arm64 上会明确报错),标签为0.2.12/0.2.12-amd64/latest(同一镜像)。 - Release 零附件:不附带
sub2api_*.tar.gz/*.zip/checksums.txt,统一以 Docker 镜像交付。 - 数据库迁移:新增
241_add_typesafe_platform.sql(accounts.platform约束加入typesafe)与
241_add_payment_order_bonus_amount.sql(payment_orders.bonus_amount),启动时自动执行。升级前请备份数据库。 - 重置密码链接失效提醒:重置 token 改为哈希存储,升级前已发出但尚未使用的链接将失效,用户需重新申请。
- 请求采集与凭证守护默认关闭,需在「系统设置 > 功能开关」中显式启用。
- 安装脚本与在线更新服务的默认仓库为
ziyue67/sub2api(backend/internal/service/update_service.go、deploy/install.sh)。
验证
- 合并冲突处理(上游 v0.2.12,4 个文件):
backend/internal/service/account_service.go:Create并集 —— 保留 Fork 的ValidateModelMappingMode,同时采纳上游的 TypeSafe 凭证类型校验backend/internal/service/admin_account.go:buildAccountForCreate并集 —— 保留 Fork 的MergeOpenAICodexTicketExtra,同时采纳上游的 TypeSafe 校验frontend/src/views/admin/AccountsView.vue:保留 Fork 的cell-upstream_usage(上游剩余额度列),同时采纳上游的AccountPriorityCell优先级快捷调整(原 Fork 的只读 priority 单元格被替换);两处 import 取并集frontend/src/views/admin/SettingsView.vue:<script setup>导入取并集(保留 Fork 的EmailBroadcastDialog,采纳上游的RechargeBonusTierEditor与@/utils/rechargeBonus)backend/internal/service/account_test_service_typesafe_test.go:上游测试按两返回值签名调用parseTestSSEOutput,
而 Fork 的实现额外返回upstreamModel,合并后编译失败;补第三个返回值丢弃(3f5b3fb36)
- 本地校验(Linux,Go 1.27.1 / Node 22):
- 后端:
go build ./...、go vet -tags=unit ./...、go test -tags=unit -count=1 ./...(65 个包全绿,无 FAIL)、
golangci-lint run --timeout=30m→0 issues - 前端:
vue-tsc --noEmit、eslint .(全量lint:check)通过;受影响的账号 / 充值 / 密钥用例通过
- 后端:
- 工作树检查:无残留冲突标记(
<<<<<<</>>>>>>>)。 - 发布配置校验:Docker 镜像标签为
0.2.12/0.2.12-amd64/latest(GHCR 与 Docker Hub 同一镜像);
发布说明按docs/releases/v0.2.12.md(与 tag 同名)由release.yml/sync-fork-release.yml/backfill-release.yml回写;
tag 与 Release 由发布流程创建,不发布任何附件。
Docker 镜像(ziyue67/sub2api)
ziyue67/sub2api:latest
ziyue67/sub2api:0.2.12
ghcr.io/ziyue67/sub2api:latest
ghcr.io/ziyue67/sub2api:0.2.12
拉取示例:
docker pull ziyue67/sub2api:0.2.12
docker pull ghcr.io/ziyue67/sub2api:0.2.12