可观测性与事件模型

多 Agent 平台的追踪、事件和指标设计。

缺乏追踪能力,多 Agent 平台基本上难以维护。你需要记录的不仅是最终答案——每一次路由决策、消息、工具调用、交接、状态变更、审批、失败和重试都需要记录。

事件模型

TypeScript
export type AgentEvent = {
  id: string;
  traceId: string;
  spanId: string;
  parentSpanId?: string;
  sessionId: string;
  runId: string;
  taskId?: string;
  actor: string;
  type: AgentEventType;
  payload: unknown;
  timestamp: string;
  schemaVersion: string;
};

推荐的事件类型

类型含义
session.started会话开始
workflow.node.enter进入工作流节点
agent.message.createdAgent 生成消息
agent.task.assigned任务已分配给 Agent
tool.call.started工具调用开始
tool.call.completed工具调用完成
handoff.requested发起交接
handoff.accepted交接被接受
blackboard.item.created共享状态写入
approval.requested请求审批
approval.granted审批通过
verifier.issue.found验证器发现问题
loop.round.completed优化循环迭代完成
budget.exceeded预算耗尽
session.completed会话结束

指标

指标含义
任务成功率成功任务的比例
交接循环率出现交接循环的会话比例
验证器拒绝率验证器拒绝的频率
平均 Agent 深度平均调用深度
工具失败率每次调用的工具错误率
每成功任务成本分摊到成功任务上的成本
人工审批延迟审批队列等待时间
上下文压缩比压缩有效性

追踪界面建议

将每个会话渲染为一棵树:

Text
会话
├─ 规划器
│  └─ 计划.已创建
├─ 搜索 Agent
│  ├─ 工具.网络搜索
│  └─ 结果.摘要
├─ 代码 Agent
│  ├─ 工具.读取文件
│  ├─ 工具.编辑文件
│  └─ 补丁.已创建
├─ 测试 Agent
│  └─ 测试.失败
├─ 代码 Agent 重试
└─ 审查者
   └─ 已批准

最小可行流水线

  1. 首先将所有事件写入仅追加的 JSONL 文件。
  2. 将关键字段镜像到 Postgres / ClickHouse。
  3. 使用 traceId / spanId 进行树形渲染。
  4. 对消息和工具调用中的敏感字段进行脱敏。
  5. 最终接入 OpenTelemetry 或你自己的可观测性平台。