LLM Agent 返回 200 但输出为空或无意义内容是常见的静默失败。文章提出通过 output token 数量这一确定性信号来检测三类静默失败:零输出、无限循环、语义空输出。
你的 LLM Agent 返回了一个响应。没有报错,没有异常。但它真的做了你让它做的事吗?
这就是静默失败问题。系统表现一切正常——HTTP 200,状态 success——但输出是空的,或者毫无意义。没有任何告警。第一个发现问题的,是客户。要捕获这些,你需要先知道静默失败在什么条件下是可检测的。下面就是这个框架。
静默失败是指报告成功但产出零(或无用)输出的执行。Agent 没有崩溃——它只是什么都没做。最常见的模式:
Agent 调用模型。
模型返回约 0 个输出 token,或一个空白响应。
调用方代码继续执行,浑然不觉。
另外两种变体也很常见:Agent 无限循环而没有进展(工具调用从未推进状态),以及输出在结构上有效但语义上为空——应该搜索时却返回"我不知道"。
标准错误监控对三种都束手无策,因为根本没有错误。你在检查错误的信号。
每次 LLM 调用都会产生输入 token(你的 prompt)和输出 token(模型的响应)。这是可测量的、确定性的,每个提供商在响应元数据中都会提供。
洞察:一次健康的 Agent 调用,每个 Agent 都有一个可预测的 token 范围。一个工单摘要器可能每次消耗约 100-200 个输入 token,产出约 50-150 个输出 token,一次又一次。如果某次执行返回 100 个输入 token 和 0 个输出 token,这是一个值得标记的信号——它本身不是失败的证明,但值得告警。
如何实现:记录每次执行的输入/输出 token,计算过去 30 天输出 token 的中位数和标准差,标记低于第 10 百分位或恰好为零的任何情况。
baseline_median_output = median(past_30_days_output_tokens)
baseline_std = stdev(past_30_days_output_tokens)
is_anomaly = (today_output_tokens < baseline_median - 2*baseline_std) OR (today_output_tokens == 0)
成本 = 输入 token × 输入单价 + 输出 token × 输出单价。当 token 消耗下降时,成本也随之下降。成本通常比原始 token 更容易追踪,因为它与供应商无关——你可以跨模型聚合。
如果你的 Agent 每次运行通常花费 $0.02-$0.05,而今天它是 $0.0001,说明出了大问题。同样方法:基于 30 天基线中位数/标准差,低于第 5 百分位时告警。成本因为是派生值,会略微滞后于 token 异常,但它是在业务层面更容易理解的数字。
如果 token 提示了异常,下一个问题是模型实际说了什么。存储输出的一个简短摘录(不是整个响应,那通常太大),然后你可以扫描空字符串、重复/循环输出,或针对正确性评分标准运行一个二次 AI 评判。
捕获前 500 个字符,对比基线标记任何空的或异常短的内容。基于评分标准的评判是可选的,但对高风险 Agent 很有价值。
每次执行记录:input_tokens, output_tokens, cost_usd, output_summary, executed_at。
按计划(每晚,或高容量时每小时)计算每个 Agent 的基线,并标记低于阈值的情况。
标记时:用附加的输出摘要告警工程师,以便立即分诊;如果成本异常严重,可选择自动暂停 Agent。
优势:错误日志没有误报,因为你直接测量执行质量而非异常。早期信号——token 是实时的,所以你可以在几分钟内捕获问题。与框架无关——LangChain、CrewAI、原始 SDK,每次模型调用都产生 token。低摩擦——记录 token 只是几行代码。
局限性:你需要基线历史(一个只有五次执行的新 Agent 还没有可靠的范围),该技术是上下文相关的(输出方差本来就大的 Agent 需要更宽的基线),检测不是预防——标记失败并不能阻止下一次昂贵的调用,那需要在上面叠加实际的暂停或速率限制。
记录 token——在每次执行记录中添加 input_tokens, output_tokens, cost_usd。
一旦有一两周的历史,就开始计算基线。
在输出 token 的第 10 百分位或 output_tokens == 0 时设置告警。
分诊一次。当它触发时,你要么看到一个真正的空响应(可操作的),要么是一个合法的边缘情况,下次排除。
这样你不会捕获每一个静默失败。但你会捕获那些最常见的——那些因为在有人注意到之前都不可见而伤害最大的。
如果你不想自己构建和维护这套管道,那这是我们内置到 AI Agents Control Tower 的那一层——token 追踪、基线计算和异常告警,让你可以定义阈值而不是基础设施。无论用哪种方式,原则都是一样的:测量 token,建立基线,对差距告警。静默失败只有在你开始倾听之后才不再沉默。