mirror of
https://github.com/ThearchyHelios/AgentLab.git
synced 2026-11-15 02:31:58 +00:00
5fdb55defe
UI 重构前置。这三条都是新界面会放大的问题——时间线要常驻显示事件流, 重复累积和泄漏在旧界面里藏得住,在新界面里就是明显的错。 ## 审批恢复后事件重复收一遍 streamRun 里 `let lastSeq = 0` 是每次调用新建的闭包局部量,注释写着"重连时 带上已收到的最大 seq 所以不会重复"——那只在同一次调用内的断线重连成立。 审批放行会调 attachRun 重新订阅,lastSeq 归零,后端按 `seq > after` 把整条 历史再推一遍,而 applyEvent 是无条件 `[...events, event]`。 实测:一个带审批的运行中断时有 6 条事件,放行后共 15 条。修复前 attachRun 用 after=0 会把那 6 条再收一遍;现在传 max(seq)=6,只收 9 条新的。 把 after 提成 streamRun 的参数比在客户端做去重干净——省掉服务端的重发本身。 ## chat store 的订阅泄漏 cancel 是 store 上的单值,下一轮 ask 直接覆盖,上一轮的 WebSocket 再也关不掉。 句柄下放到 turn 级,clear 时逐个关。 ## stop() 误杀等待审批的历史轮次 原来把所有非终态 turn 一律标成"已取消"。正等人工介入的轮次是等着用户回来 处理的,不是卡住的——把它们标成已取消,用户回来就找不到那个审批了。 现在只停最后一轮,且跳过 waiting。 ## ApprovalCard 解除对 studio store 的硬依赖 它被对话页和运行页复用,而"恢复后重新接上事件流"默认走 studio.attachRun—— 在对话页用就是同时开两条订阅(chat 一条、studio 一条),两边各收一份事件。 加 onResolved 回调,谁用谁负责重新接流。