① settleToolCall 每 tool_result 全量读+重写 items.jsonl(O(N²) IO)
run-observer.ts:276-283 → run-state-store.ts:138-150;c81cb3317 新增。长 run(数百工具调用,items.jsonl 含流式 delta 行直至终态收敛)每条 tool_result 触发整文件 JSON.parse+原子重写。
修法:终态回写并入 finalize 的 compactModelStreamItems 一次完成,或追加 settled 侧车行。
② 总线读路径全文件扫描
thread-event-bus.ts:101-116 hasEvents 读全量只为看首行;resume-handlers.ts:61-70 GET_EVENTS 每次 afterSeq 增量仍整文件读 → 长会话 events.jsonl 每次重开/轮询整读。
修法:hasEvents 只读首块;read 记录文件 offset 增量读。
附(P3,存疑)
崩溃+后台任务 continuation waiting_background 疑似死路:run.ts:426-466 upsert 后 resume-service.ts:89-98 返回"已重新附着",但 workerIdentity/processToken 跨重启是否可再附着未闭环;getPendingResume(agent-handlers.ts:504-512) 只认 interrupted,waiting_background 不出横幅。修法方向:resume 时校验 job 可再附着否则转 dangling-fallback。
来源: 2026-08-22 全栈 review(main@1af3a94)
① settleToolCall 每 tool_result 全量读+重写 items.jsonl(O(N²) IO)
run-observer.ts:276-283 → run-state-store.ts:138-150;c81cb3317 新增。长 run(数百工具调用,items.jsonl 含流式 delta 行直至终态收敛)每条 tool_result 触发整文件 JSON.parse+原子重写。
修法:终态回写并入 finalize 的 compactModelStreamItems 一次完成,或追加 settled 侧车行。
② 总线读路径全文件扫描
thread-event-bus.ts:101-116 hasEvents 读全量只为看首行;resume-handlers.ts:61-70 GET_EVENTS 每次 afterSeq 增量仍整文件读 → 长会话 events.jsonl 每次重开/轮询整读。
修法:hasEvents 只读首块;read 记录文件 offset 增量读。
附(P3,存疑)
崩溃+后台任务 continuation waiting_background 疑似死路:run.ts:426-466 upsert 后 resume-service.ts:89-98 返回"已重新附着",但 workerIdentity/processToken 跨重启是否可再附着未闭环;getPendingResume(agent-handlers.ts:504-512) 只认 interrupted,waiting_background 不出横幅。修法方向:resume 时校验 job 可再附着否则转 dangling-fallback。
来源: 2026-08-22 全栈 review(main@1af3a94)