Agent Demo 通常只关心“能不能跑通”,但工程系统必须关心“为什么失败、哪里慢、哪个 Skill 常出错、任务是否完成”。没有日志、监控和评估,Agent 系统就是黑盒。
一次调用要记录什么
推荐记录:
request_id session_id user_id skill_name skill_version input output_status error_type latency_ms retry_count timestamp敏感信息要脱敏或不记录明文。
调用日志和决策日志
调用日志记录 Skill 执行情况,决策日志记录为什么选择这个 Skill。
{"selected_skill":"web_search","reason":"用户询问最新信息"}很多问题不是执行失败,而是选错 Skill,所以决策日志很重要。
监控指标
常见监控指标:
调用次数 调用成功率 失败率 平均耗时 P95 耗时 超时率 空结果率 错误类型分布 重试次数 调用成本这些指标能帮助发现线上问题。
评估和监控的区别
监控关注系统运行是否稳定,评估关注能力效果是否好。
例如搜索 Skill 不仅要看成功率,还要看结果相关性、来源可信度和新鲜度。
不同 Skill 的评估指标
搜索 Skill:结果相关性、来源可信度、结果新鲜度、空结果率。
RAG Skill:召回率、top-k 相关性、引用准确性、幻觉率。
文件解析 Skill:解析成功率、文本完整性、表格识别准确率。
邮件 Skill:草稿成功率、收件人识别准确率、误发送率。
任务级评估
Skill 调用成功不等于用户任务成功。还要看:
最终任务是否完成 答案是否准确 用户是否满意 是否需要人工修改 是否多次重试Agent 系统应同时评估 Skill 层和任务层。
测试集设计
可以为每个 Skill 准备正例、反例、边界例和异常例。
例如搜索 Skill:
正例:用户询问最新新闻,应调用 web_search。 反例:用户要求翻译文本,不应调用 web_search。 边界例:用户问题含糊,需要追问。 异常例:搜索结果为空。面试中怎么回答
可以这样回答:
我会把每次 Skill 调用记录成结构化日志,包括 request_id、skill_name、version、输入、状态、错误类型、耗时、重试次数等,同时记录 Agent 为什么选择该 Skill。监控上关注调用次数、成功率、失败率、P95 耗时、超时率、空结果率和错误分布。评估上按 Skill 类型设计指标,比如搜索看相关性和来源可信度,RAG 看召回和引用准确性,文件解析看文本完整性。最后还要评估任务是否真正完成。
小结
这篇文章的核心是:Skill 如何做日志、监控和评估?不是一个孤立概念,而是 Agent 工程化中必须讲清楚、设计清楚、验证清楚的一部分。
下一篇继续讨论:Skill 与 RAG 的关系。