自动修复闭环里,测试机不可达和测试真挂了如果共用一个非零退出码,环境故障就会被当成修复失败,耗掉重试、触发换模型。这次改动让每次验证以一行分类结论收尾,环境性无结论单独用 exit 75,并在排队时给出可推算的等待上限。
「没判」不等于「没过」:给每次验证补一行“是谁的锅”


自动修复闭环里,测试机不可达和测试真挂了如果共用一个非零退出码,环境故障就会被当成修复失败,耗掉重试、触发换模型。这次改动让每次验证以一行分类结论收尾,环境性无结论单独用 exit 75,并在排队时给出可推算的等待上限。

模型调用失败后,常见做法是重试同一个模型或扔进一个兜底池。MaxClaw 的跨档回退链改为按能力档位单向走:每一跳都记原因,走到边界就显式失败,每次调用单独落库可观测。

Agent 的补丁工具部分失败时,整批不写会逼调用方重发全部内容,静默改写又会让人不敢信结果。按文件隔离失败、把被忽略的歧义锚点在成功与失败路径都留痕,并且不再从人话里切结构化信息,调用方一次就能知道哪一处没落地、落地的那处落在哪。

Agent 系统里一次远程验收的结论如果只活在 shell 会话和进程内存里,重启一次就只剩“不知道”,然后同一个修复被一遍遍重跑。把每次验收落成一条持久的 verification record,并给“被打断”一个独立状态,才能让绿和红都可信。

Agent 隔离工具结果时,不能顺手把执行状态也改写成失败。本文拆解一种保留来源、明确未知、禁止读回正文的占位设计,以及它为什么仍然不能替代执行层的重试约束。