v2.1.7 · 压制窗口对齐真实循环判定点
修复:压制窗口对齐真实循环的判定点
v2.1.6 引入「命中重复推理后先截断、再在同一账号上重发」时,把流式压制窗口的上限设成
12000 字符。上线后线上日志显示,真实循环的判定点落在 18085–34341 字符之间(自上次实际
进展起算),于是循环在网关开始压制之前就已经写给了客户端,重发没有机会执行,线上仍然
返回 upstream_reasoning_loop。
这一版把上限对齐实测数据:
- 字符上限提到 40000,覆盖线上观测到的全部形态(最宽的一次 34341)并留出余量。
- 新增 60 秒时间上限,覆盖「想得慢、每次只吐几个字」的流——那种情况字符数上不去,
只靠字符上限会让客户端长时间收不到任何响应。 - 字节上限提到 2 MiB,避免分帧很碎的流提前打开闸门。
出现正文、拒绝或工具进展时仍然立即放行,因为已经写给客户端的内容收不回来。重发成功时
调用方只会看到第二次的输出;重发后仍循环、或客户端已收到内容时,行为与之前一致。
部署
网关镜像随本 tag 发布,标签 v2.1.7 与 latest 都已推送。线上用热更新完成切换,
当前对话未中断。
cd /opt/workbuddy2api
sudo docker compose pull wb2api
sudo docker compose up -d wb2api已知边界
- 压制窗口按已观测的循环形态标定:从零开始的循环最迟在 40000 字符前就会命中。循环若
只在更靠后的位置才开始,闸门已经放行,只能按原有方式报错。 - 重发上限仍是一次;持续循环会如实报错,不会无限重试。
- 被丢弃的那一轮确实已经生成并计费,用量照实累计并标记为「用量未完整返回」。