qwen-code 拆分历史重试功能,梳理 checkpoint 可靠性四大加固点
qqqys · ghdev · 2026-09-20
QwenLM/qwen-code 的 #12287 issue 将 #12190(从历史恢复运行)中积累的加固工作拆出独立推进。原 PR 经六轮 autofix 从约 1000 行膨胀到约 1900 行,开始触碰 runner 的恢复语义、checkpoint schema 和 daemon 的不受信工作区边界,因此功能本体以原始范围另开新 PR。
待加固的四个点:
- 让 run checkpoint 成为权威依据:workflow-runner.ts 写 checkpoint 是刻意不 await 的,但新的「历史重试拒绝门」把它当作另一进程正在运行该 run 的证明;若写失败仍放行启动,拒绝就只依赖尽力而为的写入,因此必须在 start 返回前 await 并在失败时拒绝。
- pid 回收下的写者身份判定:writerHasExited 用 process.kill(pid, 0),回收后的 pid 会被误判为存活;建议在 Linux 上记录进程起始时间(/proc/<pid>/stat 第 22 字段)做精确匹配。
- 恢复调用不必重传参数:resume 时参数可从快照读取,但当前的 settled snapshot 会在参数未随行时误报为无参数,应沿用上一次的 args 投影。
- 区分「args 从未记录」与「args 过大被省略」:旧版快照两者字段皆无,daemon 需据此决定是否拒绝重试。
整体是一次较罕见的对 agent 工作流 checkpoint/并发语义的细致工程讨论。
「编程与Agent」频道最新
- 卖家自曝:号称稳定运行四个月的 Agent,全靠我每周偷偷修两次 — Cold_Mud2650 · 2026-09-21
- 开发者上线 DiffusionGemma 免费端点:230ms 返回句子概率,兼容 OpenAI SDK — victormustar · 2026-09-21
- Mozilla 实测:本地 30B 模型零 API 全程自动开出真实 PR — mozilla-ai · 2026-09-21
- 开发者实测:用「GPT-6 Astra」加 Hyper3D Rodin MCP 自动生成 3D 素材做游戏 — CodeByPoonam · 2026-09-21
- mcp-server-dns:零配置的 DNS 查询 MCP 服务器 — modelcontextprotocol · 2026-09-21
- 工具单独测全过,agent 连跑就崩:MCP 状态传递难题 — Stock-Pumpkin-8859 · 2026-09-21