Skip to content

Releases

Sub2API 0.2.19

Choose a tag to compare

@github-actions github-actions released this 28 Oct 13:39
6a1633c

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

新增按操作与资源范围授权的管理员 API Key;OpenAI / Composite 分组支持按实际出图张数计费,并新增 GPT-6.1 Terra 模型支持。

新增功能

  • 管理员 API Key:可按操作和资源范围授权,支持过期时间和 IP 白名单;只保存不可逆摘要,撤销记录保留用于审计
  • 按张计费:OpenAI 和 Composite 分组新增「按张计费」开关(默认关闭),一次生成多张图时按上游实际返回的张数计费,只对专用图片端点生效
  • OpenAI:支持 GPT-6.1 Terra 模型
  • Gemini:同账号重试次数可通过 gateway.max_same_account_retries_gemini 配置(默认 4,范围 0–10)
  • Grok:管理端新增账号模型目录诊断,可查看来源、可信状态和与本地映射的差异;手动同步和后台观察统一使用同一套解析规则

优化改进

  • Gemini:刷新默认模型列表,移除已停用的 2.0/2.5 系列和 3-pro-preview;连接测试默认模型改为 gemini-3.5-flash
  • Gemini:分组内账号都配置了模型映射时,/v1beta/models 列表和详情按声明的模型返回,与 /v1/models 口径一致
  • Gemini:绑定显式缓存的请求在池模式上游网关账号上,按配置在同一账号重试
  • 国产 Coding Plan 账号遇到请求频率型 429 时改为秒级冷却,不再停调到 5h 窗口结束
  • 模型列表刷新在并发冷启动时不再重复请求上游
  • Grok:原生 Responses 和各转换路径都会记录上游原始响应模型,便于审计

Bug 修复

  • 修复 Gemini 以 fileData 形式返回的图片未计费的问题
  • 修复渠道按次计费的图片档位丢失 token 用量的问题
  • 修复 DeepSeek V4 Pro 在 9 月 14 日之后定价失效的问题
  • 修复 DeepSeek prompt_cache_hit_tokens 未计为缓存读取的问题
  • 修复 OpenCode 转发 DeepSeek 时 developer 角色导致 422 的问题
  • 修复 Antigravity 非流式畸形工具调用返回空成功响应的问题
  • 修复超大 multipart 图片上传被静默截断的问题,现在直接拒绝
  • 修复分页参数过大时偏移量溢出导致 500 的问题
  • 修复管理员保护规则校验返回 500 的问题,现返回 400
  • 修复保存渠道时覆盖 web_search_emulation 平台维度的问题
  • 修复模型广场分组模型定价被图片兜底档位覆盖的问题
  • 修复 Grok 模型目录快照被失败请求、乱序请求或旧表单覆盖的问题

升级指南

  • 本版本包含数据库迁移 247(scoped_admin_api_keys 表)和 248(groups.image_count_billing 列),启动时会自动执行
  • Gemini 默认模型列表已移除 2.x 系列;仍需使用这些模型的账号请自行在白名单或模型映射中配置

Docker 镜像(ziyue67/sub2api)

ziyue67/sub2api:latest
ziyue67/sub2api:0.2.19
ghcr.io/ziyue67/sub2api:latest
ghcr.io/ziyue67/sub2api:0.2.19

拉取示例:

docker pull ziyue67/sub2api:0.2.19
docker pull ghcr.io/ziyue67/sub2api:0.2.19

文档

Sub2API 0.2.18

Choose a tag to compare

@github-actions github-actions released this 23 Oct 14:35
435b5cf

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

Important

本版本为 0.2.18:在完整保留 Fork 自有功能的前提下追平上游 Wei-Shaw/sub2api 的 main
(v0.2.18,账号配额维度化 + 调度快照常驻内存 + 兼容流收尾对齐),版本号沿用上游编号 0.2.18。
latest 与 0.2.18 均指向本版本。

0.2.18 大于此前的 0.2.17 / 0.2.16 / 0.2.15,应用内「检查更新」可正常提示升级。

Note

本次为 0.2.18(2026-10-23):在 0.2.17 的基础上,合并上游 main 的 45 个提交
(b0a02a330 → 5c185c5c5)。发布产物为 Docker 镜像(GHCR + Docker Hub 双 registry),
Release 零附件。

移植来源

  • 来源一:上游 Wei-Shaw/sub2api 分支 main
    • 来源提交:5c185c5c5(v0.2.18,2026-10-23);上次移植基准 b0a02a330(v0.2.17)
    • 本次增量:45 个提交(含合并提交),114 个文件(+7482 / −566)
  • 新增迁移:246_enable_gemini_image_generation_groups.sql
  • 版本号:backend/cmd/server/VERSION 为 0.2.18

上游增量(v0.2.18)

账号与调度

  • Vertex 账号支持配额上限,与 API Key / 服务账号配额口径统一
  • 账号配额累加按已设置的周期维度选择语句(日/周/月维度不再写多份)
  • 调度快照解码结果常驻进程内存:只有在 ready、active 版本、全局修订号与平台修订号都与 Redis
    一致且未超最长复用时长时才复用;last_used 每次仍从 Redis 读取
  • 解码结果靠 EXISTS 校验元数据未删除,删除/撤销会使温缓存立即失效
  • 单 antigravity 账号的分组判定改为按需求值
  • 模型映射签名改为与遍历顺序无关、零分配
  • 模型限流快照写入改为写时复制,避免候选对象被跨 bucket 污染
  • 账号列表的平台与状态筛选可持久化

网关与协议

  • Anthropic 账号 chat/responses 兼容流式:客户端断开后读完上游再计费(不再漏计)
  • 兼容流上游未正常结束时按错误收尾,并与原生 SSE 收尾对齐
  • Codex overload:合并身份判定与空流安全重试修复,排队事件与 metadata 事件之后仍保留重试
  • 工具参数常量与注解归一化
  • Cloudflare 1010 拦截不再惩罚账号(按边缘拦截处理)

Gemini / 生图

  • 分组「允许当前分组生图」开关对 Gemini 系入口生效(含迁移 246)
  • Gemini prompt 被拦截、只报缓存命中时 input_tokens 不再为负
  • Gemini 流式中途客户端断开时按已收集用量计费
  • DeepSeek 图片输入避免重复载荷(按账号凭据选定单一 URL 字段)
  • 异步生图转存的图片下载与同步回填策略对齐

计费

  • Grok 4.7 Fast 按官方 Fast 价卡计费

构建与安全

Fork 侧保留与合并处理

本次上游合并冲突面很小(3 个文件),无逻辑冲突:

文件 处理
backend/cmd/server/VERSION 取上游 0.2.18(Fork 沿用上游编号)
frontend/package.json 并集:保留 Fork 的 nanoid 版本钉死,dompurify 取上游 3.4.17
frontend/pnpm-lock.yaml 同步上述 overrides,并去掉重复的 follow-redirects 键

Fork 自有实现(ProxyLane / ExcelBPS / PrismBrowser / DeepSeek 原生压缩 / GroupRoutes /
cyber 严格身份 / webSearchCalls 保护)全部保留,本次均未与上游改动区域重叠。

验证

  • 本地校验(Linux,Go 1.27.3 / Node 22):
    • 后端:go build ./...、go vet ./...、gofmt -l 全部通过;go test -tags=unit ./... 全绿
    • 前端:vue-tsc --noEmit 0 错误、eslint . 0 problem、25 个关键 vitest 用例全通过
  • 工作树检查:无残留冲突标记

升级说明

  • 升级方式:管理后台左上角「检查更新」一键升级;或
    curl -sSL https://raw.githubusercontent.com/ziyue67/sub2api/v0.2.18/deploy/install.sh | sudo bash -s -- upgrade
  • 回滚方式:install.sh rollback <version>
  • Docker:docker pull ghcr.io/ziyue67/sub2api:0.2.18
  • 镜像只提供 linux/amd64 单架构,标签 0.2.18 / 0.2.18-amd64 / latest
  • 数据库迁移:本版本新增 246_enable_gemini_image_generation_groups.sql;升级前请备份数据库
  • 安装脚本与在线更新服务的默认仓库为 ziyue67/sub2api

Fork 自有功能

  • Codex 292 门票(x-codex-turn-state)打票与注入、上游剩余额度探测、账号代理车道
  • 管理员请求采集、凭证守护、账号质量运维、Excel / BPS 协议
  • Mihomo 托管 / 动态代理区域、Pelican 定时演练、图片创作 / 画布 / Studio Bridge
  • 邮件广播、模型广场、Claude 重置额度查询、网站工单、账号运维告警、受控渠道实验
  • 发布流水线:双 registry 推送;latest 只由 Release 写;二进制归档停发

Docker 镜像(ziyue67/sub2api)

ziyue67/sub2api:latest
ziyue67/sub2api:0.2.18
ghcr.io/ziyue67/sub2api:latest
ghcr.io/ziyue67/sub2api:0.2.18

拉取示例:

docker pull ziyue67/sub2api:0.2.18
docker pull ghcr.io/ziyue67/sub2api:0.2.18

文档

Sub2API 0.2.17

Choose a tag to compare

