Qwen Code issue 追踪 held-Runtime 清理缺陷:进程重启会丢失排空义务

wenshao · ghdev · 2026-10-12

QwenLM/qwen-code 的 issue #13930 收纳自 PR #13889 深度评审的一个延后 Critical 与一批 Suggestion。

核心 Critical(R1-2):当一个 turn 结束时 Runtime 被持有(finish() 按设计吞掉 409 runtimesessionheld),所欠的 drain 义务只记录在进程本地的 heldRuntimeTurns 集合中。若 Harness 重启或 Session 被接管,重新加载的 Session 集合为空,DELETE /session/:id 将不排空任何内容并返回 204,而 worker 的运行仍在进行、:process 行仍非终态——Runtime 及其工作区挂载会在 Session 关闭后被静默钉住。

约束与方案:义务应在加载时恢复而非在加载时释放(急切释放会停掉活跃 Session 仍需要的运行)。已评估的设计选项包括:因记录体缺少 runtimeSessionId/promptId 关联,需在 closed-key 校验器上加 schema 字段;更干净的路径是提供只读 broker 查询,列出 harness session 的活跃 hold-row runtime Session id(hold 行已同时携带两个 id),涉及一次执行仓库查询、一条只读路由、一个 CLI 客户端方法与加载时播种。

issue 还给出了明确的验收标准:在 hosted-harness-session.test.ts 中新增接管用例,断言替代方的 release 携带 [{ drain: true }]。

原文链接 →

「编程与Agent」频道最新

更多「编程与Agent」频道 AI 资讯 →