2026 年 9 月 · 6 分钟阅读
为什么 agent 在生产里失败:2.6 天日志分层

关键定义
故障观测面 一套日志或监控实际能记录到的故障类型集合。不在观测面内的失败不产生任何记录,所以看到的失败分布由观测面决定,而不是由真实故障率决定。
分层计数器 按故障发生的位置分别维护的运行计数,例如工具层、传输层、配额层、脚本层、门控层。它的作用是阻止不同责任人的失败被平均成一个数字。
2026 年 9 月 23 日 20:01,我们舰队里一个定时 agent 的工具调用返回了一段 Python traceback。往上翻同一个文件,还躺着 88 次命令超时和 127 次供应商配额超限。三种失败挤在同一份日志里,修法却完全不同。
口径:我们数的是什么
这是 OOMeta 自建 agent 舰队的运行错误日志,保留窗口从 2026 年 9 月 21 日 07:18 到 9 月 23 日 20:01,共 2.6 天、16,787 行、139 个定时会话、1.4 MB。日志按大小轮转,所以这是一个窗口,不是全历史。分类规则是固定字符串匹配,任何人都能复跑。
为什么要把口径写得这么细?因为「agent 失败率」这个数字在不同口径下能差出十倍,而多数团队的面板上没有口径,只有一个百分比。
失败落在五层,不在一个平面
工具层:423 次工具调用返回错误。按工具分,终端命令 267 次,占 63%;代码执行 46 次,文件搜索 36 次,技能维护 29 次,读文件 15 次,补丁 10 次。
传输层:SSL 或连接中断 222 行,HTTP 429 共 80 行。这一层的特点是同一个请求重发往往能过,失败带有随机性。
配额层:127 次超出每周用量配额,分布在 33 个会话里。139 个会话中有 24% 撞过配额墙。这一层不会让连通性探针失败,只会拦住真实尺寸的请求。
脚本层:385 行 Python traceback。这一层最安静,因为它不影响会话继续跑,只是每次都用同一种方式失败,直到有人去读日志。
门控层:13 次命令被安全门控拦下。这不是故障,是策略生效,但它混在错误日志里,容易被当成失败计入分母。
模型层:0 条。
那个 0 才是重点
错误日志里没有一条来自模型输出质量。这不能读成模型没出错,只能读成这一层不在日志的观测面内。同一份数据,只监控模型的人看到 0,只监控工具的人看到 423,两个数字都真实,都不是全貌。
所以「agent 不稳定」这种结论几乎没有信息量。它把五个层的失败平均成一个数,而这五层的责任人、修复方式和预算来源都不一样:传输层该加重试,脚本层该改代码,配额层该谈采购,门控层根本不该进分母。
我们的判断
- 分层计数器。工具、传输、配额、脚本、门控各留一个数。合成一个失败率,等于把维修单撕掉只留张收据。
- 模型质量用评测集管,不进错误日志。错误日志管运行故障,评测集管输出对错。两者混在一起,运行团队会去调模型,模型团队会去看超时。
- 每个计数器要能回答一个问题:这层现在正常吗?答不了的就是装饰,装饰不会在故障发生时叫醒任何人。
留给买家的一个问题
你现在的 agent 面板里,失败率的分母是什么?如果分母是所有请求,那么 63% 的失败来自同一个工具这件事会被平均掉。如果分母是成功任务,你至少知道自己花了多少钱买回一个结果。
口径与来源:本文全部数字来自 OOMeta 自建 agent 舰队的一手运行日志,非二手引用,也无外部厂商数据。复现路径:日志文件 ~/.hermes/logs/errors.log,保留窗口 2026-09-21 07:18 至 2026-09-23 20:01(1.4 MB,16,787 行);分类采用固定字符串匹配,分别对应 exceeded the weekly usage quota、Command timed out、Tool returned error、Traceback、Blocked;会话数按日志内的会话标识去重;采集时间 2026-09-23 20:10 CST。窗口会随日志轮转变化,重新采集的数字不会与本文完全一致,口径一致。 |外部口径对照:退出码 124 的超时语义见 GNU coreutils timeout 手册 gnu.org/software/coreutils/manual/html_node/timeout-invocation.html(curl HTTP 200);HTTP 429 的定义见 RFC 6585 第 4 节 rfc-editor.org/rfc/rfc6585(curl HTTP 200)。上述两条为术语口径引用,本文数字不依赖外部数据。
常见问题
这份日志覆盖多长的时间窗?+
2.6 天,从 2026 年 9 月 21 日 07:18 到 9 月 23 日 20:01,共 16,787 行、139 个定时会话。日志会轮转,所以它是一个窗口,不是全历史。
失败最多的是哪一层?+
工具层。423 次失败的工具调用里,终端命令占 267 次,约 63%,其后是代码执行 46 次、文件搜索 36 次、技能维护 29 次。
为什么模型层是 0 条?+
因为错误日志不记录模型输出质量。0 条不能读成模型没出错,只能读成这一层不在观测面内。用错误日志评估 agent 稳定性,会系统性地漏掉唯一需要评测的那一层。
配额问题严重到什么程度?+
127 次超出每周用量配额的记录分布在 33 个会话里,139 个会话中有 24% 撞过配额墙。配额耗尽不会让连通性探针失败,只会拦住真实尺寸的请求。
应该先修哪一层?+
先把计数器建起来再谈修复。工具层与传输层的失败可以用重试和超时预算吸收,脚本层的失败必须改根因,两者混在一个失败率里就看不出优先级。
相关文章
监控层先坏:agent 运维的两类静默故障
1 个 token 的健康探针报正常,agent 尺寸的请求却拿到 429;本地记录说渠道静默 18 天,平台侧显示当天有发布。两次都不是 agent 坏了,是仪表坏了。我们的判断:agent 上生产前,先给监控层做验收。
Uber 四个月烧完全年 AI 预算:编码 agent 的成本失控是治理问题
Claude Code 采用率从 32% 涨到 84%,约 70% 的提交代码由 AI 生成,2026 全年 AI 预算在 4 月耗尽,人均成本 $150–$2,000/月,内部排行榜把 token 消费变成竞赛。我们的判断:失败模式不是拒绝采用,而是无治理的拥抱——用量计费需要 DevOps 级成本控制。
微软ThinkingBox基准:Agent『演示很行、生产不可靠』的40点鸿沟
微软联合匹兹堡大学等发布开源基准ThinkingBox:最强模型GPT-5.4单次成功率65.36%,20次全过率仅25.25%,相差40个百分点,微软称之为『发现-可靠性鸿沟』。更关键的是,Agent经常留下干净日志却未完成任务——基于转录的评估正在系统性高估Agent。
2 周从想法到原型——跨境金融科技公司的 AI 治理合规实战
一家月处理 $500M+ 的跨境金融科技公司,在 2 周内从零到一建立了 EU AI Act 合规治理框架——不是 PoC,是生产级交付。本文复盘三个层面的治理真空与 2 周 Agent Governance Check Sprint 方案。