先把挽具搭好,再让 Agent 干真活 —— Matthew Boston

HN LLM Code Research 2026-09-30T06:22:23.749798

Agent 只是在猜

模型吐出的,是「最像那么回事」的下一段代码。像那么回事,通常离正确不远,而「不远」恰恰是麻烦所在。人写下一行看似合理的代码时,心里总有点不踏实,会回头再核对一遍。Agent 没有这种不踏实。它只认你给它的信号。如果唯一的信号是「文件写好了」,那在 Agent 看来,活就干完了。

所以对任何一个代码仓库来说,问题都是:Agent 写完一行之后,靠什么告诉它这行是错的?如果答案是「明天让 reviewer 看」,那这个循环要一天才转一圈,而在这期间 Agent 会继续往上摞十来个猜测,谁都没察觉。挽具(harness)就是那套检查机制,让 Agent 在迈出下一步之前,把「猜测」变成「已验证的结论」。

每一层能拦住什么

挽具里的每道检查拦的是不同类别的错误,而便宜的检查要排在前面。

Linter 拦的是粗心大意。 没用到的变量、被覆盖的名字、空着没有函数体的 if、写了 80 行的方法。这些单拎出来都不算 bug,但它们是「猜」留下的尾气。只要及时告诉 Agent,它立刻就不再犯。本站用的是 RuboCop,别处可以用 eslint 或 clippy。跑一遍只要几秒。

查看原文