Bug 还没复现,Agent 已经把代码改了 | Marina Current
返回文章列表

Bug 还没复现,Agent 已经把代码改了

原版 Skill 很会查困难 Bug,改造版补上了真实 Agent 工作里更容易出事的部分:什么时候该走完整流程、用户是否授权修改,以及证据不完整时怎么继续。

直接回答原版教 Agent 严谨地查困难 Bug;改造版进一步决定什么时候该查、能不能改,以及如何安全处理日志、HAR 和不完整证据。

Agent 调试最像魔术的时刻,是它刚看完报错,三十秒后就告诉你:“根因找到了。”

然后改三个文件,补一个测试,顺手说问题已经解决。

唯一缺少的步骤是:那个 Bug 从头到尾都没有被复现过。

这也是 diagnosing-bugs 需要改造的原因。原版在技术上已经很强,问题不在于步骤太多,而是 Agent 进入真实项目后还要判断:什么时候需要重流程,什么时候可以直接处理,以及用户到底有没有让它改。

原版最强的部分被完整保留

Matt Pocock 的原版 有一条很硬的纪律:先建立一个能稳定观察故障的反馈回路,再谈根因。

这个判断是对的。

没有复现,你就不知道补丁修的是用户看到的问题,还是旁边另一个刚好也报错的东西。没有同一个判定信号,修改前后也无法比较。

反馈回路、最小复现、可证伪假设、定向探针和回归验证因此全部保留。这些不是原版的负担,是它最值钱的部分。

调整发生在它进入日常工作以后的适配方式。

第一处改动:不是每个 Bug 都值得开庭

原版是一套为困难 Bug 设计的强纪律流程。可 Agent 每天遇到的不全是困难 Bug。

编译器已经指出具体类型错误,失败断言已经暴露错误条件,或者用户已经知道修法,只是让你执行。这些场景还要求先列五个假设、建立完整实验,很容易把严谨做成仪式感。

改造版会先分类。

明显错误走短路径,直接说明证据,再按用户要求处理。只有间歇性故障、远程环境问题、性能回退、修过又复发,或者当前原因不明时,才进入完整诊断循环。

原版保证困难 Bug 不被草率处理;改造版再加一层路由,避免简单问题被过度处理。

第二处改动:复现不了,也不能原地装死

理想状态当然是本地一条命令稳定复现。但真实问题经常只在生产环境、某个账号、某段网络条件下出现。

如果把“没有本地复现”直接等同于“不能继续”,Agent 最后只会把问题退回给用户。

改造版允许继续缩小证据范围:重放真实请求,检查日志样本、HAR 或 Trace,提高偶发问题的触发频率,或者提出最小的临时观测需求。能确认到哪一层,就写到哪一层。

它可以说“这是当前最受支持的假设”,但不能把这句话偷偷升级成“根因已经确认”。

这点对 Agent 很重要。它们通常不怕信息不够,怕的是自己显得没有答案。结果就是把最顺眼的解释写得像事实。

证据不完整时,正确动作不是编一个完整结论,而是把缺口缩小到下一步可以验证。

第三处改动:会修,不代表有权修

这是原版没有重点解决、却很容易在真实 Agent 工作里出事的一层。

用户说“帮我诊断”,意思是找原因,不是默认授权修改代码。更不包括提交、推送、创建 Issue、修改线上系统,或者往生产环境加埋点。

所以改造版会先判断任务边界:只诊断,还是诊断并修复。

只诊断时,项目文件和外部系统保持只读。可以读代码、跑已有测试、看日志和使用已有复现,但不能顺手新建测试、脚本、临时 Harness 或埋点。

如果复现必须新增文件或观测代码,Agent 要先说清楚准备创建什么、放在哪里、什么时候清理,等用户批准以后再动。这样“只诊断”才不是一句口号。

日志、HAR、Trace 和请求样本也不等于可以直接贴进对话或 Issue。Cookie、Authorization Header、Token、个人信息和无关客户数据必须先移除,只保留能证明判断的最小片段。

诊断需要更多证据,但更多证据不等于可以扩大权限或扩大暴露面。

即使允许修,也要先看工作区里有没有别人的未提交修改。修自己的 Bug,顺手覆盖用户正在做的东西,这种“成功”没有意义。

两个版本放在一起,差异其实很直接

原版重点 改造版增加了什么
为困难 Bug 建立严格反馈回路 先判断是否真的需要完整流程
没有可靠信号就不草率下结论 无法完整复现时,允许基于分层证据继续推进
围绕技术诊断和修复展开 明确区分只读诊断与允许修改
用实验排除错误假设 同时保护脏工作区和外部写入边界
允许使用日志、HAR 与 Trace 默认本地处理,引用前先脱敏
完整保留调查过程 默认只交付症状、原因、证据、行动和不确定性

所以它不是一个“更精简的 Matt Pocock Skill”。精简只是表面。

真正的变化是,它从一套困难 Bug 的调试纪律,变成了可以放进日常 Agent 工作里的诊断层。技术上保持严谨,行动上知道分寸。

diagnosing-bugs 直接改造自 Matt Pocock 的 MIT 开源版本,来源标记为 OPEN-SOURCE ADAPTATION

公开说明这篇文章来自真实工作。客户信息、数据和未公开的实现细节已经移除。

继续阅读

Prompt 很难复用,所以我把它做成了 Skill

阅读下一篇