@github-actions github-actions released this 16 Oct 12:43
73e0766

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

Important

本版本为 0.2.17:在完整保留 Fork 自有功能的前提下追平上游 Wei-Shaw/sub2api 的 main
(v0.2.17,Antigravity Gemini 4 Argon + 支付链路加固),版本号沿用上游编号 0.2.17。
latest 与 0.2.17 均指向本版本。

0.2.17 大于此前的 0.2.16 / 0.2.15 / 0.2.14,应用内「检查更新」可正常提示升级。

Note

本次为 0.2.17(2026-10-16):在 0.2.16 的基础上,合并上游 main 的 48 个提交
(4d9ac3e48 → b0a02a330)。发布产物为 Docker 镜像(GHCR + Docker Hub 双 registry),
Release 零附件。

移植来源

  • 来源一:上游 Wei-Shaw/sub2api 分支 main
    • 来源提交:b0a02a330(v0.2.17,2026-10-16);上次移植基准 4d9ac3e48
    • 本次增量:48 个提交(含合并提交),153 个文件(+7035 / −808)
  • 新增迁移:无
  • 版本号:backend/cmd/server/VERSION 为 0.2.17

上游增量(v0.2.17)

Antigravity / Gemini

  • 支持 Gemini 4 Argon(含 low/medium/high 档位)与准确的上游模型目录;补齐 Argon 计费
  • 保留 tool_result 图片、原生 Gemini functionCall 与 thoughtSignature,以及 composite /v1beta 路由
  • 保留旧默认透传,Claude 5.5 tier ID 按基础价计费
  • Gemini 兼容入口转发思考档位并流式返回思考摘要
  • Vertex 共享容量不足的 429 不再冷却账号,改为同号退避重试;服务账号已不存在时账号置为 error 并换号
  • 每个上游错误响应只检查一次错误策略

网关与协议

  • 拒绝含 OpenAI 网关 OAuth 的 composite 歧义路由,防止凭据误入 Anthropic 管线
  • 网关照 Anthropic 协议的 base URL 生效
  • Responses 对象一律带 created_at(修复 grok-build 反序列化失败)
  • 结构化输入最小输出 token 下限可配置(gateway.min_output_tokens,最小 16,默认 128)
  • 智谱 GLM Coding Plan 5h / weekly 用量窗口修正
  • 模型退役判定改在公开别名投影之后评估;GPT-5.5 在 ChatGPT 上游按退役处理

OpenAI / Codex

  • /v1/messages 对 OpenAI API Key 账号模拟 web_search;OAuth 账号排除该模拟
  • Codex 导入按 workspace 隔离

支付

  • EasyPay:下单查询与到账前确认通知修复
  • 支付宝:退款状态查询、不支持订单类型的关闭、待处理退款原子收尾、退款查询错误按待处理处理
  • Stripe:client secret 从本地订单快照读取
  • 订单类型校验,待处理期间保留退款扣减

