github ranxi2001/sub2api v2.16.0
Sub2API 2.16.0

6 hours ago

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

本版为本 fork 的风控取证、用户恢复和调度可观测性更新:管理员可查看经脱敏加密的 cyber_policy 请求证据,按来源安全恢复风控用户,并在独立 IP 页面管理来源状态和风控配置;同时修复模型同步后的旧质量拒绝标记与无会话 ID 的相同请求重试。

风控证据与相同重试拦截

  • 确认上游 cyber_policy 且父风控日志落库后,保存本次请求中可见的输入与独立的上游原因;不解析或拉取 previous_response_id 引用的历史。详情页不再把上游错误文案当作用户输入,历史未采集内容明确不可用。PR #523
  • 证据捕获默认开启,默认保留 7 天,可配置 1–30 天。认证信息、常见秘密、邮箱、IP、URL、媒体及不透明数据先做有界、尽力脱敏,再使用既有固定 TOTP 加密密钥进行 AES-GCM 加密。未配置固定密钥或加密失败时不保存明文;密钥丢失/轮换会使旧证据不可解密。升级前应确认数据保留需求与固定密钥管理。
  • 仅管理员可读取、导出、删除和配置,敏感操作进入访问审计,响应使用 Cache-Control: no-store。队列满、截断、存储失败、中断等状态明确展示;过期证据拒绝读取并定期清理,父日志/用户删除会级联删除。捕获存在有损边界,脱敏不能保证识别所有业务秘密;管理员导出的副本不受服务器保留期控制。
  • 开启既有 cyber_session_block_enabled 后,无显式会话身份的已命中请求增加按 API Key 隔离的可见内容指纹,拦截相同内容重试;仅存单向哈希,忽略模型、stream、缓存提示等字段。显式会话仍保留原身份写入路径。该开关默认关闭;同 Key 下内容相同的其他请求也可能命中,改写内容仍可能先到上游一次,存储不可用时保持原放行至上游审核的行为。PR #525
  • cyber_policy 继续终止当前请求,不自动重试或切号。固定 100% 事件分不代表用户恶意置信度、模型质量或规避策略成功。

按来源恢复用户与独立 IP 页面

  • 风控中心新增用户列表、状态摘要及解除、重置计数、自动封禁豁免操作;事务、请求去重和版本围栏避免旧任务重复封禁。解除仅作用于本来源持有且状态 revision 匹配的禁用,历史禁用不会被自动认领;豁免不绕过请求审核、鉴权或其他来源限制。操作记录原因与审计,提交后读回状态并失效认证缓存。PR #519
  • 新增用户列表/详情/动作管理 API;原 POST /risk-control/users/:user_id/unban 现在要求 version、confirm 和非空 reason,旧管理客户端需适配,否则返回 4xx。缓存失效或读回失败时可能已提交操作,须重新读取,不能仅凭错误提示判断未执行。
  • 提示词审计与 IP 审计分成完整页面;IP 页集中「来源状态与解封」「风控配置与访问记录」,复用原设置表单。旧提示词 IP tab 和设置页精确 IP 锚点重定向到新入口,切换本页 tab 保留未保存草稿;配置接口、管理员权限与默认开关沿用原行为。PR #518
  • 账号立即打开/关闭调度移除二次确认;已有待执行计划仍按原手动切换路径取消,一次性定时计划的确认与时间规则保留。PR #521

错误率评分与质量模型同步

  • 优先调度新增按账号、路由模型和逻辑端点隔离的近期 HTTP attempt 错误统计,候选表展示失败数/有效尝试数、窗口、读取时刻、样本不足/未知状态、基础分和错误乘数。HTTP 200 流内失败与提前 EOF 可记失败;客户端取消、下游断开、鉴权/权限/余额/业务配额及本地准入错误排除,不从最终请求成功或日志数量补造分母。PR #520
  • 全新配置默认错误权重 25、窗口 10 分钟、成功先验 5;旧持久配置缺失权重字段按 0 加载。正权重替换原优先调度的账号级 EWMA 错误惩罚,0 恢复旧行为;错误项只软降分,不绕过优先级、容量/质量/利润或硬会话门槛。配置及统计边界
  • 统计有界且仅在当前进程内:多实例不共享,重启或淘汰后未知;分钟桶为近似窗口,WebSocket/非 HTTP 通道及超限/无法识别的响应不伪造样本。候选分数不是实际选中记录,也不是全局成功率;未据此承诺性能提升。
  • 成功显式同步真实模型目录后,只清除该目录中执行目标对应的旧「模型不支持」质量拒绝标记,支持账号映射解析;同步失败、配置回退和目录缺失模型继续保留保护。旧编辑表单保存时不再写回过期拒绝标记,也不抹掉新运行时拒绝;重新允许检测不保证上游可用或质量通过。PR #522

升级与兼容风险

  • 新增 forward-only 迁移 296_content_moderation_user_recovery.sql:用户状态 revision 列/触发器、来源状态/命中/操作表,并一次性快照旧计数;297_cyber_policy_evidence.sql:证据状态列、加密证据表、外键和索引。升级前备份数据库并评估表锁与快照开销,本次发布未执行真实数据库迁移。
  • 二进制回退不会移除新表、证据或状态触发器,也不等于恢复旧管理 API 契约;旧程序不会运行新的证据清理 worker,回退前须另行安排保留期和删除管理。混合新旧实例的来源所有权、计数和恢复行为需谨慎评估,建议统一升级;避免直接删表或回写历史状态。
  • 本次为软件正式发布,不包含生产部署、生产数据库验收、真实 SMTP 或付费上游调用。说明依据真实代码差异和 PR;本地定向测试、mock 与 CI 的覆盖范围分别记录,不代表线上业务实测。独立进行的用户余额不足邮件改动未纳入本版。

完整差异 v2.15.0...v2.16.0


📥 Installation

Docker:

# GitHub Container Registry
docker pull ghcr.io/ranxi2001/sub2api:2.16.0

One-line install (Linux):

curl -fsSL https://raw.githubusercontent.com/ranxi2001/sub2api/v2.16.0/deploy/install.sh | sudo bash -s -- install -v v2.16.0

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

K3s gateway upgrade (on each existing single-node host):

curl -fsSL https://raw.githubusercontent.com/ranxi2001/sub2api/v2.16.0/deploy/upgrade-k3s.sh | sudo bash -s -- --version v2.16.0

Defaults: namespace tosky-canary, Deployment tosky-nerd; override with --namespace NAME --deployment NAME.
Upgrade every instance sharing Redis to this release.

📚 Documentation

Don't miss a new sub2api release

NewReleases is sending notifications on new releases.