65 lines
2.1 KiB
Markdown
65 lines
2.1 KiB
Markdown
# 284 TraceViewer 调用链查看器
|
||
|
||
## 用途
|
||
|
||
以树显示调用链跨度,每行带耗时与时间轴条;选中跨度在下方查看属性。
|
||
|
||
## 最小示例
|
||
|
||
```go
|
||
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 虚拟化);属性面板也按可见行虚拟化,独立滚动。
|