284 TraceViewer 调用链查看器
用途
以树显示调用链跨度,每行带耗时与时间轴条;选中跨度在下方查看属性。
最小示例
var state feedback.TraceViewerState
spans := []feedback.TraceSpan{
{ID: "run", Name: "agent.run", End: 900 * time.Millisecond},
{ID: "plan", Parent: "run", Name: "llm.plan", Start: 10 * time.Millisecond, End: 210 * time.Millisecond,
Attrs: []feedback.TraceAttr{{Key: "model", Value: "opus"}}},
}
view := func(c *ui.Context) {
core.Use(c, core.Settings{})
feedback.TraceViewer(c, &state, spans, feedback.TraceViewerOptions{}).Element.Height(260)
}
ui.Render(view, 400, 300, 1)签名:func TraceViewer(c *ui.Context, s *TraceViewerState, spans []TraceSpan, opts TraceViewerOptions) DataTableView
参数
TraceSpan
| 字段 | 类型 | 默认值 | 含义 |
|---|---|---|---|
| ID | string | 必填 | 唯一标识;重复 panic。 |
| Parent | string | "" | 父跨度;不存在时作为根。 |
| Name | string | "" | 名称。 |
| Start, End | time.Duration | 0 | 相对调用链开始的偏移;需 0 ≤ Start ≤ End。 |
| Failed | bool | false | 失败。 |
| Attrs | []TraceAttr | nil | 属性键值。 |
TraceViewerOptions
| 字段 | 类型 | 默认值 | 含义 |
|---|---|---|---|
| Status | DataStatus | DataReady | 加载、失败状态。 |
| Error | string | "" | 失败说明。 |
| Version | int | 0 | 原地修改数据时递增;新切片或长度变化自动刷新。 |
TraceViewerState.Tree 保存展开、排序与选择。索引只在 spans 变化时重建;父链成环时 panic。给返回的 Element 一个高度。
状态
- 时间轴条按整条调用链的跨度缩放,位置吸附像素。
- 失败跨度:叉号图标、Danger 文字与空心时间条,不只靠颜色。
- 属性面板显示开始、耗时与全部属性。
事件
- 同 TreeTable:
Changed()选择变化。
键盘操作
- ↑/↓ 选择,→ 展开,← 收起;输入名称开头字母跳转。
限制
- 只构建可见行(TreeTable 虚拟化);属性面板也按可见行虚拟化,独立滚动。

