← 返回文章档案 开源项目拆解
Agent Skills 工程化实践 · 第 05 / 06 篇

Agent Skills 工程化实践 05:调试不要靠猜,架构也要能被验证

从 red-capable feedback loop 出发,串起 diagnosing-bugs、prototype、codebase-design 和架构健康检查。

先建立一个会变红的信号

diagnosing-bugs 最有价值的约束是:没有 tight、deterministic、fast、agent-runnable 的 feedback loop,就不要先开始猜原因。

这个 loop 必须驱动真实 bug path,并断言用户描述的 exact symptom。一个只检查“命令没有报错”的脚本不够;它可能一路走了错误路径,却因为没有断言而显示绿色。

可用的 loop 可能是 failing test、curl script、CLI fixture、headless browser、captured trace replay,或者一个只启动系统最小子集的 throwaway harness。工具不是重点,重点是修复前它真的会 red,修复后它真的会 green。

六个阶段,避免把阅读当成诊断

完整的 diagnosis loop 可以压缩成:

建立 loop → reproduce → minimise → hypotheses
→ instrument → fix + regression test

先让 bug 稳定出现,再把输入、caller、config 或 data 一次删除一个,直到剩下的每个元素都是 load-bearing。最小 repro 会缩小 hypothesis space,也会成为之后的 regression test。

在测试假设前,先列出 3–5 个 ranked、falsifiable hypotheses,并为每个 hypothesis 写 prediction。instrumentation 也必须服务于某个 prediction,使用唯一 prefix,结束时清理。这样 debugging 不会退化为“把所有东西都 log 出来再 grep”。

什么时候该先做 prototype

有些问题不是 bug,而是我们还不知道某个 state model、business logic 或 UI shape 是否成立。这时直接实现 production code 会把未经验证的设计变成长期负担。

prototype 用 throwaway code 回答一个 design question:logic/state 使用单个可分享 HTML,UI 使用多个可以切换的 variation。它应该 trivial to run、不做 persistence、不追求 polish,并在每次 action 后完整展示 state。

prototype 的完成标准不是“看起来像产品”,而是让团队做出一个具体判断。验证后的 decision 回到真实 code;throwaway implementation 本身不要悄悄升级成 production foundation。

架构健康:从一次 bug 反推 seam

如果 bug 需要多个 caller 才能复现,但现有测试只能触碰某个很浅的 unit,问题不一定是“测试写得不够多”,也可能是 codebase 没有正确的 seam。

codebase-design 提供了一组共同词汇:让 interface 变小、implementation 变深,用 seam 隔离 variation,并用 deletion test 检查 complexity 是被集中还是仅仅被移动。它帮助我们讨论 module shape,而不是用含糊的 component/service/API 代替设计。

improve-codebase-architecture 则负责 survey:扫描近期 hot spots,寻找可以 deepening 的 candidate,生成带 Before/After diagram 的 report,再等待用户选择要探索的方向。它不是自动 rescue,也不应该在用户选择前预先设计新 interface。

调试后的复盘

修复宣布完成前,至少重新运行 original repro、regression test 和完整的 feedback loop;检查所有 debug prefix 已清理;记录正确 hypothesis。最后再问一个更难的问题:什么架构变化本可以让这个 bug 更早被捕获?

这个问题的答案不一定要立刻变成重构 ticket,但它能把一次修 bug 的经验转化为下一次更好的 seam。Agent 越快地改代码,这种 post-mortem 越值得保留。

来源与版本

来源记录 https://github.com/upoahz/mattpocock-skills-zh 参考分支:main 参考 commit:022fcc3c99d9 核验日期:2026/8/12