更多文章

AI 与开发者相关深度内容

Agent 失败复盘指南:2026 年用 5 层问题树定位根因 | 开发者实操

Agent 失败复盘不是事后追责。它要把"没调对 Prompt"这种模糊说法,拆成可复现、可定位、可修复的问题。

什么是 Agent 失败复盘?

Agent 失败复盘要回答一个问题:第一次可验证的断点在哪里。据行业观察,73% 的 AI 项目卡在"部署即巅峰",静态 Agent 在任务偏移时容易失效。复盘记录里要留下失败输入、执行轨迹、修复动作和回放结果。

5 层问题树:从 Prompt 到模型权重的排查路径

参考 OpenAI Self-Evolving Agents 的递归优化思路,我们将常见失败原因拆成 5 个可验证的层级。每层独立检查,通过后再进入下一层。

Level 1: Prompt 层

  • 检查系统提示词是否覆盖边缘案例
  • 确认用户输入是否触发歧义分支
  • 验证输出格式约束是否明确

排查技巧:用 Grader 给输出打分,记录失败样本的 prompt 版本,便于回滚对比。OpenAI 的 Cookbook 提到,把人工调优循环自动化后,迭代成本可趋近于零。

Level 2: 工具/技能层

  • 函数是否在 tool_context.py 中正确注册
  • 签名是否符合 MCP v0.2 等规范
  • 当前 LLM 是否支持 function_calling

案例:Hermes Agent 工具调用失败,常因函数未声明或缓存未清除导致。重启 Agent 并清理 ~/.hermes/cache/tools 缓存,有时能快速恢复。

Level 3: 代码/逻辑层

  • ReAct 循环是否陷入无限调用
  • 观察结果解析是否健壮(如 ast.literal_eval 容错)
  • fallback 机制是否记录日志,避免"静默失败"

技巧:给每个工具调用加 trace ID,方便链路追踪。如果 LLM 返回格式不稳定,先用正则提取关键结构,再解析。

Level 4: 知识/数据层

  • RAG 检索的文档是否相关、是否过期
  • 向量库索引是否覆盖新业务场景
  • rerank 解析失败时是否有降级策略

注意:有开发者遇到 rerank 输出 "[2,0,1]" 格式不稳定,直接 fallback 到原始顺序却未打日志,导致无法评估有效性。修复方案是先做格式容错,再记录 fallback 触发次数。

Level 5: 模型/架构层

  • 当前模型是否适合任务类型(如长上下文、多轮记忆)
  • 是否需要考虑小模型本地化替代,降低延迟与成本
  • 架构是否支持状态持久化,避免长时运行丢失 context

当任务以天为单位运行时,无状态架构容易丢失推理链。此时需评估是否引入记忆模块或状态存储服务。

实操:4 步完成一次 Agent 失败复盘

  1. 复现问题:用相同输入触发失败,记录完整日志与 trace
  2. 逐层排除:从 Prompt 层开始,每层验证通过后进入下一层
  3. 定位根因:找到第一个不通过的层级,即为问题所在
  4. 修复验证:修改后用小流量灰度测试,确认指标回升

简单问题通常 15 分钟内可定位,复杂链路建议预留 1-2 小时。

用一个真实故障流,看 5 层问题树怎么落地

假设一个 Browser Agent 本来应该去后台提交工单,结果连续三次停在确认页,没有真正写入。别先改 Prompt,按 5 层问题树拆开查。先看 Prompt 层,确认是否明确要求"提交后必须校验成功状态";再看工具层,确认提交按钮的工具签名和页面元素定位有没有变化;接着看代码层,检查重试逻辑有没有把第一次成功后的页面当成失败又点了一次;最后再看知识层和模型层,确认流程文档是否过期,当前模型能否稳定处理长流程页面。

按这个顺序查,团队不会一上来就改 Prompt。先找到第一个被证实的断点,再把修复写回测试、日志或规则文件。

适合谁,不适合谁

最适合引入 5 层问题树的团队:已经有日志和 trace,但每次出问题仍然只能靠经验猜。

暂时不适合做完整复盘体系的团队:连失败样本都没有沉淀,每次问题处理完就结束。这样的团队应该先把失败输入、输出和工具调用记下来,再谈分层分析。

推荐结论

失败复盘最怕一次想解决所有问题。更实用的方式是:每次只找第一个被证实的断点,把它改进成规则、测试或日志字段。连续做 3 到 5 次之后,你们的 Agent 系统会明显比只会调 Prompt 的团队稳定。

一个典型例子

比如一个工单处理 Agent,用户明明提供了正确工单号,但 Agent 连续两次都说"未找到记录"。如果团队只凭感觉,很容易把锅甩给 Prompt;但按 5 层树排查,可能是工具层接口字段名刚改过、代码层 fallback 没打日志,或者知识层仍在引用旧版工单说明。

这次故障要沉淀成一个样本:同一输入能复现,修复后能回放,下一次能自动拦住。

一份复盘记录,最好带哪些数据

如果复盘记录里只有“现象描述”和“修复完成”,下次还会重来。至少留下这些字段:

字段 示例 作用
失败时间 2026-05-12 10:03 判断是否和某次发布或配置变更有关
失败任务 提交售后工单 明确是哪条主链路出问题
首个异常点 submit_ticket 返回 403 锁定第一个断点,而不是泛泛说“失败了”
影响范围 20 次请求中 7 次失败 判断是偶发还是系统性问题
修复动作 补 token scope + 增加失败日志 把修复从“改了一下”变成可追踪动作
验证结果 回放 10 条样本,10/10 通过 防止修了但没验证

这些数据不一定公开,但内部要留。下一次排查时,先看断点、影响范围和回放结果,不用重新猜。

截图和日志,不一定公开,但一定要留

很多团队不愿意在文章或文档里放真实后台截图,这可以理解。但至少在内部复盘材料里,要留下一张失败界面截图、一个 trace 摘要,或者一段关键日志片段。

比如你可以留一句这样的观察记录:“10:03 的失败样本里,页面按钮显示提交成功,但 trace 中没有出现 write_ticket_result=ok,说明问题不在前端提示,而在工具执行链路。”这种“界面观察 + 日志证据”的组合,会比单纯说“后来查出来是工具问题”强很多。

工具推荐

用途 工具
扫 AI 动态,看新能力、新项目 RadarAI、BestBlogs.dev
看开源热度、小模型进展 GitHub Trending、Hugging Face
Agent 链路追踪与日志 LangSmith、Promptflow

RadarAI 支持 RSS 订阅,可以把每日更新推到阅读器,方便固定节奏扫动态。关于如何高效追踪行业进展,可参考 AI 行业动态追踪指南

常见问题

Q:复盘时该优先查哪一层? 从 Prompt 层开始,因为改动成本最低。如果 prompt 优化后问题仍在,再往下排查工具或代码层。

Q:如何避免复盘变成"事后诸葛亮"? 提前埋点:给关键决策点加日志,记录输入、输出、耗时、置信度。有了数据,复盘才有依据。

Q:小团队没精力做完整复盘怎么办? 先聚焦高频失败场景,用 5 层树快速过一遍。80% 的问题集中在 Prompt 和工具两层,优先解决这两层性价比最高。

延伸阅读

RadarAI 聚合 AI 优质更新与开源信息,帮助开发者高效追踪 AI 行业动态,快速判断哪些方向具备了落地条件。

← 返回更多文章