998b9e6c57
apply_agent_runtime_plan_update 把计划解释算进「有变化」判据里,模型每轮重写 一遍解释就返回「计划有进展」,Runtime 还发一个新 planRevision 替它背书。观察 detail 里那句「只有步骤或状态真实变化时才调用 update_agent_plan」是 prompt, 不是门禁,于是总控可以只改解释、不落地任何动作地无限循环,每轮烧一次 Provider 请求。现场实测四分钟走了八轮,planRevision 到 4 而步骤状态一格没动。 判据拆成三态:解释照旧落盘,但只改解释既不算进展也不再 bump planRevision, 事件改发 plan_update.explanation_only。计数落在持久 Runtime state 上(照 plan_submit_gdd_rejection_count 的先例),进程重启不能把一次活锁洗成新的无限 开销;只在「本轮没有任何动作、且未完成原因就是计划自己」这一支累加——等委派 回执、等 provider 批次、等用户问询走的是别的 blocker 类型,不会被误判成空转。 连续 2 轮把 update_agent_plan 从工具目录里摘掉逼模型自愈,只摘这一个工具,其 余工具面原样保留;连续 4 轮以 plan-update-idle-rounds-exhausted 收束。摘工具 的阈值严格小于收束限额,由单测守住,否则 run 会在从没被逼过一次真动作的情况 下直接失败。 Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>