Skip to content

v2.8.6-go

Choose a tag to compare

@github-actions github-actions released this 30 Sep 10:35
· 8 commits to go-rewrite since this release

v2.8.6-go

修复项目审查中已复现的 11 项问题,覆盖数据库并发访问、代理一致性、账号调度、
协议转换和停机收尾。上游客户端版本仍为 3.14.4,账号数据库 JSON/schema 不变。

修复内容

  1. 数据库单写者保护:服务与 CLI 入口使用操作系统独占锁,防止 CLI 删除的账号
    被服务旧快照重新写回,以及设置修改后内存与数据库不一致。
  2. SOCKS4 巡检:复用实际业务的代理实现,不再把支持的 SOCKS4 线路误判为不支持。
  3. 选号短回避:目标模型筛选后再执行软回避,避免排除唯一支持目标模型的账号。
  4. 自动领取健康检查:取得槽位后重新检查账号快照,跳过停用、归档、失效及
    未到期冷却;额度耗尽但健康的账号仍可领取。
  5. 额度刷新保留冷却:额度先归零再恢复不再提前解除冷却;真正的鉴权失败仍可
    升级为失效。
  6. Responses 指令角色:输入中的 system/developer 归并到顶层 system,
    保留 instructions 与指令顺序;未知角色不再静默降级。
  7. OAuth 显式直连:保留登录会话中的直连意图,禁止授权完成后自动换成代理;
    已有账号明确选择直连时清除旧指派。
  8. 代理事务一致性:线路与关联账号变更先事务提交,再发布内存;数据库失败时
    不再出现“返回失败但实际出口已改变”。
  9. Chat 初始内容:流式转换保留 content_block_start 的 text/thinking 初始值,
    再追加后续增量,避免正常结束却丢失正文。
  10. 统一停机预算:后台额度、领取、巡检支持取消,异步票务生产者可取消并等待;
    HTTP 与后台收尾共享 10 秒总预算。
  11. CLI 实时额度:刷新完成后重新读取快照,输出最新额度;失败单独提示。

升级与行为变化

  • 替换程序/镜像并重启,无需迁移数据库。
  • 服务运行期间,访问同一账号库的 CLI 数据命令会明确拒绝执行;请使用管理后台,
    或先停止服务再运行 CLI。先停止旧版本再升级,旧程序不会遵守新增的锁协议。
  • 数据库旁的 accounts.db.lock 是正常锁文件;文件存在不代表锁被占用。
    正常或异常退出后操作系统会释放锁,不需要删除文件。
  • 入池自动领取忙时跳过、async 默认 300 秒票务寿命、正常模型 SSE 无总时限等
    已有契约保持不变。
  • 10 秒为停机总预算;超出剩余预算时记录清理未完成并退出,不无限等待外部组件。

验证

  • 新增 18 个顶层回归用例及 1 个子进程辅助入口,覆盖全部 11 项修复。
  • 本地关键回归连续运行 3 轮通过;构建、静态检查和五平台交叉编译通过。
  • Windows 本地全量测试首轮通过,后续存在既有临时目录清理不稳定;
    原始提交对照同样能复现,未将它作为本次修复新增问题。
  • 发布标签前检查 Linux CI 全量测试、竞态检测、官方 SDK/Pi 兼容回归、
    交叉编译和容器构建结果。

发布产物

  • 二进制:Linux amd64/arm64、macOS amd64/arm64、Windows amd64。
  • 镜像:ghcr.io/fujunchao/zcode2api-plus:2.8.6-go 和 latest,
    支持 Linux amd64/arm64。