一个被长期低估的可靠性黑洞

2026 年 9 月 14 日,Moveworks 向 Standard 档客户推送了一项名为「Clearer Outcomes for Tool Calls」的 Minor ML Update(Frontier 档 9 月 9 日已上线,Basic 档 9 月 17 日跟进)。改动看起来很小:当工具调用失败、超时或返回空结果时,用户现在会看到一个明确的失败或「无结果」状态,以及「下一步可以做什么」的指引,而不是一个看似成功、实则什么都没发生的回复。但这一改动的背后,是一个被长期低估的可靠性黑洞——静默工具失败。在 agentic 系统里,智能体往往要串起十几个工具调用;只要其中一个悄悄失败、却没被察觉,后续步骤就会基于错误的前提继续跑,最终给出一个自信却错的结果。沉默,是比报错更危险的失败形态。

为什么「看似成功」比「直接报错」更糟

静默失败之所以棘手,在于它伪装成正常。一个超时未返回的工具、一个返回了空列表却被当成「查无结果」的查询、一个因权限不足而被静默跳过的动作——这些在日志里可能只是平淡的一行,在用户眼里却是一句「已为你完成」。后果有两层。其一,运维团队看不到失败,自然写不出安全的重试与兜底逻辑;其二,终端用户被误导,把错误的结论拿去决策。Moveworks 这次把失败态显式化,等于给每个工具调用补上了一个可观测的结局:成功、失败、还是无结果,从此分得清。对运行生产级智能体的团队,这把「工具到底成没成」从猜,变成可断言、可监控、可告警的信号。

这次覆盖了什么、没覆盖什么

需要讲清边界。这次更新主要覆盖 Agent Studio 插件(Program Plugins);MCP 失败的透明度、与 Hera 的 parity、以及更具体的动作级错误讯息,不在本次范围内,作为后续工作单独处理。换句话说,它是一次起点式的修复,而不是把所有失败路径一次照亮。Moveworks 的 MCP Workspace 当前处于受控可用阶段:工具只在 Universal Assistant 里运行、治理在服务器级而非单个工具级、写操作没有确认门、跨 MCP 服务器的自动动作链尚未支持、长任务约 60 秒同步超时。失败请求的排查被拆成四阶段——连接认证、工具发现与选择、工具执行、响应质量——每一阶段对应一组可定位的原因。这种分阶段框架,本身比「一次性报错」更有工程价值,因为它告诉构建者:失败先发生在哪一层,就该先修哪一层。

和评测基础设施热形成呼应

把这件事放回 2026 年 9 月这波评测研究里,脉络更清楚。Harbor-Index 把 80 多个基准统一到一套框架、AgentJudgeBench 考 LLM 评审员在工具调用轨迹上到底可靠不可靠——它们解决的是「评测时怎么知道智能体做对了」。Moveworks 这步解决的是另一侧:「生产运行时,工具失败能不能被看见」。两条线合起来指向同一个结论:智能体的可靠性,不只取决于模型多强,也取决于失败是否可观测、是否可断言。一个把失败藏起来的系统,无论评测分数多漂亮,到了真实工作流里都会悄悄漏判。显式失败态,是智能体从演示走向生产必须补齐的一块底座。

给构建者的三点提醒

对正在用智能体跑工作流的团队,这件事可以落成三条具体动作。其一,让每个工具调用都返回结构化状态(成功 / 失败 / 无结果),而不是吞掉异常;其二,基于失败态写重试与兜底——比如超时重试、空结果改走人工、权限失败升级告警,而不是让智能体自己「猜下一步」;其三,把工具失败纳入监控与追踪,对突发失败率设阈值告警。Moveworks 的做法提示了一个更朴素的真理:在 agentic 系统里,能「大声失败」的工具,比永远「看似成功」的工具更值得信任。

结语

Moveworks 这步改动很小,信号却不小。它把「工具调用失败可见性」从一个常被忽略的细节,推到了智能体可靠性工程的前台。当行业忙着比谁的智能体更会推理、谁的分数更高时,一个更底层的命题被悄悄点明:智能体的可靠性,往往不输在能不能成功,而输在失败了能不能被看见。让工具调用大声失败,是每一个生产级智能体都该有的基本礼仪。