前端

  • 恢复内联账号筛选(revert #7853)

Fork 侧保留与合并处理(14 个冲突文件)

文件 处理
service/account.go 上游把 IsModelSupported 拆成 isModelMappingSupported;保留 Fork 的 Excel/BPS 与 Astra 凭据边界前置守卫,再委托上游的 supportsOpenAIRequestModel
service/openai_models_list.go 上游把投影拆成两层;保留 Fork 的分组感知实现(projectAccountModelAliases),出口接上游的退役模型过滤
service/gateway_service.go 保留 Fork 的 groupID 补全 + 采纳上游的退役模型过滤与空目录语义
service/openai_codex_models_service.go 保留 Fork 的 BPS 能力限制(catalog),叠加上游的退役模型过滤
service/openai_ws_forwarder_support.go 保留 Fork 的 IsModelSupportedInGroup(同时校验分组约束),不降级为仅账号判定
handler/admin/account_codex_import.go 保留 Fork 的 client/workspace 身份作用域,与上游的 composite 身份键共存
service/openai_gateway_passthrough.go 超时分支的 buildOpenAIResponseFailedSSE 补上上游新增的 createdAt 参数
apicompat/chatcompletions_to_responses.go 采纳上游的 WithMinOutputTokens 变体,并保留 Fork 的 EffectiveReasoningEffort() 语义
config/config.go、deploy/config.example.yaml 并集:Fork 的 upstream_routing / Prism / Codex Pin 与上游的 min_output_tokens
frontend/.../AccountTableFilters.vue 保留 Fork 的无障碍 aria-label(上游本次是 revert),layout 取上游的响应式改进
composables/useModelWhitelist.ts 取上游超集(新增 Gemini 4 Argon 系列)
其余(routes 测试、AccountTableFilters.spec.ts) 保留 Fork 侧;上游 revert 删掉的组件测试按仓库现状保留

验证

  • 本地校验(Linux,Go 1.27.2 / Node 22):
    • 后端:go build ./...、go vet ./...、gofmt -l 全部通过;go test -tags=unit ./... 全绿
    • 前端:vue-tsc --noEmit 0 错误、eslint . --max-warnings 0 0 problem
  • 工作树检查:无残留冲突标记
  • 未包含:backend/config/config.yaml(上游/ranxi 误提交的线上部署配置,含明文凭据,本仓无任何引用)

升级说明

  • 升级方式:管理后台左上角「检查更新」一键升级;或
    curl -sSL https://raw.githubusercontent.com/ziyue67/sub2api/v0.2.17/deploy/install.sh | sudo bash -s -- upgrade
  • 回滚方式:install.sh rollback <version>
  • Docker:docker pull ghcr.io/ziyue67/sub2api:0.2.17
  • 镜像只提供 linux/amd64 单架构,标签 0.2.17 / 0.2.17-amd64 / latest
  • 数据库迁移:本版本不含新增迁移;升级前请备份数据库
  • 安装脚本与在线更新服务的默认仓库为 ziyue67/sub2api

Fork 自有功能

  • Codex 292 门票(x-codex-turn-state)打票与注入、上游剩余额度探测、账号代理车道
  • 管理员请求采集、凭证守护、账号质量运维、Excel / BPS 协议
  • Mihomo 托管 / 动态代理区域、Pelican 定时演练、图片创作 / 画布 / Studio Bridge
  • 邮件广播、模型广场、Claude 重置额度查询、网站工单、账号运维告警、受控渠道实验
  • 发布流水线:双 registry 推送;latest 只由 Release 写;二进制归档停发

Docker 镜像(ziyue67/sub2api)

ziyue67/sub2api:latest
ziyue67/sub2api:0.2.17
ghcr.io/ziyue67/sub2api:latest
ghcr.io/ziyue67/sub2api:0.2.17

拉取示例:

docker pull ziyue67/sub2api:0.2.17
docker pull ghcr.io/ziyue67/sub2api:0.2.17

文档

Sub2API 0.2.16

Choose a tag to compare

@github-actions github-actions released this 13 Oct 12:24
00eebff

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

Important

本版本为 0.2.16:在完整保留 Fork 自有功能的前提下追平上游 Wei-Shaw/sub2api 的 main
(v0.2.16,Claude Haiku 5.5 与 Gemini 显式缓存),版本号沿用上游编号 0.2.16。
latest 与 0.2.16 均指向本版本。

0.2.16 大于此前的 0.2.15 / 0.2.14 / 0.2.13,应用内「检查更新」可正常提示升级。

Note

本次为 0.2.16(2026-10-13):在 0.2.15 的基础上,合并上游 main 的 47 个提交
(3a6fd1c9d → 4d9ac3e48)。发布产物为 Docker 镜像(GHCR + Docker Hub 双 registry),
Release 零附件。

移植来源

  • 来源一:上游 Wei-Shaw/sub2api 分支 main
    • 来源提交:4d9ac3e48(v0.2.16,2026-10-13);上次移植基准 3a6fd1c9d
    • 本次增量:47 个提交(含合并提交),213 个文件(+13886 / −727)
  • 新增迁移:无
  • 版本号:backend/cmd/server/VERSION 为 0.2.16

上游增量(v0.2.16)

Gemini 显式缓存(本次最大特性)

  • 支持显式上下文缓存:覆盖 AI Studio、Vertex 与自建网关上游(cachedContents)
  • 缓存存储价内置官方价,并按 Pro / Flash 系列兜底;3.6 Flash 兜底价改为官方优惠价
  • 缓存修改串行化、失败回滚;确定金额费用按 Key / 订阅预留
  • 缓存错误透传收窄到上游网关账号,延长沿用创建时的计费口径
  • 恢复流程区分「账号已删除」与「暂不支持缓存」;上游必已过期后作废意图
  • 引用缓存不存在的 403 不再停用账号并换号

Gemini / Vertex 账号能力

  • Vertex 账号支持 API Key 认证;Vertex 服务账号支持同步上游模型列表
  • 适配 AI Studio AQ. 格式 Key
  • 模型列表与模型详情接口支持 Agent Platform (Vertex) 账号
  • 第三方上游 API Key 与 Vertex 不再套用 AI Studio 等级和模拟配额
  • 界面显示名统一为 Agent Platform (Vertex)

网关与计费

  • 接入 Claude Haiku 5.5,并接入 Responses 桥接(含采样边界与默认模型配置修正)
  • Responses 到 chat 的兜底保留 Responses 语义;结构化输入回退增加不安全重试护栏
  • Antigravity 图片模型限流隔离
  • 账号计数、Bedrock 与重试耗尽入口把上游模型交给错误处理
  • 显式模型级 401 规则在网关故障转移入口生效
  • 识别国际版 coding 端点(配额)
  • Ops:Gemini 原生路由的网关本地错误按错误类型归类

其他

  • 分组名称与描述支持多语言(广场 Vary 保留 Origin,译文语言代码统一大小写)
  • 账号同步上游模型失败时显示后端返回的错误原因
  • 依赖安全更新:SheetJS、Vue 与 source-map 补丁
  • 前端:模型白名单回归用例纳入 CI

Fork 侧保留与合并处理

本次合并共 24 个冲突文件,全部按「保留 Fork 行为 + 采纳上游新增」处理:

  • ent 生成代码:ent/migrate/schema.go、ent/runtime/runtime.go 由 go generate ./ent
    按合并后的 schema 重新生成(groups.i18n 字段加入后列索引整体位移,手改极易静默错位)。
    生成结果与生成器幂等,未引入仓库既有形态之外的新文件。
  • wire_gen.go:provideCleanup 实参按函数形参顺序取两侧并集(57 个实参),
    补入上游新增的 geminiCachedContentService。
  • gateway_usage_billing.go:采纳上游的 recordUsageMultipliers / recordUsageBillingModel
    辅助函数,并把 Fork 的账号级分组倍率(account.UserGroupRateMultiplier())、
    宿主工具基准倍率 baseMultiplier 与 withModelBillingConfig 策略快照恢复进去。
  • gemini_messages_compat_service.go:Fork 的 SelectAccountForAIStudioEndpoints /
    ForwardAIStudioGET 已被上游的 SelectAccountForModelsEndpoints / ForwardListModels
    取代,删除重复实现;并把 Fork 的 projectGeminiLaneSelection(代理车道投影)接到上游选号函数上,
    车道语义不丢。gemini_v1beta_handler.go 保留 Fork 的 API Key 并发槽保护。
  • openai_account_runtime_block_fastpath.go:保留 Fork 直调策略主体的写法(调用方已重置
    401 连击),同时采纳上游的临时不可调度作用范围(scope)判定。
  • openai_gateway_responses_chat_fallback.go:保留 Fork 的 DeepSeek 原生 compaction
    改写分支,startTime 跟随上游改为形参传入。
  • scheduler_cache.go:候选投影键取并集(Fork 的 model_mapping_mode + 上游 Gemini 显式缓存键)。
  • available_channel_handler.go:userAvailableGroup 采纳上游的 i18n 字段,
    toUserAvailableGroup 同步带上,保证分组文案本地化不丢。
  • model_plaza_handler.go:上游的语言本地化包装与 Fork 的用户禁用模型过滤合并为
    toLocalizedModelPlazaGroups(..., deniedModels)。
  • usage_handler.go:观察者分支保留 Fork 的管理端 DTO,并补上 Localized(新增
    AdminUsageLog.Localized),满足「用户侧分组 DTO 必须本地化」的上游守卫测试。
  • 其余(admin_group.go、dto/types.go、dto/mappers.go、account_test_service.go、
    repository/wire.go、前端 i18n 与各 spec)均为并集。

验证

  • 本地校验(Linux,Go 1.27.2 / Node 22):
    • 后端:go build ./...、go vet ./...、gofmt -l 全部通过;
      go test -tags=unit ./... 全绿
    • 前端:vue-tsc --noEmit 0 错误、eslint . --max-warnings 0 0 problem、
      关键清单 vitest 80 个文件 / 1390 个用例全部通过
  • 工作树检查:无残留冲突标记,git status 干净
  • 未包含:backend/config/config.yaml(上游/ranxi 误提交的线上部署配置,含明文凭据,
    本仓无任何引用,持续不引入)

升级说明

  • 升级方式:管理后台左上角「检查更新」一键升级;或
    curl -sSL https://raw.githubusercontent.com/ziyue67/sub2api/v0.2.16/deploy/install.sh | sudo bash -s -- upgrade
  • 回滚方式:install.sh rollback <version>
  • Docker:docker pull ghcr.io/ziyue67/sub2api:0.2.16
  • 镜像只提供 linux/amd64 单架构,标签 0.2.16 / 0.2.16-amd64 / latest
  • 数据库迁移:本版本不含新增迁移;升级前请备份数据库
  • 安装脚本与在线更新服务的默认仓库为 ziyue67/sub2api

Fork 自有功能

  • Codex 292 门票(x-codex-turn-state)打票与注入、上游剩余额度探测、账号代理车道
  • 管理员请求采集、凭证守护、账号质量运维、Excel / BPS 协议
  • Mihomo 托管 / 动态代理区域、Pelican 定时演练、图片创作 / 画布 / Studio Bridge
  • 邮件广播、模型广场、Claude 重置额度查询、网站工单、账号运维告警、受控渠道实验
  • 发布流水线:双 registry 推送;latest 只由 Release 写;二进制归档停发

Docker 镜像(ziyue67/sub2api)

ziyue67/sub2api:latest
ziyue67/sub2api:0.2.16
ghcr.io/ziyue67/sub2api:latest
ghcr.io/ziyue67/sub2api:0.2.16

拉取示例:

docker pull ziyue67/sub2api:0.2.16
docker pull ghcr.io/ziyue67/sub2api:0.2.16

文档

Sub2API 0.2.15

Choose a tag to compare

@github-actions github-actions released this 09 Oct 11:11
2845970

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

Important

本版本为 0.2.15:在完整保留 Fork 自有功能的前提下同时追平两条主线 ——
上游 Wei-Shaw/sub2api 的 main(v0.2.15,provider profile 平台清单重构)与
ranxi2001/sub2api 的 production(批次十四),版本号沿用上游编号 0.2.15。
latest 与 0.2.15 均指向本版本。

0.2.15 大于此前的 0.2.14 / 0.2.13 / 0.2.12,应用内「检查更新」可正常提示升级。

Note

本次为 0.2.15(2026-10-09):在 0.2.14 的基础上,合并上游 main 的 20 个非合并提交
(5fc0e486c → 3a6fd1c9d)与 ranxi 批次十四(17c88b012 → 11be58950,v2.10.1)。
发布产物为 Docker 镜像(GHCR + Docker Hub 双 registry),Release 零附件。

移植来源

  • 来源一:上游 Wei-Shaw/sub2api 分支 main
    • 来源提交:3a6fd1c9d(v0.2.15,2026-10-09);上次移植基准 5fc0e486c
    • 本次增量:20 个非合并提交,140 个文件(+13575 / −1054)
  • 来源二:ranxi2001/sub2api 分支 production
    • 批次十四:11be58950(ranxi release v2.10.1,2026-10-09);上次移植基准 17c88b012
    • 本次增量:5 个非合并提交,19 个文件(+1019 / −4)
  • 新增迁移:无
  • 版本号:backend/cmd/server/VERSION 为 0.2.15

上游增量(v0.2.15,平台清单重构)

这是上游一次较大的架构收敛:把分散在各处的平台判断收敛为「平台清单 + provider profile」。

  • 平台清单(internal/domain/platforms.go):平台白名单由数据库约束改为应用层校验;
    后端平台列表、多协议供应商默认端点表、转发与探测判断统一改由 profile 驱动
  • 协议分流收敛:三个入站入口(/v1/responses、/v1/chat/completions、/v1/messages)的
    上游协议判定合并为 resolveUpstreamProtocol 单一入口
  • 新增平台:接入 Cline 与 Command Code
  • 安全:Go 升级到 1.27.2、golang.org/x/net 升到 0.60.0(修复安全扫描)
  • OpenAI:Responses Lite 与 OAuth 历史回放时声明 web_search;Claude 计费与钱包冷却修复;
    模型目录缓存隔离;/v1/responses 转 Anthropic 时统一以去空白的请求模型兜底映射
  • 前端:模型同步入口按平台能力展示;平台列表与多协议账号表单改由平台清单驱动

ranxi 批次十四增量(v2.10.1)

  • Excel BPS OAuth 登录复用密码 TOTP worker:BPS OAuth 账号的登录流程复用既有密码 TOTP worker
  • OpenAI 搜索历史兼容:OAuth 历史回放 web_search_call 时声明 web_search
  • 修复搜索历史兼容代码的类型断言 lint 问题
  • 文档:说明旧 Codex 凭据转换边界与 Excel 重新授权方式

本次合并的冲突处理(16 个文件)

  • backend/go.mod:采纳上游依赖(含 x/net 0.60.0 安全修复),go mod tidy 收敛
  • .github/workflows/release.yml:保留 Fork 发布流水线,Go 版本校验跟上 1.27.2
  • openai_gateway_chat_completions.go / openai_gateway_messages.go:采纳上游统一分流
    (Fork 原有的 OpenCode Go 硬编码分流已被 resolveUpstreamProtocolFor + profile 覆盖)
  • openai_gateway_forward.go:保留 Fork 的 DeepSeek native-compaction 快捷判定,其余采纳上游
  • composite_platform.go、account_test_service.go、credentialsBuilder.ts、
    EditAccountModal.vue、SettingsView.vue、Makefile 与各 spec:并集

⚠️ 修复:平台重构对 Fork 协议覆盖的两处回归

上游把协议判定收敛到 resolveUpstreamProtocol 时,未包含 Fork(#46) 的
「OpenAI API Key 可显式配置 api_protocol + api_base_urls(分协议端点)」能力,
导致 12 处真实路由回归(Chat Completions 入站被错误改道到 Responses)。
本次修复:

  • upstream_protocol_routing.go 的 adaptive 分支补回 Fork 语义:
    显式 chat_completions → CC;CC 入站 → 同协议直通;/v1/messages 入站 →
    配了原生 Anthropic 端点则直通,否则转 CC;其余按 Responses 端点是否存在决定
    (与 shouldForwardOpenAIResponsesViaChatCompletions 同口径)
  • nativeAnthropicMessagesURL:Fork 的 OpenAI 协议账号同样走版本感知拼接,
    避免 base 自带 /v1 时拼出 /v1/messages/v1/messages

修复后以「合并前 main」为基准逐用例比对 63600 个路由矩阵用例:OpenAI 平台
0 处行为差异;其余仅剩 768 处错误文案差异(无上游请求、无 URL/协议变化)。
上游新增的路由基准守卫改为 Fork 感知:只放行 OpenCode Go(按模型分流)与
OpenAI(Fork #46)两类,且强制 transport 集合、状态码、panic、客户端错误码一致,
数量仍精确断言,一旦扩张即失败。

Fork 自有功能(完整保留)

  • Codex 292 门票(x-codex-turn-state)打票与注入、上游剩余额度探测、账号代理车道
  • 管理员请求采集、凭证守护、账号质量运维、Excel / BPS 协议
  • Mihomo 托管 / 动态代理区域、Pelican 定时演练、图片创作 / 画布 / Studio Bridge
  • 邮件广播、模型广场、Claude 重置额度查询、网站工单、账号运维告警、受控渠道实验
  • 发布流水线:双 registry 推送;latest 只由 Release 写;二进制归档停发

升级说明

  • 升级方式:管理后台左上角「检查更新」一键升级;或
    curl -sSL https://raw.githubusercontent.com/ziyue67/sub2api/v0.2.15/deploy/install.sh | sudo bash -s -- upgrade
  • 回滚方式:install.sh rollback <version>
  • Docker:docker pull ghcr.io/ziyue67/sub2api:0.2.15
  • 镜像只提供 linux/amd64 单架构,标签 0.2.15 / 0.2.15-amd64 / latest
  • 数据库迁移:本版本不含新增迁移;升级前请备份数据库
  • 安装脚本与在线更新服务的默认仓库为 ziyue67/sub2api

验证

  • 本地校验(Linux,Go 1.27.2 / Node 22 / pnpm 9.15.9):
    • 后端:go build ./...、gofmt -l、go test -tags=unit ./... 全部通过
    • 前端:pnpm install --frozen-lockfile 通过、vue-tsc --noEmit 通过、eslint . 0 error / 0 warning、
      关键清单 vitest 76 个文件 / 1322 个用例全部通过
    • 路由一致性:以合并前 main 为基准,63600 用例逐条比对,OpenAI 平台零行为差异
  • 工作树检查:无残留冲突标记,git status 干净

📥 Installation

Docker:

# Docker Hub
docker pull ziyue67/sub2api:0.2.15

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

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

📚 Documentation

Sub2API 0.2.14

Choose a tag to compare

@github-actions github-actions released this 08 Oct 13:31
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

Sub2API 0.2.13

Choose a tag to compare

@github-actions github-actions released this 02 Oct 15:11
f710ef7

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

Important

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

版本号与 tag 均沿用上游编号 0.2.13(GoReleaser 强制语义化版本;应用内 parseVersion 只取前三段)。
0.2.13 大于此前的 0.2.12 / 0.2.11 / 0.2.91 / 0.2.10,应用内「检查更新」可正常提示升级。
上一个版本 0.2.12 已先行发布(docs/releases/v0.2.12.md),本版本在其基础上并入 ranxi 批次十与上游 v0.2.13。

Note

本次为 0.2.13(2026-10-02):新增 Prism OAuth 浏览器桥接、API Key 并发限制与排队生命周期、
鹈鹕测智结果 API,以及上游的 TypeSafe 计费探测修复与 API Key 删除后的用量结算修复。
发布产物为 Docker 镜像(GHCR + Docker Hub 双 registry),Release 零附件(不附带二进制包与重登运行包)。

移植来源

  • 来源一:上游 Wei-Shaw/sub2api 分支 main
    • 来源提交:b8dece900(v0.2.13,2026-10-02);上次移植基准 458b92abd(v0.2.12,本 Fork PR #95)
    • 本次增量(458b92abd..b8dece900):10 个提交(7 个非合并),7 个文件(+249 / −4)
  • 来源二:ranxi2001/sub2api 分支 production(批次十)
    • 来源提交:bf9405e4a(PR Wei-Shaw#253 – Wei-Shaw#268,ranxi release v2.9.6 之后,2026-10-02);上次移植基准 c2e3e098f(批次九,本 Fork PR #93)
    • 本次增量(c2e3e098f..bf9405e4a):48 个提交(35 个非合并,含 13 个合并提交),257 个文件(+20350 / −837)
  • 本次两条主线合入后,本 Fork 相对 main 净增:215 个文件(+19091 / −522)
  • 新增迁移:237_add_api_key_concurrency_limit.sql(api_keys.concurrency_limit,启动时自动执行)
  • 版本号:backend/cmd/server/VERSION 为 0.2.13(与上游 v0.2.13 同名)

上游 v0.2.13 增量(本次新增)

  • TypeSafe 账号计费探测修复:默认开启上游计费自动探测会导致 TypeSafe API Key 账号创建返回 400,现按平台放行(fix(billing): allow upstream billing probe for TypeSafe API-key accounts)
  • API Key 删除后的用量结算:计费完成前 Key 被删除时仍正常结算用量,避免漏账(fix(billing): settle usage when the API key is deleted before billing completes)
  • 仓库安全策略:新增 .github/SECURITY.md(私有漏洞报告,含 dev@sub2api.org 兜底邮箱)

ranxi 批次十增量(c2e3e098f..bf9405e4a,PR Wei-Shaw#253 – Wei-Shaw#268,本次新增)

  • Prism OAuth 浏览器桥接(Wei-Shaw#260 / Wei-Shaw#264 / Wei-Shaw#265 / Wei-Shaw#267):新增 prism-adapter/(Python 浏览器适配器 + systemd 单元 + 冒烟脚本)
    与 Go 侧 backend/internal/pkg/prismbridge/、openai_prism_browser.go;
    支持账号测试路由、并发 HTTP 连接、服务端有界会话缓存;WS 会话不落在 Prism 账号上并给出适配器错误说明;
    未启动浏览器时释放账号;OAuth turn 生命周期加护栏。附 docs/PRISM_BRIDGE_RESEARCH_CN.md、docs/prism-oauth-p1-smoke.md 与截图
  • API Key 并发限制与有界准入生命周期(Wei-Shaw#263):Key 级 concurrency_limit 与等待队列(ZSET 等待 + 阶段结束标记 + Live 精确交接栅栏),
    统计口径按批分页且串行读取超过 100 个 ID 的页面;新增迁移 237_add_api_key_concurrency_limit.sql;
    前端密钥页新增并发列、/keys/concurrency 接口与策略只读展示
  • 鹈鹕测智结果 API(Wei-Shaw#268):API Key 可读取测智结果(含缓存类型断言修复、结果缓存)
  • Codex 目录与套餐展示(Wei-Shaw#253 等):生成的模型目录与 API Key 客户端保持兼容,补套餐展示与目录截图
  • Grok CLI 版本提升至 1.0.44(Wei-Shaw#258):对齐官方发布节奏(本 Fork 沿用上游抓包修正的 1.0.46 身份头与 grok-pager 标识)
  • 鹈鹕面板明文 HTTP 预览(Wei-Shaw#262 / Wei-Shaw#259):面板经明文 HTTP 提供时仍渲染预览;WS 准入用例适配
  • 其它:fix(ws): isolate downstream write state across response turns(下游写入状态按 turn 隔离)、
    perf: pipeline API key queue statistics and verify upgrade paths、多项 lint / 测试适配

Fork 自有功能(完整保留)

  • Codex 292 门票(x-codex-turn-state)打票与注入:独立代理后台打票、住宅 IP 请求覆盖该头,含后台开关、门票状态展示与缺票拦截
  • 上游剩余额度探测:账号页可查询上游余额与用量窗口
  • 账号代理车道(proxy lanes):车道级调度、车道粘性绑定与准入并发控制;WS turn 准入沿用车道语义
  • 管理员请求采集:按用户 / 上游账户 / 入口分组创建采集任务,默认关闭
  • 凭证守护:令牌巡检、自动重登与错误态自愈(默认关闭),重登运行包来源可配置
  • 账号质量运维、Excel / BPS 协议、Mihomo 托管 / 动态代理区域、Pelican 定时演练
  • 图片创作 / 画布 / Studio Bridge、邮件广播、模型广场(model-square) 等
  • 发布流水线:双 registry(GHCR + Docker Hub)推送;Release 零附件

升级说明

  • 升级方式:管理后台左上角「检查更新」可一键升级;也可在服务器执行
    curl -sSL https://raw.githubusercontent.com/ziyue67/sub2api/v0.2.13/deploy/install.sh | sudo bash -s -- upgrade。
  • 回滚方式:install.sh rollback <version>。
  • 也可以使用 Docker 镜像部署:docker pull ghcr.io/ziyue67/sub2api:0.2.13,具体见 部署文档。
  • 镜像只提供 linux/amd64 单架构,标签为 0.2.13 / 0.2.13-amd64 / latest(同一镜像)。
  • Release 零附件:不附带 sub2api_*.tar.gz / *.zip / checksums.txt;重登运行包仅在手动勾选 publish_reauth_runtime 时上传。
  • 数据库迁移:新增 237_add_api_key_concurrency_limit.sql(api_keys.concurrency_limit bigint not null default 0,含非负约束),启动时自动执行。
  • Prism 桥接为可选部署:prism-adapter/ 需自行部署(README + systemd 单元),未部署时不启用该路由。
  • 请求采集与凭证守护默认关闭,需在「系统设置 > 功能开关」中显式启用。
  • 安装脚本与在线更新服务的默认仓库为 ziyue67/sub2api(backend/internal/service/update_service.go、deploy/install.sh)。

验证

  • 合并冲突处理(本次两条主线共 26 个文件):
    • 上游 v0.2.13(faec40680):无冲突(git merge-tree 干净)。
    • ranxi 批次十(9105f98a0):人工处理 26 个文件,原则为「Fork 特性优先、两侧语义取并集」:
      • backend/ent/mutation.go:APIKeyMutation 字段取并集(保留 group_routes,并入 concurrency_limit)
      • backend/internal/service/api_key_service.go、internal/handler/api_key_handler.go、internal/repository/api_key_repo.go、
        internal/service/api_key_auth_cache.go、api_key_auth_cache_impl.go:请求结构 / 快照 / 行映射取并集
        (Fork 的多分组路由 GroupRoutes + ranxi 的 ConcurrencyLimit),错误变量保留 Fork 的分组路由错误
      • internal/service/concurrency_service.go、gateway_service.go:AcquireResult / AccountSelectionResult 取并集
        (Fork 的 MaxConcurrency* / AggregateMaxConcurrency* / Lane + ranxi 的 RequestID / AccountRequestID)
      • internal/service/openai_gateway_scheduling.go:newSelectionResult 签名取并集(新增 requestID 形参并写入结果),
        保留 Fork 的 finalizeOpenAISelectionResult 车道语义;admitOpenAIWSTurnForPricing 的账号槽位改用
        TryAcquireAccountOrLaneSlot + 聚合上限参数(只传账号上限会让车道被账号桶限流)
      • internal/handler/openai_gateway_handler.go:BeforeTurn 保留 Fork 的每 turn 定价刷新 + 车道上限重算,
        同时叠加 ranxi 的 Key 排队准入与 turn == 1 提前返回;并发释放统一走 wrapReleaseOnDone
      • internal/server/middleware/api_key_auth.go:skipBilling 取并集(Fork 的 /v1/usage + 模型列表读 + 异步图片轮询,
        ranxi 的 Pelican 展示位读与过期校验)
      • internal/pkg/xai/*、internal/repository/http_upstream_test.go、internal/service/grok_upstream_headers_test.go:
        取 HEAD(上游依据官方交互式 CLI 抓包修正的 1.0.46 身份头 + grok-pager 标识),ranxi 的 1.0.44 / grok-shell 为更旧口径
      • 前端 api/keys.ts、types/index.ts、views/user/KeysView.vue、components/keys/__tests__/UseKeyModal.spec.ts、
        views/user/__tests__/KeysView.spec.ts:取并集(并发列 / 并发快照接口 + Fork 的多分组路由、分页断言与排序用例)
      • README.md:保留 ranxi 重写的正文并补回 Fork 的技术栈表
    • 合并后修正 2 处(编译 / 运行期才暴露):
      • backend/ent/runtime/runtime.go:ranxi 生成的字段索引不含 Fork 的 group_routes,apikeyFields 索引整体错位,
        init() 在 nil 上断言 panic(所有依赖 ent 运行期的包启动即失败);按当前 schema 的 Fields() 顺序重排 9 个索引,
        并校验全部 41 个 schema 的索引映射无错位
      • backend/internal/handler/gateway_systemone.go:上游新增的 System One 入口调用本 Fork 的用户槽位签名(需 apiKeyID / keyLimit)
      • backend/internal/handler/openai_gateway_handler_test.go:被拒 turn 的到达判定改为按 response.create 计数
        (本 Fork 中继会转发 session.update 并收到上游 ack,用通道帧数会误判)
  • 校验口径:本版本的测试以 CI(GitHub Actions)为准:shell、test(make test-unit + make test-integration)、
    frontend(vue-tsc + 关键 vitest)、golangci-lint、release-helpers、backend-security、frontend-security。
    本地已完成 go build ./...、go vet -tags=unit ./... 与冲突文件的 gofmt 检查。
  • 工作树检查:无残留冲突标记(<<<<<<< / >>>>>>>)。
  • 发布配置校验:Docker 镜像标签为 0.2.13 / 0.2.13-amd64 / latest(GHCR 与 Docker Hub 同一镜像);
    发布说明按 docs/releases/v0.2.13.md(与 tag 同名)由 release.yml / sync-fork-release.yml / backfill-release.yml 回写。

Docker 镜像(ziyue67/sub2api)

ziyue67/sub2api:latest
ziyue67/sub2api:0.2.13
ghcr.io/ziyue67/sub2api:latest
ghcr.io/ziyue67/sub2api:0.2.13

拉取示例:

docker pull ziyue67/sub2api:0.2.13
docker pull ghcr.io/ziyue67/sub2api:0.2.13

文档

Sub2API 0.2.12

Choose a tag to compare

@github-actions github-actions released this 02 Oct 13:30
1754228

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)
  • 充值优惠阶梯(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

文档

Sub2API 0.2.11

Choose a tag to compare

@github-actions github-actions released this 01 Oct 03:52
18208cc

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

Important

本版本为 0.2.11:在完整保留 Fork 自有功能的前提下,同时追平两条主线——
上游 Wei-Shaw/sub2api 的 main(v0.2.11)与 ranxi2001/sub2api 的 production(v2.9.6,含 v2.9.0 – v2.9.5 各批次)。
latest 与 0.2.11 均指向本版本。

版本号沿用三段式 0.2.11(GoReleaser 强制语义化版本,四段号会被拒绝;应用内更新检查的 parseVersion 只取前三段)。
本版本由 0.2.91 改名而来(tag v0.2.91 已于 2026-09-28 发布,仅含批次一 – 三),现编号 0.2.11 并并入后续批次四 – 八与本次的两条主线追平;
旧 tag v0.2.91 与其说明文件 docs/releases/v0.2.91.md 均保留为历史发布,不再递增。

注意 0.2.11 在数值上小于 0.2.91,应用内「检查更新」的版本比较可能把本版本判为更旧;如需正常提示升级,请改用 0.2.101 一类的更高编号。

Note

本次为 0.2.11(2026-10-01 追平,2026-09-29 首次发布):在 0.2.91(批次一 – 三)基础上并入批次四 – 八,
并在本次继续追平上游 Wei-Shaw/sub2api main(v0.2.11)与 ranxi production 的 faf58e440..c2e3e098f(含 Wei-Shaw#218 – Wei-Shaw#251,覆盖 ranxi v2.9.4 / v2.9.5 / v2.9.6),
发布产物为 Docker 镜像(GHCR + Docker Hub 双 registry)。
本次追平 ranxi production 分八批:
批次一为 v2.9.0(tag 030c1fd77)及其后合并的 Wei-Shaw#181 – Wei-Shaw#184(已随 v0.2.91 发布);
批次二为 62ac3a5dd..9ee2041d3 的 Wei-Shaw#185 – Wei-Shaw#190;
批次三为 9ee2041d3..425977815 的 Wei-Shaw#191;
批次四为 425977815..468061e08 的 Wei-Shaw#192 – Wei-Shaw#198(ranxi release v2.9.1 之后);
批次五为 7b9fb3332 的 Wei-Shaw#199 – Wei-Shaw#200;
批次六为 7b9fb3332..74d3538a8 的 Wei-Shaw#201 – #206(2026-09-29);
批次七为 74d3538a8..cdab8bbb4 的 Wei-Shaw#207 – Wei-Shaw#209(ranxi release v2.9.2);
批次八为 cdab8bbb4..faf58e440 的 Wei-Shaw#210 – Wei-Shaw#217(ranxi release v2.9.3);批次九为 faf58e440..c2e3e098f 的 Wei-Shaw#218 – Wei-Shaw#251(2026-10-01,ranxi release v2.9.4 – v2.9.6)。
批次二至九均在 0.2.91 发布之后进入 main,本次已一并纳入 0.2.11 / latest 镜像;版本号按本次要求改为 0.2.11,不随 ranxi 的 v2.9.6 而变更。
其中 PR Wei-Shaw#179 是 ranxi 追平上游 Wei-Shaw/sub2api v0.2.9 的同步 PR:该批改动本 Fork 已通过自身 PR #86(f3f9cdd73)先行移植,
且本 Fork 的 WebSocket 转发为自有实现(openai_ws_forwarder_v2.go),故本次未重复引入上游代码,仅保留 Fork 实现与两侧修复的并集。
上游 v0.2.10 已由本 Fork 的 PR #91 移植(docs/releases/v0.2.10.md);上游 v0.2.11 与 ranxi 批次九在本次一并合入。

移植来源

  • 来源仓库(一):上游 Wei-Shaw/sub2api 分支 main
  • 来源提交(一):42bc7f6cf(v0.2.11,2026-09-30);上次移植基准为 a60a29549(v0.2.10,2026-09-29,PR #91)
  • 本次增量(上游 v0.2.11,a60a29549..42bc7f6cf):23 个提交(17 个非合并),90 个文件(+5146 / −296)
  • 来源仓库(二):ranxi2001/sub2api 分支 production
  • 来源提交:c2e3e098f(批次九,PR Wei-Shaw#218 – Wei-Shaw#251,ranxi release v2.9.6,2026-10-01);
    上次为批次八 faf58e440(PR Wei-Shaw#210 – Wei-Shaw#217,ranxi release v2.9.3,2026-09-29)
  • 上次移植基准:62ac3a5dd(批次一,release v2.9.0 及其后合并的 Wei-Shaw#181 – Wei-Shaw#184);
    再上一次为 f24ff9110(release v2.8.20 及其后合并的 Wei-Shaw#160 – Wei-Shaw#164 修复)
  • 本次增量(批次九,faf58e440..c2e3e098f):86 个提交(51 个非合并,含 v2.9.4 / v2.9.5 / v2.9.6 三次版本提交),319 个文件(+13564 / −1853)
  • 本次增量(批次八,cdab8bbb4..faf58e440):20 个提交(13 个非合并),73 个文件(+2361 / −82)
  • 本次增量(批次七,74d3538a8..cdab8bbb4):10 个提交(6 个非合并),61 个文件(+3497 / −205);
    与本 Fork 合并后净增 60 个文件(+3499 / −205)
  • 本次增量(批次六,7b9fb3332..74d3538a8):11 个提交(6 个非合并),88 个文件(+2612 / −165);
    与本 Fork 合并后净增 89 个文件(+2624 / −166)
  • 本次增量(批次五,7b9fb3332):2 个合并提交(1 个非合并),25 个文件(+398 / −27)
  • 本次增量(批次四,425977815..468061e08):19 个提交(12 个非合并),128 个文件(+3879 / −698);
    与本 Fork 合并后净增 126 个文件(+3877 / −698)
  • 本次增量(批次三,9ee2041d3..425977815):2 个提交(1 个非合并),1 个文件(+1 / −1)
  • 批次二增量(62ac3a5dd..9ee2041d3):21 个提交(13 个非合并),158 个文件(+12889 / −297);
    与本 Fork 合并后净增 159 个文件(+12893 / −299)
  • 批次一增量:69 个提交(56 个非合并提交),318 个文件(+17356 / −2102)
    • v2.9.0 部分(f24ff9110..030c1fd77,PR Wei-Shaw#166 – Wei-Shaw#179):59 个提交(50 个非合并),288 个文件(+15591 / −2019)
    • v2.9.0 之后(030c1fd77..62ac3a5dd,PR Wei-Shaw#181 – Wei-Shaw#184):10 个提交(6 个非合并)
  • 补丁等价性核对:git cherry f3f9cdd73 62ac3a5dd 显示 25 个提交为本 Fork 尚无的改动,31 个提交(上游 v0.2.9 主体)已有等价补丁
  • 新增迁移:253_pelican_group_tests.sql(批次一);254_quality_bps_coexist.sql、254_channel_monitor_v2_candy.sql、
    254_openai_oauth_reauth.sql、255_account_token_guard_v2.sql、256_openai_oauth_reauth_proxy_override.sql、
    257_openai_oauth_reauth_proxy_source.sql(批次二,三个 254_ 前缀为 ranxi 并行 PR 各自编号,迁移按文件名排序并以文件名为键,互不覆盖);
    258_quality_observation_scope.sql(批次四,scheduled_test_plans 的账号级唯一索引按 bps / observation / quarantine 三种动作分域);
    259_account_auto_config_events.sql(批次六,自动配置历史事件表);260_quality_rule_templates.sql(批次七,质量运维分组规则模板与已建账户关联表);
    261_pelican_group_test_costs.sql、262_openai_oauth_reauth_engine.sql(批次九,鹈鹕测智 USD 成本与重登引擎选择)
  • 合并基准:上游 Wei-Shaw/sub2api 与 ranxi production 两条主线;本次同时追平上游 v0.2.11 与 ranxi 批次九
  • 版本号:backend/cmd/server/VERSION 为 0.2.11(与上游 v0.2.11 同名;由原 0.2.91 改名而来,本次不再随 ranxi 的 v2.9.6 变更)
  • 本 Fork 分支净增量:批次一两个合并提交合计 215 个文件(+14263 / −1736),分别为 204 个文件(+13507 / −1666)与 40 个文件(+801 / −115);
    批次二合并提交 159 个文件(+12893 / −299);本次两条主线合并(9fc24fd46 + 59a6c673b)共 396 个文件(+18687 / −2146)

v2.9.0 增量(本次新增)

  • Mihomo 节点测试连接与质量检查(Wei-Shaw#166):IP 管理页可直接测试节点连通性并执行质量检查
  • 账号「上游声明」列查询上游余额(Wei-Shaw#169):账号列表的上游声明列支持查询上游余额
  • 鹈鹕(Pelican)测智改为按分组测试(Wei-Shaw#176):改由调度器挑选账号执行,测智配置迁移到智能运维;新增迁移 253_pelican_group_tests.sql
  • 鹈鹕测智展示改为分组横排(Wei-Shaw#171):每个分组一行、最新结果在左,底部滑块拖动查看
  • OpenAI OAuth RPM 控制(Wei-Shaw#173):为 OpenAI OAuth 账号增加每分钟请求数限制配置
  • 质量运维 × BPS 联动(Wei-Shaw#174):账号降智时自动开启 BPS,恢复满血后按次数自动关闭;同时保留 BPS 恢复状态、拦截互相冲突的规则
  • 2FA 登录写入凭证守护(Wei-Shaw#178):2FA 自动登录成功后把凭据写入凭证守护,后续巡检可自愈
  • 账号运维 / 凭证守护页面整宽布局(Wei-Shaw#177):两个运维页面改为整宽,附前后对比截图文档
  • 上游追平 PR(Wei-Shaw#179):ranxi 追平上游 v0.2.9,本 Fork 已先行移植,未新增上游代码

v2.9.0 之后增量(本次新增)

  • BPS 403 自动关停后按小时探测恢复(Wei-Shaw#181):403 自动关停的账号进入小时级探测,恢复成功后自动放行;附带默认值测试与 UI 状态文档
  • 403 恢复探测间隔可配置(Wei-Shaw#183):探测间隔以分钟为单位在界面配置
  • 质量规则批量编辑修正(Wei-Shaw#182):批量编辑时按规则各自账号过滤,并跳过不支持的探测
  • 自动重置卡阈值支持忽略单个窗口(Wei-Shaw#184):单个用量窗口可豁免自动重置卡阈值

批次二增量(62ac3a5dd..9ee2041d3,PR Wei-Shaw#185 – Wei-Shaw#190)

  • 凭证守护 v2 与持久化重登(Wei-Shaw#185):按账号的凭证守护 v2、可持久化的自动重登;worker token 按账号隔离,外部登录失败信息脱敏
  • BPS 与降智质量规则共存(Wei-Shaw#186):BPS 与隔离(quarantine)质量规则允许并存,修正互相冲突的规则合并逻辑
  • 优先调度与 Teams 成本回收(Wei-Shaw#187):新增账号优先级调度;Teams 成本回收
  • 鹈鹕测智历史分页(Wei-Shaw#188):测智历史支持分页(含总数断言),展示卡片紧凑化
  • 渠道监控 v2 分组糖果检查(Wei-Shaw#189):v2 监控卡片新增分组糖果检查;刷新节奏与分组探测间隔对齐(含分组探测健康状态文档)
  • BPS 图片限制策略(Wei-Shaw#190):新增图片限制策略,超限自动压缩并与历史记录对账

批次八增量(cdab8bbb4..faf58e440,PR Wei-Shaw#210 – Wei-Shaw#217,ranxi release v2.9.3)

  • free 账号禁止开启 BPS(Wei-Shaw#210):credentials.plan_type 为 free 的账号禁止开启 Excel BPS(忽略大小写与首尾空格),
    创建 / 编辑 / 批量编辑均拒绝保存,质量规则与 403 自动恢复也会跳过;旧数据保留开关但运行时不走 BPS,附 docs/excel-bps.md 说明
  • 凭证守护重登后刷新套餐(Wei-Shaw#212):重登成功后重新读取套餐并处理 Free 降级,避免降级账号继续按付费能力调度
  • BPS 可见流内容后停止未知工具重生成(Wei-Shaw#213):流中已出现可见内容时不再因 unknown-tool 触发重新生成;同时支持初始路由变更重试
  • 上游探测写入成本倍率(Wei-Shaw#214):上游探测得到的倍率回写已保存账号的成本倍率,新增手动覆盖与紧凑同步开关
    (costMultiplierAutoSync / costMultiplierHint),附 docs/screenshots/account-cost-auto-sync/
  • 余额错误归因区分(Wei-Shaw#215):运维错误日志区分用户侧余额不足与上游侧余额错误,新增 ops/utils/balanceError.ts
  • BPS 生图能力(Wei-Shaw#216 / Wei-Shaw#217):Excel BPS 支持生图模型(gpt-image-2 文生图走 images/generations),单图改图走 BPS,
    并按实测收敛模型与参数

批次七增量(74d3538a8..cdab8bbb4,PR Wei-Shaw#207 – Wei-Shaw#209,ranxi release v2.9.2)

  • BPS 默认值与初始配置两种激活模式(Wei-Shaw#207):新增「仅初始配置」与「默认设置」两种激活模式(excelBPSMode、
    openai_excel_bps_config_mode、useExcelBPSDefaults / ExcelBPSModeSwitches.vue / BPSDefaultsCard.vue),
    单账号与批量编辑共用,附 docs/screenshots/bps-defaults/
  • 质量运维分组规则(Wei-Shaw#208):新建规则支持按账户状态 / 分组筛选,保存为规则模板后由后台定时补建到新匹配的账户;
    凭证守护同时列出由凭证运营托管的账号(含 2FA 导入);新增迁移 260_quality_rule_templates.sql,附 docs/account-auto-config.md 更新
  • OAuth WS → SSE 加速(opt-in)(Wei-Shaw#209):普通 OAuth 账号可显式开启「HTTP SSE 走原生 WS 连接池」,
    握手在 response.create 之前失败时可安全回退 HTTP,首 token 前事件立即刷出;附 docs/openai-ws-sse-acceleration.md 与前后对比截图

批次六增量(7b9fb3332..74d3538a8,PR Wei-Shaw#201 – #206)

  • 账号并发成功计数修正(Wei-Shaw#202):成功计数统计已完成流转,不再受错误日志探测上限(error-log probe limit)截断
  • 质量规则批量删除(Wei-Shaw#203):质量运维支持勾选多条规则后一次性删除
  • BPS 图片容量上限可配置(Wei-Shaw#204):图片容量上限提高并可在设置页配置,超限判定与准入中间件同步放宽
  • 自动配置历史记录(Wei-Shaw#205):新增最近自动配置(OAuth 自动配置)历史查询,新增迁移 259_account_auto_config_events.sql
  • 管理端启用凭证加密(#206):管理后台可直接开启凭证加密,新增凭据加密器(credential_encryptor)与设置组件
    CredentialEncryptionSetup.vue,附 docs/credential-encryption.md

批次五增量(7b9fb3332,PR Wei-Shaw#199 – Wei-Shaw#200)

  • 渠道监控 V2 悬浮采样详情(Wei-Shaw#200):卡片历史条由 span 改为可聚焦 / 可点击的 button,新增悬浮、聚焦、点击弹出的时段采样详情
    (可用率、缓存率、首 Token P50),并补齐 aria-label / aria-describedby;时间轴条携带原始 bucket 指标
    (monitorCards.ts 的 MonitorMatrixBucket[],按 bucket_start 排序,红色截断计数不参与加权、bucket 中位数不与时间窗 P50 混算),
    i18n 新增 cards.bucketDetails / cards.sampleDetails;糖果历史补充「未开启检测」态文案(candy.disabled / candy.disabledHint)。
  • 智能运维布局与导航对齐(Wei-Shaw#199):侧边栏顺序调整(Token 守护 V2 提到 Pelican 测试之前);PelicanTestsView.vue 与 TokenGuardV2View.vue
    的页面容器由 max-width: 1660px; margin: auto 改为 w-full min-w-0 全宽布局;附 docs/screenshots/smart-ops-layout/ 与
    docs/screenshots/channel-monitor-v2-hover/ 前后对比截图。

批次四增量(425977815..468061e08,PR Wei-Shaw#192 – Wei-Shaw#198,ranxi release v2.9.1)

  • 凭证守护错误态自愈恢复(Wei-Shaw#192):恢复错误态账号的凭证守护巡检自愈;2FA 导入默认纳入凭证操作,避免新导入账号漏管
  • 自动 BPS 探测计划可配置(Wei-Shaw#193):自动 BPS 探测时间表与默认选项可在界面配置,附设置预览截图
  • 智能运维自动配置(Wei-Shaw#194):新增 OAuth 自动配置与并发升级(oauth_auto_config、account_auto_config 仓储与调度 outbox),附 docs/account-auto-config.md
  • 账号探测就地刷新(Wei-Shaw#195):上游探测结果就地更新,不再整表重载账号列表
  • 并发进度配色与升级开关(Wei-Shaw#196):并发进度样式调整,并遵循升级开关(附前后对比截图)
  • 仅观测 BPS 糖果测试(Wei-Shaw#197):质量规则支持 observation-only BPS(只观测不动作),新增迁移 258_quality_observation_scope.sql,附 docs/quality-bps-observation.md
  • 账号独立成本倍率(Wei-Shaw#198):账号级成本倍率(后端 account_cost.go、前端 utils/accountCost.ts),编辑 / 批量编辑与优先级页面展示,附 docs/screenshots/account-cost-multiplier/

批次三增量(9ee2041d3..425977815)

  • OpenAI 2FA 返回时关闭弹窗(Wei-Shaw#191):CreateAccountModal.vue 的「返回」按钮在 OpenAI 2FA 步骤改为关闭弹窗,修正从 2FA 登录返回后弹窗残留的问题

批次九增量(faf58e440..c2e3e098f,PR Wei-Shaw#218 – Wei-Shaw#251,ranxi release v2.9.4 – v2.9.6)

  • 渠道监控 v2 展示 100 个智能检查位(Wei-Shaw#218):v2 监控卡片补足 100 个检查槽位
  • 初始 OAuth 配置写入模型映射(Wei-Shaw#219 / Wei-Shaw#226):oauth_auto_config 首次配置即写入账号级模型映射并覆盖身份默认映射,避免映射缺失导致误调度
  • BPS 图片文件引用规范化(Wei-Shaw#220 / Wei-Shaw#227):内联消息历史中的本地兼容 ID 不再外泄,附件文件引用统一规范化
  • 自动配置模型计费倍率(Wei-Shaw#221 / Wei-Shaw#223):自动配置支持模型级计费倍率,告警文案与冲突处理同步
  • BPS 上游错误分类(Wei-Shaw#221):带内(in-band)失败与取消终态归类,避免把用户取消计入上游故障
  • BPS 调度本地错误与代理获取失败(Wei-Shaw#222 / Wei-Shaw#231):本地 BPS 代理获取失败不再计入上游错误,并保留安全的附件失败 / 代理获取诊断信息
  • 移除账号类别优先级捷径(Wei-Shaw#225):优先调度统一按显式优先级与容量判定
  • 可持久化的重登运行时(Wei-Shaw#224 / Wei-Shaw#235 / Wei-Shaw#238):托管 worker 生命周期与 API 进程绑定,进程退出时回收后代进程;
    支持选择重登引擎与并行 worker,附 tools/reauth-runtime/ 便携运行包与 backend/internal/reauthruntime/;新增迁移 262_openai_oauth_reauth_engine.sql
  • 质量检查位与 BPS 分类修正(Wei-Shaw#228 / Wei-Shaw#229 / Wei-Shaw#232):BPS 目录示例由可调用目录生成,图片上限文案标明为本地限制
  • 优先级调度公平性与容量优先(Wei-Shaw#230 / Wei-Shaw#236):按空闲容量与分组争用分摊优先流量,保留 OAuth 别名准入;`pelican_group_...
Read more

Sub2API 0.2.10

Choose a tag to compare

@github-actions github-actions released this 29 Sep 10:36
6348fc6

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

Important

本版本为 0.2.10:在完整保留 Fork 自有功能的前提下,将上游 Wei-Shaw/sub2api 的功能移植进本 Fork。
latest 与 0.2.10 均指向本版本。

版本号沿用上游的三段式 0.2.10:本 Fork 未占用该标签(已发布版本为 v0.2.8 / v0.2.81 / v0.2.9 / v0.2.91),
因此直接跟随上游版本号。注意 0.2.10 在数值上小于上一版本 0.2.91,应用内「检查更新」的版本比较可能把本版本判为更旧;
请以 latest 镜像标签与 Release 为准。

Note

发布产物与前几版一致:Docker 镜像(GHCR + Docker Hub 双 registry),linux/amd64 单架构,
三标签 0.2.10 / 0.2.10-amd64 / latest(同一镜像);二进制归档仍停发,Release 仅交付镜像与说明。

移植来源

  • 来源仓库:Wei-Shaw/sub2api,分支 main
  • 来源提交:a60a29549(release v0.2.10)
  • 上次移植基准:9a62841fd(release v0.2.9,已由本 Fork 的 PR #86 / v0.2.9 发布)
  • 本次增量:33 个提交(22 个非合并提交)、118 个文件(+3784 / −439),无新增数据库迁移
  • 合并方式:git merge --no-ff upstream/main(合并提交 cc4224e0b),20 处冲突手动处理(见下方「Fork 适配与冲突处理」)
  • 补丁等价性核对:本 Fork 的 v0.2.91 已并入 ranxi production 的 Wei-Shaw#185 – Wei-Shaw#191,其中 ranxi 侧同样在追平上游;
    git cherry 显示上游本批改动在 Fork 侧尚无等价补丁,故全部引入
  • 版本号:backend/cmd/server/VERSION 为 0.2.10

v0.2.10 增量(本次新增)

  • Claude 原生重置额度(reset credits):新增 claude_reset_credits.go 与 claude_reset_handler.go,账号页可按需查询 Claude 侧重置额度状态并展示在账号单元格(ClaudeResetCreditsCell.vue),新增管理端路由 GET /accounts/:id/claude/reset-credits
  • 风控用户白名单:新增 cyber_policy_user_allowlist 设置项与 cyber_policy_allowlist.go,白名单用户(按用户 ID / 邮箱模糊搜索)命中风控时只记日志(log-only),不落账号封禁与会话屏蔽;管理端设置页新增白名单选择器,HTTP 与 WebSocket 准入对白名单用户跳过既有会话屏蔽查询
  • Claude Sonnet 5.5 支持:新增模型与计费识别,并保留 Opus 5.5 thinking 相关行为
  • 分组「仅 Claude Code 客户端」:仅允许 Claude Code 客户端的分组会隐藏不支持的客户端入口
  • 模型白名单与映射冲突修复:账号级白名单不再覆盖模型映射,避免「白名单模型映射冲突」把可用模型误拒
  • 网关路由归属修正:复合(composite)模型路由在传统调度与 WebSocket 别名场景下按账号归属解析,避免歧义路由把请求交给非归属账号;修正晚到的缓存输入扣减
  • 流式用量归一化:Chat 流式转发的 usage 现在会随响应归一化并上报,修复流式请求用量缺失
  • Anthropic 工具名重写:工具名重写改为单次 body pass,避免重复改写
  • Antigravity 兼容流保活:首个内容块到达前的兼容流保持存活(fix(antigravity): keep compat streams alive before first content)
  • Codex 模型目录:OpenAI 分组不再下发 Codex 模型目录(fix: omit Codex model catalog for OpenAI groups)
  • 看板用量趋势切换:管理端看板支持在 tokens 与消费金额(actual_cost)之间切换近期用量趋势
  • 依赖清理:移除初始化阶段写入的已废弃限流默认值

Fork 适配与冲突处理

  • backend/cmd/server/VERSION:跟随上游写入 0.2.10。代价是该版本在语义化比较中小于 0.2.91(应用内检查更新可能判为更旧)
  • cyber 设置项(union):保留 Fork 的 CyberSessionIdentityStrictEnabled(设置键、解析默认值、DTO、请求体、cachedCyberSessionBlockRuntime.strict、严格身份门控准入),并新增上游的 CyberPolicyUserAllowlist(设置键、解析默认值、设置视图、DTO、请求体、allowlistedUsers 缓存、log-only 记录)。合并产生的重复 cacheTTL 声明已去除;enabled 读取失败时保留 Fork 的 fail-closed 提前返回,并沿用「刷新失败时保留上一次白名单」的上游语义
  • backend/internal/handler/openai_gateway_handler.go:保留 Fork 的 turn 准入、分组禁用模型与严格 cyber 身份机制,并在所有屏蔽点接入上游的 cyberPolicyLogOnly 放行。WebSocket 首帧改为显式解析复合路由(wsRouteModel + WithCompositeRouteDecision)取代 ensureCompositeTargetPlatform;Fork 的禁用模型校验保持在前
  • backend/internal/handler/openai_cyber_allowlist.go:保留上游新增文件与白名单(log-only)语义,但 findBlockedCyberSessionForAPIKey 改为基于本 Fork 的类型化会话身份查询(service.ResolveCyberSessionIdentity):上游的 buildCyberSessionBlockWritePlan / findBlockedCyberSessionKey 依赖本 Fork 已删除的 openai_cyber_transcript.go(本 Fork 采用严格身份门控,不引入 transcript 相似度键)
  • backend/internal/service/openai_ws_forwarder_ingress.go:上游把准入可见载荷改名为 rawForHash 并单独保留 clientWindowID;两侧字段都保留,hooks.BeforeRequest 传 rawForHash(准入需看到映射前的客户端模型),同时保留 Fork 的 invalidateOpenAIWSTurnStateAfterAdmissionFailureForRequest 失效处理
  • 设置管线:看板 handler 保留 Fork 的 parseTimeRange 标签输出并新增上游的 metric 选择;管理端 settings 请求体 / 响应体与 systemSettingsResponseData 同时携带白名单与严格身份字段
  • 依赖注入:routes/admin.go、handler/wire.go、cmd/server/wire_gen.go 保留 Fork 的代理车道、openai-reauth、请求采集、token-guard 与 Excel / BPS 接线,并额外接入上游的 ClaudeResetCreditService 与 claude/reset-credits 路由
  • 测试:openai_account_scheduler_test.go 并集两侧新增用例,并按 Fork 的 getOpenAIAccountScheduler(ctx, priority) 签名调用;openai_ws_v2_passthrough_cyber_test.go 保留 Fork 的 WithOptions harness,上游的变参构造器作为其薄封装;openai_cyber_allowlist_test.go 改用 Fork 的显式屏蔽键断言(无 transcript 键);EditAccountModal.spec.ts、AccountStatusIndicator.spec.ts 取两侧并集
  • i18n:保留 Fork 更严格的 cyberSessionBlockHint 文案(描述本 Fork 的严格身份语义),并补入上游的白名单文案

Fork 自有功能(完整保留)

  • Codex 292 门票(x-codex-turn-state)打票与注入、账号代理车道(proxy lanes)
  • Excel / BPS 协议链路:单工具调用参数解析、图片中转入驻控制、BPS 冷却策略与用量明细推理等级映射
  • cyber 严格身份门控:缺省拒绝缺失 / 非法 / 冲突会话身份,WebSocket 后续轮次可继承本连接首次确认的身份
  • 凭证守护、账号质量运维、上游剩余额度探测、观察者(observer)角色与分组范围控制
  • 图片创作 / 画布 / Studio Bridge、邮件广播、模型广场(model-square)
  • 发布流水线:双 registry(GHCR + Docker Hub)推送;latest 只由本 Fork 的镜像工作流与 Release 写入

升级说明

  • 部署与升级使用 Docker 镜像:docker pull ghcr.io/ziyue67/sub2api:0.2.10,或 docker pull ziyue67/sub2api:0.2.10;
    latest 同步指向本版本。具体步骤见部署文档。
  • 本次无新增数据库迁移,最新迁移仍为 Fork main 上既有的迁移集合;升级前请备份数据库。
  • 行为变化:新增 Claude 重置额度查询入口;风控白名单用户命中风控只记日志;OpenAI 分组不再下发 Codex 模型目录;
    看板用量趋势新增 metric 切换(默认 tokens,语义不变)。
  • 回滚:revert 本次合并提交即可;镜像可回退到上一版本 0.2.91。
  • 合并进 main 后会触发 GitHub Container Registry 工作流,按 VERSION 发布 0.2.10 / 0.2.10-amd64 / latest 三标签镜像,
    随后由 Sync Fork Release 创建 v0.2.10 标签与 Release。

验证

  • 本次(v0.2.10 追平)本地校验(Linux,Go 1.27.1 / Node 22 / pnpm 9.15):
    后端 go build ./...、go vet -tags=unit ./...、go test -tags=unit -count=1 ./... 全部通过
    (63 个包 ok、0 个 FAIL,含本次改动涉及的 internal/service(cyber 白名单、Claude 重置额度、复合路由归属)、
    internal/handler、internal/handler/admin、internal/server/routes 等包);
    前端 vue-tsc --noEmit、eslint 通过,make test-frontend-critical 45 个文件 / 737 个用例全部通过。
  • 无新增迁移文件:本次增量未改动 backend/migrations 与 backend/ent。
  • 发布配置未改动:.github/ 与 GoReleaser 配置沿用既有约定(仅 linux/amd64、三标签、二进制停发)。
  • 上一版本(0.2.9 追平上游 v0.2.9)的验证记录保留在 v0.2.9,0.2.91 的 ranxi 追平记录见 v0.2.91。

Docker 镜像(ziyue67/sub2api)

ziyue67/sub2api:latest
ziyue67/sub2api:0.2.10
ghcr.io/ziyue67/sub2api:latest
ghcr.io/ziyue67/sub2api:0.2.10

拉取示例:

docker pull ziyue67/sub2api:0.2.10
docker pull ghcr.io/ziyue67/sub2api:0.2.10

文档