Skip to content

wb2api 1.7.0

Choose a tag to compare

@yintaozhou1 yintaozhou1 released this 31 Oct 13:18
· 8 commits to main since this release

wb2api 1.7.0(versionCode 49)

新增版本公告检测,并把上游 10-27 → 10-31 的变更跟进到位(其中一条是推翻我自己 1.6.9 的做法)。

1. 新增:启动时检测新版本

版本号由远程文本驱动(你随时改页面即可公告,不必发版):

  • 拉取远程公告页 → 正则 最新版\s*[vV]?\s*(\d+(?:\.\d+){1,3}) 取版本 → 按段数值比较
    (字典序会把 1.10.0 判成比 1.9.9 旧);
  • 远程文本里版本号后面常直接跟 URL/中文(最新版1.6.9https://…),所以正则不加 \b;
    页面被富文本插了标签时先剥标签再匹配;
  • 发现更高版本 → toast「发现新版本 x.y.z(当前 x.y.z)」;
  • 网络异常 / 超时 / 非 200 → 明确回执(不会静默);页面可访问但没有「最新版x.x.x」→ 单独文案;
  • 设置 → 关于 → 「检查更新」 可手动重试(给出「正在检查 / 已是最新 / 无标记 / 网络异常」完整回执);
  • 独立 OkHttp(8s 超时、浏览器 UA),只在冷启动跑一次,不占网关连接池、不影响启动速度。

2. 上游跟进(10-27 → 10-31,45 个提交)

上游 内容 落地
PR #108 6020/6021 恢复请求内轮转,终态改回 429 + Retry-After ✅ 1.6.9 我按当时推荐方案做的是 fail-fast + 503,上游实测「同号连续 6021 后 33 秒就通」→ 换号有意义,且上游本身回 429(SDK 对 429 才按 Retry-After 排队重试)。等待时长取 body 的 data.retry_after(6020 实测 40s),缺省 5s,封顶 600s
issue #117 号都在途占满时等一个名额 ✅ 50ms 轮询、上限 10s、只给一次、不占换号次数 —— 「只差一个并发槽」的请求不再直接 503
10-27 11102 负缓存 TTL 6h/24h → 2m/10m ✅ 11102 也会由瞬时抖动/分类误判触发,锁 6 小时会让整池该模型不可用
10-27 全冷却兜底不得绕过模型级冷却 ✅ 否则兜底会挑一个冷却中的号白撞上游
10-30 客户端版本 5.9.3 / 5.9.4;内置 CLI 2.165.0(与 npm latest 2.176.0 不同源) ✅ 新增 BUILTIN_CLI_VERSION 区分;Web 层 Origin 改 www.workbuddy.cn
10-31 下架夜猫子(删整个排程) ✅ 删 Scheduler 分支与对应配置项(旧配置的键被忽略,无需迁移)

未移植(记录在案):思考档位网关策略(PR #104/#105,新功能,工作量大)、Kimi 工具 $ref 展开、按模型隔离的软限流、窗口用量加权调度、/v1/embeddings。

3. 审计修复(逐文件核对注释与实现)

级别 问题
P0 responder(读流/解析)抛异常没有任何处置 —— bodyStreamOf 注释声称的「可分类异常」会冒到 HttpServer 变成匿名 500,该号不罚、不换号
P0 hardMarkers 含裸词 "insufficient":400/403 的 insufficient_scope / insufficient permissions 会被判成「余额耗尽」→ 冷却到次日 04:00(近 24 小时出池)
P1 max_completion_tokens 翻译失败(字符串/0/负数)被静默丢弃 → 由「模型最大输出」顶替(想限 1000 实际拿到数万 token)
P1 http_success 指标用 hop.ok || hop.sent,错误响应也是 sent → 该指标恒等于 completed
P1 revive(解冻)不清 breaker_retry → 解冻后第一次熔断仍按历史次数退避(最长 6h)
P1 mapError 的 status 参数从未使用(三处调用各传不同值,误导读者)

覆盖安装:签名与 1.6.3–1.6.9 一致(SHA-256 32a556af…6c5c17),账号与配置保留。