Agent 测试与可观测性

笔记/AI编程/Agent Harness工程/Agent 测试与可观测性

背景与动机#

Agent 系统很难只靠“人工试一下”保证质量。因为它包含模型输出、工具调用、环境状态和多轮决策,问题可能出现在任何一层。

测试和可观测性的目标是:当 Agent 做错事时,能知道错在哪里。

img
img

三层测试#

1. 工具单测#

工具单测不需要模型参与,只测试工具本身:

  • 输入是否合法。
  • 权限是否生效。
  • 错误是否清楚。
  • 输出 schema 是否稳定。

工具越可靠,Agent 决策越容易恢复。

2. 集成测试#

集成测试验证一次短任务:

给定 Agent 定义
给定工具环境
发送一个任务
检查是否调用了预期工具
检查最终输出是否符合格式

它不追求覆盖所有自然语言变化,而是覆盖关键流程。

3. 端到端测试#

端到端测试验证完整循环:

创建会话 -> 执行多步任务 -> 工具调用 -> 状态变化 -> 最终结果

适合覆盖高价值任务,例如代码修复、文档生成、工单分诊。

日志应该记录什么#

至少记录:

  • Session ID。
  • Agent 版本。
  • 用户任务摘要。
  • 工具调用名称和参数摘要。
  • 工具结果状态。
  • 错误信息。
  • 最终输出。

敏感信息要脱敏,不要把密钥和个人数据直接写入日志。

可观测性指标#

可以关注:

  • 任务成功率。
  • 工具失败率。
  • 平均执行时长。
  • 人工接管次数。
  • 重试次数。
  • 高风险操作触发次数。

这些指标能帮助判断 Agent 是稳定变好,还是只是偶尔成功。

常见陷阱#

  • 只测试最终文本,不测试工具调用过程。
  • 日志里没有 Agent 版本,无法复现。
  • 错误信息被吞掉,只看到任务失败。
  • 测试数据过于理想,覆盖不到真实失败路径。

一次失败任务应该能复盘什么#

用户原始目标是什么?
使用的是哪个 Agent 版本?
运行在哪个 Environment?
Session 里发生了哪些事件?
调用过哪些工具?
哪个工具失败?
失败后是否重试?
最终输出是否和工具结果一致?

如果这些问题答不上来,说明可观测性还不够。

一句话总结#

Agent 测试要覆盖工具、流程和完整任务;可观测性要能回答“它为什么这么做”。

文章目录

文章目录