Agent Interview开始回答
Agent Runtime高频工程题进阶建议回答 4 分钟

如何为 Agent 设计可观测性、Tracing 和故障定位?

核心结论

生产级 Agent 的可观测性,不是多打几行日志,而是把模型决策、Tool 执行、状态变化与外部副作用串成一条可检索、可回放、可比较的执行轨迹。

系统结构

把问题放回 Agent 的执行流程中理解。

一次 Agent Task 的 Trace 结构同一个 trace_id 串联模型决策、Tool 执行、Observation 与 State Transition。
User Goal
Model Decision
Tool Call
Observation
State Update
Final / Next Action
↺ 每个节点形成 Span;父子关系保留“为什么发生下一步”的因果链
trace_id / span_idstate_versionerror_typetoken / latency / costreplay / alert

关键判断

最终回答只是整条执行轨迹的最后一个节点

Agent 是多步系统。最终结果错误,根因可能是计划选错、检索缺失、Tool 参数错误、Observation 被误读,或者状态更新遗漏。如果只保存输入和最终输出,只能知道任务失败,却无法解释从哪一步开始偏离。

Trace 必须串联决策、执行和状态变化

一次任务应有全局 trace_id,每次模型调用、Tool Call、检索、审批和状态写入作为 Span。Span 需要记录父子关系、state_version、结构化错误、重试语义、Token、延迟和成本,让团队可以还原系统当时看到了什么、为什么采取下一步。

排障要寻找 first upstream failure

最后一个报错往往只是连锁反应。应沿 Trace 回溯,找到第一个破坏正确轨迹的节点,例如关键检索缺失、Tool Timeout 被错误当成成功、或 State reducer 丢失外部资源 ID。修复这个上游失败点,才能避免后续症状重复出现。

深入解析

为什么普通日志不够

普通服务通常围绕一次请求观察状态码、延迟和返回值,但 Agent 的结果可能受到十几个中间步骤影响。最终回答错误,根因可能来自 Planning、检索、Tool 参数、Observation 解析或 State 更新。只保存输入和最终输出,只能确认“失败了”,无法解释“从哪一步开始偏离”。

一条可调试的 Agent Trace 应该记录什么

Trace 不是把日志数量翻倍,而是建立因果关系。一次任务使用统一的 trace_id,模型调用、Tool Call、检索、审批和状态更新分别形成 Span,并通过父子关系串联起来。

建议把下面这些字段作为 Agent Runtime 的基础观测协议。
层级关键字段要回答的问题
Task Tracegoal、user、status、total_cost、total_latency整次任务是否完成,代价是多少?
Model Spanmodel、prompt_version、state_version、token、decision模型当时看到了什么,为什么选择这个动作?
Tool Spantool_name、args、observation、error_type、retryable工具是否成功,失败能否重试?
State Eventfrom_version、to_version、changed_fields哪些事实发生变化,并触发了下一步?
Side Effectresource_id、idempotency_key、business_status真实业务系统是否已经产生副作用?

故障定位:先做轨迹分层,再找第一个上游失败点

  1. 确认最终环境状态,而不是只相信 Agent 自己声称“完成”。
  2. 沿父子 Span 回溯,定位最后一个正确节点和第一个异常节点。
  3. 判断异常属于 Planning、Retrieval、Tool、State、Policy 还是业务系统。
  4. 修复上游根因,并把对应 Trace 脱敏后加入回归测试。

一个成熟的排障结论不应该是“模型偶尔会错”,而应该是“订单查询 Span 超时后,State reducer 仍把步骤标记为成功,导致后续退款动作在缺少 order_id 的状态下继续执行”。

更接近生产级的故障描述

让 Trace 进入持续改进闭环

可观测性不应只服务事故发生后的人工排查。生产 Trace 可以经过脱敏和裁剪,转成可回放 Case、离线 Eval 数据和发布门禁。这样每个真实事故都会变成一条永久测试,而不是修完一次就消失。

  • 线上失败自动进入 failure taxonomy,统计最常见的上游失败类型。
  • 关键 Trace 支持 Replay,用相同输入比较不同 Prompt、模型或 Runtime 版本。
  • 发布前同时检查任务成功率、Tool 正确率、步骤数、成本、延迟和人工接管率。
普通日志排错与 Agent Trace 排错普通日志说明发生了什么;Agent Trace 还要解释这些事件如何沿状态和决策链产生因果关系。
维度普通日志Agent Trace
组织方式按服务或时间输出零散事件一次任务使用 trace_id,步骤使用 span_id 串联
关注对象请求、异常、状态码和文本消息Model Decision、Tool Call、Observation、State Transition 和副作用
故障定位依赖关键词搜索与人工拼接上下文沿父子 Span 回溯 first upstream failure
状态解释通常只看到某一时刻的字段值保存 state_version、前后差异和触发下一步的事实
持续改进事故关闭后日志通常不再使用失败 Trace 可脱敏回放,并进入 Eval 数据集和发布门禁