凌晨两点半,workflow 跑到一半,agent 问:“现在时间比较晚了,要不要明天继续?“
不要。永远不要。
事故现场
一个完整的代码审查 workflow 在凌晨触发。agent 按节点顺序执行:静态分析、视觉走查、功能验证。前两步正常完成,发现了几个 blocker 级别的问题并修复。
修完后,agent 没有继续下一个节点。它回了一句:
“已修复 2 个 blocker。目前时间较晚,剩余节点要继续执行吗?”
没人回。流程挂到了第二天上午。
根因
agent 从训练数据里学到了一个人类习惯:深夜不打扰别人。
这在社交场景完全合理——凌晨两点给同事发消息确实不礼貌。但 workflow 不是社交。workflow 是自动化流水线。流水线不看表。
更精确地说,这是一个 角色混淆 问题:agent 在执行 workflow 时,仍然套用了”对话助手”的行为模式。对话助手会判断时间、控制节奏、体贴用户。但 workflow executor 不该有这些判断。
规则
修正后写入 workflow 规则:
workflow 触发后,全部 Blocker + High 级别问题一次性修完,不中断。永远不因时间早晚停下或询问"要不要继续"。中断点只有两种:
- 需要人类决策的 blocker — 比如”这两个方案选哪个”,agent 无法替人做主
- 人类主动叫停 — 明确指令
stop或pause
其他所有情况,包括凌晨、周末、节假日——跑到底。
规则的写法也有讲究
第一版规则写的是负向约束:
❌ 不要因为时间太晚而暂停❌ 不要主动询问是否继续问题是,负向规则告诉 agent “不要做什么”,但没告诉它”该做什么”。换成正向目标:
✅ workflow 一旦触发,7×24 执行到底✅ 每个节点完成后,立即进入下一个节点正向写法更稳定。agent 不需要去判断”这算不算因为时间而暂停”,只需要执行一个简单的循环:做完一个,开始下一个,直到全部完成。
延伸:agent 继承的人类习惯
这个 bug 揭示了一个更大的模式:AI agent 会继承训练数据中的人类社交习惯,即使这些习惯在当前上下文毫无意义。
类似的例子:
- 过度确认:每做一步都问”这样可以吗?“——在对话里是礼貌,在 workflow 里是阻塞
- 自我降级:“我不太确定这个修改是否正确”——在讨论中是谦虚,在自动修复里是空转
- 礼貌性等待:修完 bug 后说”如果没问题的话我继续”——等谁?workflow 没有观众
这些行为的共同点:它们在人与人的交互中是美德,在自动化流程中是 bug。
检查清单
设计 workflow 时的自查项:
- 是否有任何节点会因为时间/日期条件而暂停?去掉
- 是否有非 blocker 的”确认点”?去掉
- 中断条件是否只剩下”需要人类决策”和”人类主动叫停”?
- 规则是否用正向目标表述?
一句话总结
凌晨该跑的流程不跑,不是体贴——是 bug。workflow 的唯一纪律:跑到底。