Technical Guide
21. 可观测性:看清一次 Agent 为什么失败
用 tracing、run events、metadata 和日志看清一次 Agent 运行过程,而不是只看最终回复。
Agent 失败经常不是最后一步失败
最终回复不好,原因可能在很早之前:
搜索结果差
网页没抓到正文
工具参数错
子 Agent 跑偏
模型上下文被噪声淹没
所以只看最后回答没有用。
DeerFlow 的 tracing 目录
相关源码:
backend/packages/harness/deerflow/tracing/
能看到:
factory.py
metadata.py
runtime 里也有 events store、stream bridge、runs store 等模块。
这些共同决定你能不能看清一次 run。
应该观察什么
一次 Agent 任务至少要看:
输入目标
模型调用
工具调用
工具返回
中间事件
最终输出
文件产物
错误堆栈
如果有 tracing 平台,还要看每一步耗时和 token 消耗。
常见排查顺序
不要直接改 prompt。
先按这个顺序排:
配置是否读到
模型是否调用成功
搜索是否返回可用资料
工具是否执行成功
中间事件是否正常
最终报告是否基于证据
这一篇你要记住
可观测性不是上线以后才需要。
只要你开始做复杂 Agent,tracing 和事件记录就是开发工具。
下一篇专门看一次任务为什么失败。
一次 run 应该留下什么
比较理想的记录包括:
run id
thread id
用户输入
模型调用
工具调用
工具返回
生成文件路径
错误堆栈
耗时和 token
没有这些信息,排错只能靠猜。
metadata 的价值
tracing/metadata.py 这类文件通常负责把运行上下文整理成可追踪信息。
metadata 不只是附加信息。
它能帮你回答:这次任务用的是哪个模型、哪个用户、哪个配置、哪个 run。
开发阶段就要开观测
不要等上线后才接 tracing。
复杂 Agent 的开发阶段,tracing 就是调试器。