Skip to content

Sub2API Plus 0.2.9

Choose a tag to compare

@github-actions github-actions released this 30 Aug 09:44
· 267 commits to main since this release

Technical preview / 技术预览: 当前 0.2.x 仅用于开发、兼容性测试和隔离验收,未完成生产级安全、压力、容灾和回滚验证。请勿直接接入生产业务、真实付费用户、不可替代数据或高价值凭据。完整说明见 DISCLAIMER.md。本提示不对 LGPL-3.0-or-later 增加许可限制。

更新日志 / Changelog

这是在 0.2.8 兼容性同步基础上的小版本修订,重点收敛账户探测写入、补齐 CI 集成测试边界,并把本轮已经验证过的 OpenAI/Codex 适配能力正式固化到版本文件。版本号只提升一个补丁位,数据库结构、现有账户凭据格式和代理配置格式保持兼容。

上游同步与协议兼容

  • 持续跟进 Wei-Shaw/sub2apiupstream/main,保留中国区配额/请求头、渠道分时计价、Responses/Chat Completions 桥接、Grok/智谱等渠道适配,以及前端账户管理改进。
  • OpenAI Responses、Chat Completions 和 Codex WebSocket 共用一致的回合状态投影;WebSocket 后续回合遇到明确 429 时,重放请求会按新模型重新选择账户、能力、平台和渠道映射,不再沿用上一回合的错误路由。
  • 保留超大首帧 HTTP bridge、/responses/input_tokens、sideband/live HTTP、compact 探测、工具增量事件和非标准反代错误的兼容处理;异常响应会先完成结构化识别,再决定重试或切换账户。
  • previous_response_id、终态 output id/call_id、服务层级和重置配额响应增加边界校验,避免控制字符、别名冲突或超大响应造成会话状态污染。

OpenAI/Codex 账户、额度与代理

  • Codex 指纹收敛继续提供 offdevicesessionfull 四档,默认 off;HTTP、WebSocket、导入、编辑、批量编辑、复制和调度快照使用同一账户级 seed 生命周期。
  • OpenAI OAuth 账户的卡 429 策略仍为“两次明确上游 429”才进入账户级冷却;第一次 429 执行请求级 failover,短时间内第二次明确 429 才冻结。存在可用 Credit 时不会因为本地估算阈值提前返回 429。Claude/CC 渠道不启用这套策略。
  • “卡429/奸商模式”开关仅作用于 OpenAI/Codex,默认关闭;开启后保留老连接的账户粘性,只有连接出现异常才切换,避免把正常长连接误判为失活。该模式的体验和容量权衡已在界面及文档中明确说明。
  • 配置了 proxy_id 的 OpenAI 账户实行 fail-closed:模型请求、OAuth 刷新、额度、盘点、测活、WebSocket、live/sideband 和 input_tokens 均复用该代理;代理缺失、URL 无效或查询失败时直接报告原因,不旁路直连。未配置代理的账户继续按原有直连策略运行。
  • ChatGPT 积分查询固定使用 GET /backend-api/wham/usage,读取 credits.balance;管理端美元金额仅作前端参考换算(Credit / 25),不会当作实际账单余额。单账户查询、一键盘点和导入后的首次刷新共用解析与缓存。
  • 账户调度优先在并发承受范围内填满少量健康且有冗余的账户,需求增加时再扩展到账户;测活失败会重试一次,连续失败进入独立失败池并保留脱敏原因,避免死号继续参与正常调度。

本轮新增的稳定性修复

  • 修复代理上游账单/用量探测在快照缺失或为 null 时仍写入账户时间戳和 outbox 的问题。现在只有存在有效快照时才更新对应账户记录,空探测不会制造“刚刚使用”或虚假的变更事件。
  • 修复集成测试夹具把“手工暂停”默认值带成 true 的问题;测试现在显式设置场景状态,避免把夹具默认值误当成生产行为。
  • 保留上一轮 golangci-lint 修复:清理未使用符号、无效赋值、nil context、错误类型断言和静态分析告警,确保 Go 1.27.0 工具链下 lint 与 CI 规则一致。
  • 账户列表、状态兜底、额度窗口、批量编辑确认、导入数据模型、测活失败池和一键盘点的前后端字段继续保持一致;未知状态不会再直接渲染为 admin.accounts.status.undefined
  • 更新/重启相关请求继续使用幂等键和断连独立上下文,结构化返回权限、备份、校验、替换和回滚错误;本版本不自动覆盖运行中的数据目录,也不携带构建缓存或数据库文件。

前端与管理端体验

  • 账户详情、批量编辑、导入、重新授权、额度卡片和一键盘点页面共享 OpenAI/Codex 字段定义,指纹档位、Credit、美元参考值、重置次数、5 小时/7 天窗口和代理状态可在同一账户上下文查看。
  • 盘点操作必须先选择账户;结果按成功、失败、跳过和额度已获取分类展示,失败项显示最后一次脱敏错误。普通“查询”与“一键盘点”使用相同的积分解析器,避免只有盘点才刷新额度的显示差异。
  • 批量操作继续区分“勾选目标”和“筛选命中目标”,筛选全量更新显示命中数量并要求二次确认,降低误操作范围。

验证与交付记录

  • 本地 go test -tags=unit -p 1 -count=1 ./internal/repository 通过;Go 1.27.0 嵌入式后端构建通过。
  • dev 构建、单元测试、集成测试、前端构建和安全扫描均已通过;开发产物为 sub2api-0.2.9-dev.29.ca8ed491
  • main 分支 CI 全部通过(shell、frontend、golangci-lint、unit、integration);安全扫描通过。最近一次主分支运行记录:33302900943
  • 发布包仍遵循仓库 LGPL-3.0-or-later 协议、NOTICE、免责声明和源码构建说明;版本号变更不改变上游许可证义务。

升级与回滚提示

  1. 升级前保留数据库、config.yaml.env、代理定义和账户凭据的离线备份,并确认备份可恢复。
  2. main 拉取源码后按源码构建说明构建,或使用 CI 生成的对应归档;不要把 .gocache-*.tmp、数据库和运行日志加入源码包。
  3. 升级后先在管理端选择少量账户执行测活和一键盘点,确认代理出口、Credit、重置次数和状态显示,再逐步放量。
  4. 出现异常时保留日志中的 request id 与结构化错误,按发布指南回滚到上一版本;回滚前后都不要覆盖用户数据目录。

本版本是技术预览和兼容性验收版本。CI 通过表示源码、构建和自动化测试达到当前门槛,不等同于任何生产环境认证;部署前仍应完成独立审计、压测、备份恢复、代理连通性和回滚演练。


📥 Installation

Docker:

# GitHub Container Registry
docker pull ghcr.io/zcj-ui/sub2api-plus:0.2.9

One-line install (Linux):

curl -sSL https://raw.githubusercontent.com/zcj-ui/sub2api-plus/main/deploy/install.sh | sudo bash

Manual download:
Download the appropriate archive for your platform from the assets below.

📚 Documentation