Trace 与 Span(追踪与跨度)

追踪一次请求完整链路的两个基本单位:trace 是一条链路,span 是链路中的一个环节。

生产方式:人写签发:晓黎学习复核:2026年9月21日被 0 个词条引用

一句话定义

Trace = 一次完整请求的调用链路;Span = 链路中的一个环节,记录该环节的起止时间、属性与状态。

结构关系

trace: 一次 Agent Run
├── span: turn/1
│   ├── span: prompt-assembly        12 ms
│   ├── span: llm-request           840 ms
│   └── span: tool/call read_file    45 ms
└── span: turn/2
    ├── span: llm-request           620 ms
    ├── span: tool/call edit_file    30 ms
    └── span: approval-request    12000 ms   ← 瓶颈在这里

每个 span 通过 parentSpanId 构成树形结构。

为什么 Agent 系统特别需要它

Agent 的一次任务是多环节、多层的:Run → Turn → Step → Tool Call。只看总量指标无法定位问题。

只看指标加上追踪
平均延迟 15 秒其中 12 秒花在审批等待
失败率 8%集中在某类工具的某个参数错误
成本上升 30%某个环节的模型调用次数异常

关键字段

字段作用
traceId关联同一请求的所有 span
spanId / parentSpanId构成层级
startTime / endTime计算耗时
attributes关键标识(工具名、模型名、token 数)
statusok / error

设计要点

  1. 采样策略:全量记录成本高。常见做法是保留错误 trace 的全量数据,成功的按比例采样。
  2. 属性规范化:attributes 只放可聚合的标识,不放长文本。
  3. 跨进程传播:子 Agent 在别的进程或机器上时,traceId 需要显式传递。
  4. 与日志配合:追踪定位「慢在哪里」,日志回答「为什么慢」。

与日志、指标的区别

维度日志指标追踪
粒度单条事件聚合数值单次链路
回答发生了什么有多少慢在哪里
存储成本高低中

三者互补,缺一不可。

相关

  • OpenTelemetry(OTel) — 追踪的标准实现与传输协议
  • 第 17 讲 可观测性
  • LogQL — 日志查询语言,与追踪配合定位问题

互链

链接来自概念卡正文里的双链,编译时能解到本期词条集的才成为站内链接。

反链(0)

还没有其它词条引用这一页。

出现在哪些课时里(0)

判据与「课时正文里能不能点出来」是同一个:那一节确实提到了它。点课时走当前页跳转, 它是导航,不是词条链接。

还没有课时讲到这一条。它是词条跑在课程前面的那一部分,不是错链。

关联图

只画这一条与它直接相连的词条,边与上面两区同源。可拖拽、可缩放,点节点是新标签。

出处

路径是本地知识库(Obsidian 库)里的位置,正文与概念卡逐字对应。

  • 概念卡原文Trace 与 Span(追踪与跨度)03_RESOURCES/概念/tracing-span.md
  • 所属知识地图栏目概念页索引 · 可观测性与可靠性03_RESOURCES/概念/Index.md
  • 正文引用的知识库笔记第 17 讲 可观测性02_AREAS/AI开发/Harness Engineering/Agent Harness 课程/17-可观测性:如何知道系统正在发生什么.md

编译入库:2026年11月2日。词条由知识库编译而来, 修正要回到概念卡改,再重新编译。