可观测性

wesgine 的观测体系:Token 用量、Run 追踪、证据链、崩溃日志与 Actor 边界。


Token 用量

细粒度查询

GET /cells/{id}/observe/token-usage

多维过滤:

参数说明
GroupBymodel / agent / session / day / tag:actor
Tags按标签过滤
Model按模型过滤
Session按会话过滤
From / To时间范围

聚合摘要

GET /cells/{id}/observe/token-summary
GET /cells/{id}/observe/token-usage/aggregate?agent=&group_by=day&days=

Run 追踪

列表

GET /cells/{id}/observe/runs?agent=&session=&limit=&offset=

详情

GET /cells/{id}/observe/runs/{runID}

工具调用追踪

GET /cells/{id}/observe/runs/{runID}/tools

Cell 统计

GET /cells/{id}/observe/stats

运行时统计快照。


Run 追踪摘要

GET /cells/{id}/observe/traces

证据链

GET /cells/{id}/observe/evidence

JSONL 流格式。逐 Run hash chain,切片后缺环无法校验。

INV-OBS-09:抬作用域到 cell:admin,按 Cell 全量不过滤。


崩溃日志

GET /cells/{id}/observe/crash-log

Hypervisor 级观测

hyp.Observe().Snapshot()                  // HypervisorSnapshot
hyp.Observe().PerCellStats(ctx, cellIDs)  // []CellStats
hyp.Observe().CrashLog(ctx)              // []CrashEvent
hyp.Observe().ProviderLatencyStats(ctx)   // []ProviderLatency
hyp.Observe().ListRuns(ctx, filter)       // []RunTraceSummary

Actor 边界(INV-OBS-08~10)

三个判据层

层执行点
SQL 谓词actorClause(internal/observe/actor.go)
无归属表runOwnedByActor EXISTS 子查询
公共 APICellObserveHandle 每个方法首参 actor string

空 actor 语义

?actor= 只对 admin token 生效。非 admin 一律取 token 里的 actor。

漏传 = 合法的跨 actor 越权读取(不报错)。

页外过滤禁止

过滤必须在 LIMIT 之内:

WHERE actor_clause AND ... LIMIT ?
-- 不是
SELECT * LIMIT ? → Go 过滤

事件环(INV-OBS-10)

事件先进 per-Run 内存环再进 wes_run_traces。

只守 SQL 那一侧 = 把最新最全的一份留在门外。

RunEventBuffer 记 owner,Snapshot 判 observe.RunVisible。


无主 Run

owner == "" → 隐藏(不是"公共")。

不属于你与不存在同返空流。


审计

方法路径说明
GET/audit/export?format=jsonl|csv&from=&to=
GET/audit/summary审计摘要

INV-OBS-09:抬到 cell:admin,不做 actor 过滤。


相关文档