返回首页

Cindy Sridharan 提出 Agent 调试方法论:先读代码是反模式,人要负责设计验证回路

  • 文章来源与定位:Cindy Sridharan 发表长文《How to effectively debug when you no longer understand the code》,以三次真实 bug 排查为线索提炼原则;Martin Fowler 在 Fragments 中转述称,Medium 标注该文为 64 分钟阅读,但“很难找到任何可以删掉的内容”。
  • 核心判断:文章的前提是“Agents are not humans”——agent 在多项能力上超过人类,应利用这些优势,而不是要求它复制人类那套在 agent 语境下可能次优的解题模式。
  • 被点名的反模式:让 agent 以“先读代码”开始调查是 anti-pattern。先读代码、再据此形成 bug 假设,应当是整个排查流程的最后手段,而不是起点;agent 应先收集关于系统行为的全部可用证据,再从代码中提出最能解释观测结果的假设。
  • 两层结构:底层是“事实”,即 agent 能找到的关于系统行为的原始数据;上层是“假设”,即 agent 基于事实做出的推断。诊断由此变成一个求解问题——在假设层中找到能同时满足底层每一条事实的那一个。
  • 对照组与信号强度:事实层数据点并不等值,其中包含会误导判断的噪声。文章的做法是先确定一个“对照组”——不呈现该 bug 的系统行为,例如触发与不触发 bug 的请求、不同构建产物、同一构建在不同环境下的表现——再把假设与信号列成表格:最有价值的信号,是只被少数假设同时满足的那些。第三步是把每条事实当作约束,逐一验证候选假设。
  • 人的位置没有消失:在文章记录的三次排查中,agent 完全有能力自行定位根因,但它没有这样做——延迟 bug 的对照组是人要求之后才建立的。作者的结论是,在 agent-native 环境里真正稀缺的是设计这类验证回路的能力:挑选对照组、设定约束、否决未被验证的假设,而这些不一定要求人读懂被验证的代码。
  • 对系统设计的连带影响:人类需要更少的数据,现有的聚合、可视化等抽象都是为此设计的;agent 需要更多原始数据,其优势在于高速处理大体积数据。因此“让仪表盘对人有用”的聚合,往往恰好破坏了 agent 需要的信号——更多日志意味着 agent 有更多可供推理的原料。 🔗 Martin Fowler: Fragments: October 21 | Cindy Sridharan 原文