Files
Genarrative/apps
lhk229 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>
2026-08-20 05:36:01 +00:00
..
2026-07-17 16:56:46 +08:00