“完成!”不是返回码:为什么智能体完成需要结构化信号
Agent 以“全部搞定——如果需要任何修改请告诉我!”结束它的回合,而你的编排器必须决定是将工单标记为已解决、启动下一次交接,还是重试。这句话不是一个返回码。它只是一个训练出来的、为了在聊天结束时听起来很贴心的礼貌语,而它下游的每一行自动化代码都继承了这种模糊性。那些将此视为解析问题的团队会编写捕获 \b(done|complete|finished)\b 的正则并收工。而那些在生产环境中运行 Agent 的团队最终会明白,完成是一个事件,而不是一种情绪。
失败模式通常是双峰且枯燥的。要么是 Agent 在未完成时宣布完成——过早终止——而编排器愉快地在一个半成品产物上推进工作流。要么是 Agent 确实完成了,但表述方式与检测器不匹配(“我已经落地了更改,尽管边界情况的测试仍然不稳定”),编排器于是发起重试,导致重复工作、产生重复的副作用,有时甚至会推翻成功的第一次尝试。这两种模式都会静默地退化。在有人阅读 Trace 并注意到 Agent 说了“我想这些就是全部了”而计费系统将其视为一次提交(commit)之前,任何仪表盘都不会显示异常。
解决方法不是更智能的解析。而是给 Agent 一个结构化的终止方式——一个具有枚举状态、原因代码和你的流水线可以路由的句柄(handle)的“完成工具(done-tool)”——并将编排器改为等待该事件,而不是监听聊天流。
