/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.,而不是画一张空图。
这一页有什么

从上往下:
| 区块 | 回答什么 |
|---|---|
| 总览行 | 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、平均时长、成功率、最近运行时间放在同一行的地方。本次走查里它是:
| 应用 | Runs | In | Out | 平均时长 | 成功率 | 最近运行 |
|---|---|---|---|---|---|---|
| todo | 22 | 243K | 2.4K | 38.7s | 100% | 2 天前 |
| observability-explorer | 5 | 36.5K | 1.9K | 29.8s | 100% | 4 天前 |
| arch-qa | 4 | 91.1K | 1.5K | 54.1s | 100% | 8 天前 |
| aistro | 4 | 0 | 0 | 0ms | 0% | 6 天前 |
| aside | 4 | 107.3K | 1.8K | 22.6s | 100% | 5 天前 |
| chain-explorer | 1 | 9.3K | 179 | 38.3s | 100% | 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,我也管这个应用 |
| 只在 traces | arch-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」,图却是两周 | 已知的标签不符;数据是整个可见窗口 |
| 离群表右边一列被切断 | 该视口下表比卡片宽 |