v1.1.2
本版本只修 bug,没有行为变更。两处都影响「号明明是好的,用起来却不对」:生成链路
撞限流改走备用端点时,会把备用端点的报错直接抛给 IDE,让整轮对话失败;以及被封号
的 Key 会被用量刷新「刷活」,界面显示正常而实际一发就 403。
修复
- IDE 报
[UnknownOperationException] The requested operation is not recognized by the service,持续几分钟后自愈,而软件里测活全程是通的。生成面撞 429 时会改走
Q 平面重试(两边限流桶独立),但 Q 对 IDE 用的那个x-amz-target回的是
400 UnknownOperationException。此前只把回退端点的 403 当作「端点拒绝」,
于是这个 400 走了通用路径、被原样返回给 IDE,整轮对话直接失败;更糟的是该端点
不进冷却,而主端点还在 60 秒限流冷却里,排序把 Q 顶到前面,主端点那整个冷却窗口
内每一发都先打 Q、每一发都 400。现在回退端点上的任何非 2xx 都算端点拒绝:
4xx 停用该端点 30 分钟、5xx 按限流那档短冷却,一律不参与封号判定,并改回主端点
重试;主端点仍在限流冷却时会等它到期(上限 60 秒)再发,而不是把这个错误抛给
IDE —— 429 退避最坏只是慢一点,4xx 是整轮失败。同一发请求里已经被拒过的端点
也不再重复尝试,避免把一个本可退避重试的 429 换成一个直接返回的 4xx - 同一处缺口在 Anthropic 兼容网关(
decideFailover)里一并修掉:来自回退端点的
其余 4xx 不再当成「请求本身的问题」直接回客户端,而是停用该端点并换条链路 - 已封号的 Key 会被用量刷新「刷活」。撤销封号 / 受限判定此前认任何 2xx,
而控制面的模型列表与用量查询(ListAvailableModels/GetUsageLimits)对一个
已被封的号照样返回 200 —— 于是下一轮用量刷新就把判定抹掉,卡片回到正常,
实际发一发生成请求还是 403。现在只有生成面(GenerateAssistantResponse)的
2xx 才算「能出字」、才有资格撤销判定;两个网关的转发成功同权,控制面的 200 不算
测试
- 覆盖扩充到 240 个用例:新增「哪些状态码算回退端点被拒」与「被拒之后的端点排序」
两组回归(两个网关各一组),以及「控制面 2xx 不撤销封号判定」
📦 下载
| 平台 | 文件 |
|---|---|
| macOS (Apple Silicon) | *-mac-arm64.dmg |
| macOS (Intel) | *-mac-x64.dmg |
| Windows | *-win-x64-setup.exe |
| Linux | *-linux-x86_64.AppImage |
macOS 安装包未做签名与公证,首次打开请右键选择「打开」,或在
「系统设置 - 隐私与安全性」中允许运行。
安装遇到问题?请查看 安装说明与常见问题。