v2.8.4-go
·
11 commits
to go-rewrite
since this release
v2.8.4-go
修复工具链安全漏洞、socks5 鉴权线路、上游错误事件误判断流、以及风控/冷却被启停与
迟到成功绕过的四项问题。上游客户端版本仍为 3.14.3,不改变账号数据库的 JSON 字段
契约,也无需迁移配置。
修复内容
构建工具链升级到 Go 1.25.14
- 此前
go.mod声明go 1.25.0,CI 据此精确安装,发版二进制均由 go1.25.0 编译。
govulncheck二进制模式实测:可达 29 个已修复的标准库漏洞(net/http、
crypto/tls、crypto/x509、net/url等);go1.25.14 构建后为零。 - 直接提升
go指令而非新增toolchain行:CI 的setup-go@v5只读取go行。 - 本地开发需要 Go ≥ 1.25.14;较旧的 Go 会按默认的
GOTOOLCHAIN=auto自动下载。
带用户名密码的 socks5 / socks5h 线路恢复可用
- 方法协商误发
05 02 01 00(GSSAPI + 无鉴权),漏报用户名/密码方法 0x02,
要求鉴权的代理一律回 0xFF 拒绝;网关、async、额度、领取、OAuth 全部出不去。 - 线路巡检走标准库的 SOCKS 实现(会正确协商),所以巡检显示可用、真实流量失败。
- 现按 RFC 1928/1929 发送
05 02 02 00;新增按规范校验方法与凭据的假代理回归测试。
上游错误事件不再被算作线路断流
- 上游在 SSE 中正常发出的
error事件(如overloaded_error)说明线路已把整条流
完整送达,不再累计账号断流、写入回避期或推高线路连击——此前连续 3 次即会移除一条
健康线路。v2.8.2 起原生/v1/messages也受此影响,OpenAI 两个端点则更早就有。 - 客户端仍收到明确的失败:原生接口原样透传上游
error事件(不再重复追加一条
「流式响应中断」),OpenAI 端点照常报upstream_stream_error,async 票务以 error 终止。 - 真正的断流(缺少
message_stop、连接中断、非法事件)判定与记账不变。
停用/启用与迟到成功不再解除风控和冷却
- 启停不再改写失效:停用 invalid 账号只关闭
enabled,状态保持 invalid,再启用也
不会复活(此前停用→启用即把风控失效一键解除)。归档走同一转移。 - 冷却截止时间在启停中保留:启用时冷却未到期则回到 cooling,而非 active。
- 迟到的成功不再冲掉冷却:请求在冷却生效前选中账号、冷却期间才返回 200 时,只累计
调用次数,不复位状态、不清零风控/限流/503 连击;冷却到期后的成功照常归零。
失效账号上的成功同样不改写状态与连击。 - 额度刷新与后台启停按钮改按
enabled判断是否停用:已停用的失效账号不再被轮询,
后台按钮也能正确显示「恢復」。
后台前端产物补齐
- v2.8.3 修改了账号页的新增提示(「已存在(未更動)」)但未重建内嵌的前端产物,
该提示实际未生效;本版随启停按钮修改一并重建。
回归验证
- 新增回归测试:socks5 用户名/密码协商;原生、async、Chat、Responses 四条路径下
上游 error 事件不计断流(并保留「缺少结束事件」仍计断流的对照);单账号/批量/归档
三个入口的启停往返;迟到成功保留冷却与失效;已停用失效账号不参与额度刷新。 - 本地构建、
go vet、全量 Go 测试(Go 1.25.14)及前端类型检查通过。 - 发布前由 GitHub Actions 补充 Linux 全量测试、竞态检测及客户端 SDK 兼容性检查。
发布产物
- 跨平台二进制:Linux amd64/arm64、macOS amd64/arm64、Windows amd64。
- 多架构镜像:
ghcr.io/fujunchao/zcode2api-plus:2.8.4-go和latest,支持 Linux amd64/arm64。