跳到主要内容

Agent Observability

读 agent 运行看板

Agent Observability 的 dashboard 回答「我的 agent 最近干了什么」——失败、花销离群、轮次、按应用汇总——以及它哪几个数字与标签不符。

/dashboard 是 Agent Observability blocklet(ARC 仓库里的 blocklets/observability-explorer)的落地区。它回答一个问题:我的 agent 最近在干什么,哪几条 run 值得点进去看?

下面每一条都在活环境 https://observability-explorer.afsd.dev 上核验过:build 35de3a0b,以已注册测试用户的登录态,重走时间 2026-08-20。你看到的行会不一样;可复用的是形状和那几条注意事项。

本页按当前 build 重走过。第一轮(build 400ce96,2026-08-15)跑在一个越权 bug 还活着的时候:拥有任意一个应用就能看到全部署的 agent run。该 bug 已在 2026-08-18 修掉,所以那一轮看到的行有一部分是症状本身。今天成立的规则见你能看到哪些 run。

这是三个区之一。另外两个是 Traces——某一次 run 内部发生了什么——和 AI 消耗——消耗了多少 AI 容量。dashboard 和 usage 统计的是不同人群,本来就不对账:dashboard 汇总的是你可见的 run,usage 汇总的是归属到你的 AI 调用,一次 run 可以烧掉 token 却不出现在另一本账里。

未登录时什么都不渲染——它显示 Sign in to view this content.,而不是画一张空图。

这一页有什么

dashboard:总览指标、三张高亮卡片、三张离群 run 表,以及每日 run 数与每日 token 两张图

从上往下:

区块回答什么
总览行40 runs · 494.8K tokens · 90.0% ok · avg 37.4s —— 量、花销、成功率、平均时长
三张卡片最该看的那一条:失败最新 / 最贵 / 轮次最多,各自带任务原文和应用名
三张表同样三个维度的列表:最近失败的 run、最贵的 run、轮次最多的 run
两张图每日 run 数;每日 token,拆成 Tokens In / Tokens Out
汇总Top models、Top hubs,以及按应用一张表

下半部分:每日 run / 每日 token 两张图,Top models、Top hubs,以及带 runs、tokens、平均时长、成功率、最近运行的按应用汇总表

对部署的拥有者来说最有用的是按应用那张表——它是唯一一处把每个应用的 run 数、token、平均时长、成功率、最近运行时间放在同一行的地方。本次走查里它是:

应用RunsInOut平均时长成功率最近运行
todo22243K2.4K38.7s100%2 天前
observability-explorer536.5K1.9K29.8s100%4 天前
arch-qa491.1K1.5K54.1s100%8 天前
aistro4000ms0%6 天前
aside4107.3K1.8K22.6s100%5 天前
chain-explorer19.3K17938.3s100%14 天前

有 run 但零 token、零时长、0% 成功的应用(上面的 aistro),是「这条 run 根本没走到模型」的形状。它们正是「需要注意」卡片数的那四条。

怎么读才不会读错

「today's signal」不是今天。 总览行标着 Agent runs · today's signal,但它下面的图跨了十三天(2026-08-04 → 08-16),按应用表的「最近运行」列甚至回溯到两周前。把这行读成你可见范围内的当前状态,不是 24 小时窗口。

卡片说「failed」,表里写的是 interrupted。 卡片是 4 run(s) failed,而那四行的状态列全部是 interrupted——同样四条 run,两个名字。不要去找一个单独的 failed 状态,这个部署上没有。

图比表来得晚。 表已经填满之后,两张图还会显示 Loading data... 好几秒(走查里超过 6 秒)。首屏空白的图表区是在加载,不是 0。

三张离群表在右侧被裁。 1440px 视口下,失败 / 最贵 / 轮次三张表的 APP 列会被从中间切断。信息是在的,只是表的列数超过了卡片宽度——把窗口拉宽,或者从上面那张卡片里读应用名。

你能看到哪些 run

这个区和 traces 读同一份 run 索引、过同一道闸,而这道闸有两条轴:

  • 你自己的 run 恒可见。 那一段就是你自己 DID Space 里的数据,隔离是物理的,不是一个过滤条件。
  • 看一个应用的全部 run,需要你在那个应用实例上有 membership(同实例 admin/owner),逐应用判定。

此外没有别的入口。在应用 A 上是 owner,在应用 B 上什么也不给。

这条规则比这一页年轻。 2026-08-18 之前,authorizedView 把任意应用上的 owner/admin 字符串映射成一个不带应用维度的部署级 privileged 标志,于是「某个 app 的 owner」会枚举到 每个 blocklet 的 run——包含任务原文——而同一个调用者在 usage 管理面上却会被逐实例拒绝。 修在 ARC #4170 / PR #4269。

不需要第二个账号也能看到这两条轴在起作用——把 /traces 里出现的应用集合,和 /usage/admin 的应用一览对一下。本次走查两边各 6 个,只交叠 3 个:

出现在应用说明
两边都有todo aside observability-explorer既有我自己的 run,我也管这个应用
只在 tracesarch-qa aistro chain-explorer我自己的 run,但我不管这些应用——USER 轴
只在 usage 管理面discuss-kit did-space showcase我管这些应用,但索引里没有它们的 run——discuss-kit 有 56 次 AI 调用、0 条 trace,这是仍然 OPEN 的 ARC #3207:索引读路径只看得见本 instance 的 run

看不见和不存在长得一样。 列一个你无权查看的应用的 trace,返回的是空列表而不是报错:同一个 会话里 /dev/observability/traces/places-notebook 返回 [],/dev/observability/traces/todo 返回 22 条。

它回答不了的

  • 一条 run 为什么失败。dashboard 只告诉你是哪条,原因在 trace 里。
  • 上面两条轴之外的 run 的任何情况。它们对这些总数没有贡献,页面也不会告诉你它们存在。
  • 金额。这里每个数字都是 token 数或时长;这个 blocklet 没有任何一页把 token 折算成货币。

会碰到的失败态

现象它实际上是什么
Sign in to view this content.不是错误——dashboard 没有匿名投影
图表卡在 Loading data...头几秒正常现象,表会先填好
某个应用有 run 但 0 token / 0ms / 0%那是没走到模型的 run,即 interrupted 那批
总览写「today」,图却是两周已知的标签不符;数据是整个可见窗口
离群表右边一列被切断该视口下表比卡片宽