四月份还发誓不用编程助手的开发者 Ankur Sethi,最近在博客上坦白:他仍在用。但方式很特别——他让 LLM 在聊天里生成代码,然后亲手把每一行敲进编辑器。为此他宁愿只有 2 倍速,而不是 10 倍速。他说,这是为了不欠下”认知债”。
问题:代理自由发挥=认知债务
Sethi 发现,让编码助手在自己的项目里自由发挥,会留下”巨额的认知债务”。他可能讨厌翻 Django 文档去搞明白怎么给网站加 tagging 功能,但他依然想从根本上理解它是怎么工作的——”一个问题无聊,不代表我愿意把对解决方案的理解整个外包给机器。”
逐行 review AI 生成的 PR 也不可取:几百行过度防御、注释糟糕、微妙错误的代码,读起来毫无乐趣,而个人项目”必须首先是好玩的”。乐趣来自过程,而非结果。
解法:让 AI 出代码,让双手来输入
他的方案近乎滑稽地低效:在个人项目的 agent 指令里写明——”我想理解进入这个项目的每一行代码。未经我明确要求,不要创建、编辑、移动、重命名或删除项目文件;把每个提议的编辑显示在聊天里,让我手动敲入;不要运行修改文件或安装依赖的命令;我是经验丰富的开发者,不要解释语法。”
效果如何?比完全不用 LLM 快(大约 2 倍),但比让机器代脑的人慢得多。换来的是:亲手敲入每一行时,大脑在构建代码如何运作、如何融入现有代码库的心理模型;遇到不懂的 API 随时停下查资料;更容易发现幻觉和糟糕的设计;顺手重构、加注释、改成自己的口味;最重要的是建立代码库的”空间地图”——改需求时清楚该动哪里,未来给 LLM 下指令也更精准。
他把它比作少年学编程时的老规矩:别复制粘贴,把示例敲进电脑,确保能运行。手动敲 LLM 生成的代码,就是同一套学习过程。
更大的担忧:行业的认知债
Sethi 说,他担心软件行业正在背上大笔认知债,很快就要偿还:”总有一天,我们将不再理解数字基础设施的很大一部分是怎么拼起来的。”他无法改变整个行业,但至少可以确保自己完全理解自己发布到世界上的软件——”除此之外都是职业失职。”
社区反响
这条 364 分、302 条评论的帖子观点分裂。有人刻薄地称之为”戒不掉 LLM 代码生成瘾的人的新式祈祷”;也有人反唇相讥说这是”放不下代码的宗教瘾”。中立者指出,这正是对代理编程新问题的对症下药——上下文丢失。也有质疑:如果测试套件、质量评估和文档都到位,人真的会丢失那么多上下文吗?还有人关心速度:这样连个人项目的 UI 几天都做不完,值得吗?
原文:Prevent cognitive debt by manually retyping LLM-generated code | HN 讨论:news.ycombinator.com/item?id=49153374