Skip to content

v1.4.0

Choose a tag to compare

@HengXin666 HengXin666 released this 09 Aug 17:25
· 17 commits to main since this release

v1.4.0 - 幽灵连接治理 + 账号级串行化 + 前端一键重启

修复:幽灵连接(连接卡死不自动断开)

上游偶尔会出现"发了一半不再吐数据、也不断开连接"的卡死状态,导致该连接永远挂着并拖住后续请求。本次治理:

  • 上游流式响应 body 增加 idle 超时limits.stream_idle_timeout_sec,默认 120 秒):只要超过该时长没有新数据块,立即取消上游读取并断开下游连接,让客户端感知截断后自行重试,不再有无限期挂起的幽灵连接
  • 控制面请求(session / agent-runs 等)的 body 读取同样带超时兜底,杜绝任何路径挂死。
  • 断开后不误伤账号:session 本身正常的话,下一个请求仍可复用,不浪费免费额度。

负载均衡:一个账号一个并发

  • 账号级串行化:一个账号同一时间只处理一个 chat(新增账号互斥锁),并发请求按热 session 排队复用,不再同时打在同一个 instanceId 上(上游会话不稳定时并发容易互相干扰/顶号)。
  • 选号在同层级内优先空闲账号;排队超过 limits.account_chat_wait_ms(默认 120000ms)兜底换号;预算耗尽时自动转入受 idle 超时约束的最终等待,不会误报失败。
  • 冷启动原子化保持不变:多个并发请求同时到达仍只创建一个 session。

新增:前端一键「重启服务」(终极兜底)

  • 控制台右上角管理员专属「重启服务」按钮(POST /api/system/restart,仅 admin)。
  • 服务端 spawn 自重启子进程等待端口释放后无缝接管并优雅退出;Docker 场景下容器主进程退出会触发 restart: unless-stopped 整容器重建,双保险。
  • 前端自动轮询 /healthz 直到恢复;Web 登录态持久化在 /data,重启后无需重新登录。
  • 已实测:容器场景(Docker 自动恢复)与裸机场景(子进程接管 + 登录态保留)均验证通过。

其他

  • 新增 smoke 回归测试:zero/partial 幽灵连接掐断、账号串行化并发峰值、重启 API 权限与回调。

部署

git pull && docker compose pull && docker compose up -d