复杂 Agent 调试的 A/B 验证法

方法内核

在复杂系统调试中,不把最响的日志直接当成问题定义,而是用 A/B 实验把“看起来有效”的修复推进到“因果上站得住”。浮之静在 Noi 插件运行时调试中发现,Receiving end does not exist 和 handler 不可用只是事故现场的声音,根因在原生 runtime messaging 被兼容层覆盖,以及 options 页面打开前后台运行时尚未就绪。

适用场景

  • Agent runtime、浏览器插件、Electron、长链路 UI 初始化等多组件系统。
  • 日志很多但页面白屏、局部测试变绿却端到端仍失败的场景。
  • sleep 看似有效,但需要把时间等待转化为明确就绪状态的场景。

具体步骤

  1. 先定义用户实际失败现象,而不是只追报错日志。
  2. 列出可能断点:资源加载、后台运行时、消息通道、存储、页面脚本、兼容层。
  3. 设计只改变一个关键条件的 A/B 实验。
  4. 把有效的 sleep 翻译成可观测状态,例如后台是否启动、连接层是否可用。
  5. 用真实 smoke test 证明整条链路闭合,再保留单元测试作为局部约束。

原文

浮之静 - Noi 编程实战:Fable 没那么强,GPT 也没那么弱 - 3236165275-2247492169_1