Repository navigation
Sub2API 0.2.11
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 releasev2.9.6,2026-10-01);
上次为批次八faf58e440(PR Wei-Shaw#210 – Wei-Shaw#217,ranxi releasev2.9.3,2026-09-29) - 上次移植基准:
62ac3a5dd(批次一,releasev2.9.0及其后合并的 Wei-Shaw#181 – Wei-Shaw#184);
再上一次为f24ff9110(releasev2.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与 ranxiproduction两条主线;本次同时追平上游 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_test_costs记录 USD 成本,新增迁移261_pelican_group_test_costs.sql - Kubernetes 多副本网关与优雅摘流(Wei-Shaw#233 / Wei-Shaw#241 / Wei-Shaw#251):网关支持多副本、Pod 摘流与 Serverless 区域到 Pod 的路由;扩展
deploy/kubernetes/、新增backend/internal/serverless/与deploy/upgrade-k3s.py - Claude 取消与 IP 401 归因(Wei-Shaw#234 / Wei-Shaw#235):下游流断开时取消上游请求;OpenAI OAuth 隔离 IP 未授权响应去抖,快速路径返回前重置 401 连击计数
- 凭证运维运行时开关(Wei-Shaw#240 / Wei-Shaw#248):重登运行时开关从账号表单移入智能运维页,账号成本倍率保留在候选缓存中
- 管理后台功能搜索(Wei-Shaw#242 / Wei-Shaw#250):权限感知的功能搜索(
Ctrl/⌘+K),支持跳转到系统设置分区与深链接 - k3s 版本化升级助手(Wei-Shaw#247):新增
deploy/upgrade-k3s.py/upgrade-k3s.sh与deploy/tests/test_upgrade_k3s.py,CI 增加release-helpers校验 - BPS 原生图片默认开启(Wei-Shaw#242 / Wei-Shaw#249):生图默认走 BPS 原生处理,附默认开关
- Excel 绿标 BPS 徽标置于账号状态之上(Wei-Shaw#243):账号状态指示器把 BPS 徽标排在状态之前
- WS 加速与自动 BPS 模板开关(Wei-Shaw#245 前后):账号编辑弹窗新增 WS 加速与自动 BPS 模板复选框
- SPA 回退绕过裸 API 别名(Wei-Shaw#245 / Wei-Shaw#246):裸别名不再被前端 SPA 回退吞掉
- 网关副本跳过 Codex 后台收割(Wei-Shaw#247 前):多副本部署下仅由主副本执行 Codex 收割
- Axios 升级至 1.20.0(Wei-Shaw#244):修复安全公告涉及的依赖版本
随本次追平一并进入的其它修复
- Antigravity:工具 schema 保留字符串
const约束(fix(antigravity)) - WebSocket:从原始客户端帧检测窗口滚动(
fix(openai)) - OpenRouter / OpenCode Zen:为 OpenCode Zen 上游注入 DeepSeek reasoning 占位(
fix(openai)) - 调度与模型发现:OpenAI 直通账号补充模型发现、受限直通账号保留允许的默认模型(
fix(gateway)/fix(models)) - 网关错误归因:客户端断开统一标记为 499,不再被记成 502 / 200 的上游错误(
fix(gateway)) - 同步脚本:保留 schema 规范化与分组模型限制(
fix(sync)) - 测试与发布:修复 import mock、等待账号筛选重载(
test)、release: prepare v2.9.0
上游 v0.2.11 增量(a60a29549..42bc7f6cf,本次新增)
- 余额在途预留(in-flight reservation)(上游 Wei-Shaw#7681 等):请求开始时按预估金额预留余额,计费落账前保持占用,
避免并发透支;未定价别名经billing fallback models估算,过期预留不再续期
(backend/internal/service/billing_inflight_reservation.go、backend/internal/repository/billing_inflight_cache.go、handler/gateway_inflight_reservation.go) - API Key 创建数量与频率限制(Wei-Shaw#7752):按账号维度限制 API Key 创建数量与频率,默认每小时 60 次
(新增ErrAPIKeyCreateLimited/ErrAPIKeyCountExceeded) - Claude 原生限额重置兑换(Wei-Shaw#7726):由服务端选择授权额度并兑换原生限额重置,新增管理端确认按钮与重置次数展示,
加固兑换结果与幂等处理(backend/internal/service/claude_reset_credits.go、claude_reset_redeem.go) - Codex 远程模型目录与订阅套餐识别(Wei-Shaw#7730 / Wei-Shaw#7736):客户端配置支持上游远程模型目录,识别当前订阅套餐
- GPT-6.1 Sol 与 Astra Ultrafast(Wei-Shaw#7730 等):新增模型与
Ultrafast服务档位能力声明与计费倍率 - Claude Code 限制分组的 OpenAI 兼容入口降级:受限分组不再直接 403,改走降级分组
Fork 自有功能(完整保留)
- Codex 292 门票(x-codex-turn-state)打票与注入:独立代理后台打票、住宅 IP 请求覆盖该头,含后台开关、门票状态展示与缺票拦截
- 上游剩余额度探测:账号页可查询上游余额与用量窗口
- 账号代理车道(proxy lanes):车道级调度、车道粘性绑定与准入并发控制
- 管理员请求采集:按用户 / 上游账户 / 入口分组创建采集任务,默认关闭
- 凭证守护:令牌巡检、自动重登与错误态自愈(默认关闭)
- 账号质量运维、Excel / BPS 协议、Mihomo 托管 / 动态代理区域、Pelican 定时演练
- 图片创作 / 画布 / Studio Bridge、邮件广播、模型广场(model-square) 等
- 发布流水线:双 registry(GHCR + Docker Hub)推送;
latest只由 Release 写,0.2/0浮动标签已取消
升级说明
- 升级方式:管理后台左上角「检查更新」可一键升级;也可在服务器执行
curl -sSL https://raw.githubusercontent.com/ziyue67/sub2api/v0.2.11/deploy/install.sh | sudo bash -s -- upgrade。 - 回滚方式:
install.sh rollback <version>。 - 也可以使用 Docker 镜像部署:
docker pull ghcr.io/ziyue67/sub2api:0.2.11,具体见 部署文档。 - 镜像只提供
linux/amd64单架构(不产出 arm64;install.sh在 arm64 上会明确报错),标签为0.2.11/0.2.11-amd64/latest(同一镜像)。 - 二进制归档停发(2026-09-27 起):Release 不再附带
sub2api_*.tar.gz/*.zip与checksums.txt,统一以 Docker 镜像交付。 - Release 零附件(本次重申):本次刷新
v0.2.11说明时不发布任何附件,tag 的 Release 资产列表保持为空;
凭证守护「托管重登」模式所需的运行包sub2api-reauth_<VERSION>_linux_<arch>.tar.gz也因此不由发布流水线提供,
该模式会复报 runtime 不可用(不影响账号巡检、自动重登与外部 Worker 模式)。
需要时可在手动 dispatchRelease工作流时勾选publish_reauth_runtime,仅那一次上传该运行包;
或通过SUB2API_REAUTH_RUNTIME_REPO/SUB2API_REAUTH_RUNTIME_VERSION指向已发布运行包的仓库与版本。 - 数据库迁移:批次一新增
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;
批次四新增258_quality_observation_scope.sql;批次六新增259_account_auto_config_events.sql;
批次七新增260_quality_rule_templates.sql;批次九新增261_pelican_group_test_costs.sql(鹈鹕测智 USD 成本)与
262_openai_oauth_reauth_engine.sql(可持久化重登引擎选择),
均于启动时自动执行;上一次追平(v2.8.19/v2.8.20)无新增迁移。升级前请备份数据库。 - Kubernetes 部署新增:批次九引入多副本网关、Pod 摘流与 Serverless 区域路由,
新增deploy/kubernetes/、backend/internal/serverless/与版本化升级助手deploy/upgrade-k3s.py/deploy/upgrade-k3s.sh;
Docker Compose 部署不受影响。 - 请求采集与凭证守护默认关闭,需在「系统设置 > 功能开关」中显式启用。
- 安装脚本与在线更新服务的默认仓库为
ziyue67/sub2api(backend/internal/service/update_service.go、deploy/install.sh)。
验证
- 合并冲突处理:第一个合并(
f3f9cdd73←dfdb8642a)需人工处理 15 个文件(backend/cmd/server/VERSION、backend/cmd/server/wire_gen.go、
internal/service/{gateway_service,group_model_allowlist,openai_account_scheduler,openai_gateway_responses_chat_fallback,openai_upstream_transport_error,openai_ws_forwarder_ingress,openai_ws_forwarder_payload}.go
及对应测试、frontend/src/__tests__/integration/data-import.spec.ts、frontend/src/i18n/locales/{en,zh}/admin/accounts.ts),
处理原则为保留两侧并集:VERSION保留本 Fork 的版本号,WebSocket 相关文件保留 Fork 自有实现并吸收 ranxi 修复,
data-import.spec.ts保留两侧用例,i18n 合并两侧文案。第二个合并(0713b0384←62ac3a5dd)无冲突(git merge-tree退出码 0)。
批次四合并(468061e08→e6e7a27aa)需人工处理 3 个文件:backend/cmd/server/VERSION(保留本 Fork 的版本号,不采用 ranxi 的2.9.1)、
.gitignore(白名单取并集,保留!docs/releases/*.md、!docs/codex-credits.md与上游新增的!docs/quality-bps-observation.md)、
frontend/src/components/account/EditAccountModal.vue(<script setup>导入:吸收上游新增的@/utils/accountCost,但不引入nextTick——
Fork 已在456c4cff7移除syncFormFromAccount的 nextTick 回填窗口,强行引入会触发TS6133)。
批次五合并(7b9fb3332→2eead90e9)无冲突(前端 6 个源文件 + 测试 + i18n + 截图,自动合并)。
批次六合并(74d3538a8→f0d2073bf)无冲突(git merge-tree退出码 0;后端 31 个文件 + 前端 38 个文件 + 迁移259_account_auto_config_events.sql+ 截图,自动合并)。
批次八合并(faf58e440→3739696dc)需人工处理 3 个文件:backend/cmd/server/VERSION(保留本 Fork 版本号,不采用 ranxi 的2.9.3)、
backend/internal/handler/openai_chat_completions.go与backend/internal/handler/openai_gateway_handler.go
(保留本 Fork「组内账号耗尽后切换 API Key 下一路由」逻辑,同时采纳 ranxi 新增的lastAdmissionErr准入错误分支)。
批次七合并(cdab8bbb4→439de895d)需人工处理 2 个文件:backend/cmd/server/VERSION(保留本 Fork 版本号,不采用 ranxi 的2.9.2)、
frontend/src/components/account/BulkEditAccountModal.vue(本 Fork 的「提交前二次确认」流程showBulkUpdateConfirm/
pendingBulkUpdatePayload与 ranxi 的 BPS 默认值加载闸门bpsDefaults.loading并存:handleSubmit保持async且仍以确认弹窗收尾,
不直接提交,代理车道WithSelectedAccountProxyLane/AccountProxyURL与 WS→SSE 加速决策resolveOpenAIHTTPSSEDecision/accelerateHTTPSSE互不覆盖)。
上游 v0.2.11 合并(9fc24fd46)需人工处理 4 个文件:backend/cmd/server/wire_gen.go、
backend/internal/service/wire.go(保留 Fork 的ProvideAccountOpsService/ProvideAccountTokenGuard*/ProvideCRSSyncService,
同时采纳上游ProvideClaudeResetCreditService与idempotencyCoordinator构造顺序)、
backend/internal/service/api_key_service.go(并集:Fork 的分组路由错误 + 上游的创建数量 / 频率限制错误)、
backend/internal/service/openai_codex_model_metadata.go(并集:Fork 的 Excel BPS 多智能体能力置空 + 上游的 Astra Ultrafast 能力)。
批次九合并(59a6c673b←c2e3e098f)需人工处理 7 个文件:backend/cmd/server/VERSION(保留上游编号0.2.11,不采用 ranxi 的2.9.6)、
backend/cmd/server/wire_gen.go(采纳 ranxi 的configConfig形参,保留 Fork 的imageCreator*/canvas*/studioBridge*/promptFavorite*
构造与ProvideHandlers参数表)、.github/workflows/backend-ci.yml(保留 Fork 的verify: false,并入 ranxi 的release-helpers)、
.github/workflows/release.yml(保留 Fork「只发镜像」的发布流水线与说明回写步骤,不并入 ranxi 的 GoReleaser 二进制矩阵 /
重登运行包附件;注意沿用 Fork 的update-version+build-frontend→release作业图)、
frontend/src/components/account/EditAccountModal.vue(采纳 ranxi 的openaiModelAliases回填与syncingForm回填窗口,
同时补回nextTick导入——Fork 早前移除了该导入,直接合并会触发TS2304)、
frontend/src/components/account/__tests__/AccountStatusIndicator.spec.ts与frontend/src/views/admin/SettingsView.vue
(取并集:保留 Fork 的leaderboardActualCost卡片与 BPS 徽标用例,并并入 ranxi 的账号状态用例与设置分区锚点)。 - 本地校验(Linux,Go 1.27.1 / Node 22 / pnpm 9.15):
- 后端:
go build ./...、go vet -tags=unit ./...、go test -tags=unit ./...(make test-unit)全部通过(无 FAIL;
本次两条主线合并后各复跑一次,第 2 次为 65 个包全绿);golangci-lint run --timeout=30m为0 issues。 - 后端集成测试:
go test -tags=integration ./...需 Docker(testcontainers 拉取postgres:18.1-alpine3.23/ Redis)。
首次并行全量运行时internal/middleware、internal/repository、internal/server/routes因容器镜像拉取超时(docker.1ms.run镜像站
TLS handshake timeout)与 10 分钟单包超时失败;逐个单包复跑均通过(middleware11.6s、repository23.2s、routes9.6s),
属本机 Docker 网络抖动而非代码问题。 - 前端:
vue-tsc --noEmit、eslint .(全量lint:check)通过;make test-frontend-critical52 个文件 / 877 个用例全部通过
(首次并行运行有 1 个UsageView用例波动,单独复跑与第二次全量运行均全绿;已在origin/main上复现同一波动)。 - 说明:
frontend/pnpm-lock.yaml由本机 pnpm 11 重算会产生无关改动,已还原为仓库版本;本地验证用pnpm install --no-frozen-lockfile
安装依赖后直接调用node_modules/.bin/{vue-tsc,eslint,vitest},未改动锁文件。
- 后端:
- 工作树检查:无残留冲突标记(
<<<<<<</>>>>>>>),git status干净。
后端单测会就地写入backend/internal/service/data/bps-images/,该运行时目录已加入.gitignore,避免误提交。 - 发布配置校验:构建目标
goarch仅amd64,Docker 镜像标签为0.2.11/0.2.11-amd64/latest(GHCR 与 Docker Hub 同一镜像);
发布说明按docs/releases/v0.2.11.md(与 tagv0.2.11同名)由release.yml/sync-fork-release.yml/backfill-release.yml回写。 - 本次 Release 刷新(2026-10-01):
v0.2.11的 tag 与 Release 已随 2026-09-29 的镜像发布建立;本次把 tag 移到两条主线合并后的提交,
并重写 Release 正文为本文档,不发布任何附件(release.yml的build-reauth-runtime作业已改为仅手动勾选
publish_reauth_runtime时才执行,tag push 路径恒不产出附件)。 - 重登运行包来源可配置:
backend/internal/reauthruntime/runtime.go默认从ziyue67/sub2api的 Release 取运行包,
可用SUB2API_REAUTH_RUNTIME_REPO(owner/repo,非法值回退默认)与SUB2API_REAUTH_RUNTIME_VERSION(未设置或非法时用应用版本)覆盖;
仓库/版本在使用前均做白名单校验,避免把下载重定向到非预期地址(source_test.go覆盖)。
📥 Installation
Docker:
# Docker Hub
docker pull ziyue67/sub2api:0.2.11
# GitHub Container Registry
docker pull ghcr.io/ziyue67/sub2api:0.2.11本版本起不再发布 tar.gz / zip 二进制包与 checksums.txt,请使用上方镜像部署。