返回资讯中心
外部精选
软件工程
#社区热议

开发者撰文主张:AI 生成的代码也必须经过人工审查

来源标题:I Read the Clankers' Code

一名开发者发文表示,即使代码由 AI(clanker)编写,也应亲自审查,因为 PR 上署的是自己的名字、出错时被问责的也是自己。他只接受在无关紧要的自用玩具项目上让 AI 全权代写,其余场景坚持看代码,并强调工程质量关乎个人职业声誉。

Hacker Newscharles_f2026/11/2 · 昨天18 分钟阅读

以下正文由 AI 翻译自 Hacker News(原文版权归原站所有),可能存在偏差,重要内容请以原文为准。

2026年10月24日 | Llm | Coding | Clankers | Gpt

你不该去看代码,让clanker自己干它的活就行了。

PR上挂着我的名字,出了问题半夜被叫起来的人是我。再说了,我加入这整件事,是因为我其实挺喜欢代码的,不管是谁、是什么写出来的,我都真心好奇想看看。所以这代码我得审。

说实话,如果我是在做一个只有我自己用的小玩具,又不想花时间,我会让clanker自己搞定。而且我绝对不会把自个儿那双干干净净、娇贵的小手,伸进那堆由它那些被诅咒的梦境搞出来的、Rube Goldberg式的混乱里去——它以为那就是我要的东西。

除此之外的一切,我都想看看代码。

我从自己工程的质量里获得很多自豪感[^5],也就是大家常说的“手艺”。那是我身份的一部分。找到一个在简洁、可靠、安全、成本、性能、可维护性等等之间取得平衡的方案。我讨厌自己在生产环境搞砸东西。那是个人失败,我会觉得羞耻,就像名誉上的一块污点。我讨厌自己发布垃圾、发布跑不起来的东西。我也讨厌别人的东西崩了,而我那张又大又丑的脸却挂在他们PR旁边,还配着一个傻乎乎的“👍 LGTM”。当有人因为我搞坏了某个软件而在半夜被叫醒,我自己也会睡不着。那是最糟糕的感觉。

这种做法和盲目信任clanker写的代码是不相容的。代码可能95%的时候是能用的¹。它可能还不错,甚至可能比你自己写的还好。但95%不是100%。它会漏掉东西。它没有任何好奇心。它不像人那样学习。它不会停下来提问。它的上下文窗口有限。它的整个训练就是在最大化一个分数。它唯一的目标就是完成任务:就像一只正在训练的小狗,它往你脚边吐出一坨嚼了一半、全是口水的东西,勉强能对上你给的prompt。然后它开心地摇着尾巴,用圆溜溜的眼睛看着你:“看,我把事做了,你现在会爱我了吗?”你工作的代码库越大,它引入垃圾的概率就越高。然后这些垃圾会累积,在它那些更年长、更不 sophisticated 的同胞吐出的恐怖之物上继续搭建。

哦,它写代码是快!它写得比我快得多得多。而且大多数时候(经过审查之后),它的代码比我自己的还好。而且它只用零头的时间就能做到。它有用。它是个很酷的工具。我不是说“别用它”。我是说:只要你的名字在PR上,只要你的pager在on-call轮值表里,那它构建的代码就是你的,你就应该读它、理解它。

到了这个阶段,我们都有战斗故事:某一次clanker以一种独一无二的爆炸性、壮观的方式搞砸了。你让它自由活动得稍微久了点,它就疯了。优化把维持生命级别的组件给删了。“别碰这个”的代码被碰到了 oblivion。库被粗心地拉进来。它沿途发明出来的功能。单元测试被改到能通过。大量代码被加进来盖住根本到不了的边界情况。还有那代码。你看过那代码吗?那是一种只靠“加”来构建的代码。成千上万又成千上万的任务专用单元测试,给你100%覆盖了错误的条件。函数已经被实现过14次了,还在重新实现。冗余到处都是。每一行代码上都顶着没用的注释。Alexandrian 级别的错误文档,没人会去读。然后它崩了,你问它为什么,它扯出一套根本说不通的root cause analysis,那种笃定劲儿就像一个4岁小孩坚称蓝狗确实存在。

让另一个agent去审查第一个agent的代码:更多测试。更多边界情况。你有没有想过,如果那一刻有个Higgs boson翻转了那个bit会怎样?让它检查性能:你说得完全对,我忘了那个,让我加点代码来加性能。如果你让clanker在你的代码库里自由游荡,它干的就是这些。通常没那么戏剧化。通常都是更简单的问题。它主要靠“加”来工作,而且永远局限于手头这个即时任务:让我加代码。写更多代码。这儿代码,那儿代码,到处都是代码。所有这些加起来就是垃圾。然后它又在垃圾上面继续搭。

但你不再关心代码质量了,对吧。反正只有clanker会碰它,对吧?我关心。因为我得审代码,就像我刚说的。如果代码变成一团我再也看不懂的热乱,我就没法好好审,我不能让代码质量滑坡。

好吧,但那听起来像用户的问题:你prompt写得烂,还怪到LLM头上。

靠,我忘了加一句“你是一位杰出的principal 10x engineermaxxer,永不失败,绝不犯错,还会double-check你的东西”。我跟clanker之间的所有那些问题,也许都能用堆积如山的精心crafted的prompt补上²。也许未来区分开发者的就是这个:每个人都有自己秘制的酱料和香料配方,让自家的clanker成为最好的clanker。我只是个又老又酸的家伙。我靠代码拿了20年工资,而且我挺擅长的。也许我攒了点credit,可以主张我已经认真努力地把这个TOOL塞进我的工具链里了,而我目前的结论是:这东西已经在那儿好几年了,它给了我理由不去盲目信任它。

秘制香草和香料在工程里不够用。我们需要形式化的流程,以及经过验证的、可重复的控制机制,来强制保证这些工具产出物的质量。这些还不存在。也许有一天会出现,但到目前为止还没有³。在那之前,我不会一头扎进去盲目相信。如果你自认是个软件工程师,你大概也该先缓一缓。

(原文较长,此处译出前 6000 字,完整内容请点「打开原文」。)

正文由 探How 从来源站点 RSS 同步,内容未经改写;遇到排版缺失或需要图片、视频时请以原文为准。

打开原文
去社区讨论 →