手动重新输入 LLM 代码能有效规避认知债务
深度分析表明直接复制粘贴 AI 代码易形成「认知债务」,通过手动重打强化理解方能确保代码质量;HackerNews 75 分高赞体现社区共鸣。
深度分析表明直接复制粘贴 AI 代码易形成「认知债务」,通过手动重打强化理解方能确保代码质量;HackerNews 75 分高赞体现社区共鸣。
尽管我在四月说过的话,我仍在个人项目中使用编码助手。
用它们来一次性完成整个功能让我感到不满足和困惑,但我确实喜欢用它们来快速跳过项目中无聊的部分。
然而,让我的编码助手在项目中自由活动会给我留下巨大的认知负债。我可能讨厌翻阅 Django 文档来弄清楚如何向我的网站添加标签的想法,但我仍然根本上想要理解它如何工作。仅仅因为一个问题很无聊并不意味着我想完全将解决方案的理解转交给机器。
当然,我可以审查 LLM 生成的每一行代码。这是大多数开发者在这个该死的 2026 年应该做的事情。机器人提出 PR,人类审查它们。这是个勇敢的新世界。
但我不喜欢审查 AI 生成的 PR。逐行阅读数百行过度防御的、注释不良的、略微不正确的代码并不有趣。我可能会勉强为雇主这样做——同时确保该雇主尽快成为前雇主——但我绝对不会为我的个人项目这样做。个人项目必须首先是有趣的。在个人项目上工作的乐趣来自过程,而不是结果。
那么一个人应该做什么?我如何将无聊的工作转交给 LLM,同时不将我自己的工作和认知控制权交给这个废话机器?
我想出了一个极其低效且略显滑稽的解决方案:我要求我的编码助手在聊天中生成代码,然后我自己手动进行所有编辑。
我在个人项目的所有 agent 文件中都有这些指令:
I want to understand every line of code that goes into this project. Never create, edit, move, rename, or delete project files unless I explicitly ask you to do so. Instead, show me every proposed edit in the chat so I can type it in manually.Do not run commands that modify project files, install dependencies, or change repository state unless I explicitly request that action. Instead, show me those commands in the chat so I can run them manually.I'm an experienced developer. Do not explain syntax, APIs, programming concepts, or implementation details unless explicitly asked.
I want to understand every line of code that goes into this project. Never create, edit, move, rename, or delete project files unless I explicitly ask you to do so. Instead, show me every proposed edit in the chat so I can type it in manually.
Do not run commands that modify project files, install dependencies, or change repository state unless I explicitly request that action. Instead, show me those commands in the chat so I can run them manually.
I'm an experienced developer. Do not explain syntax, APIs, programming concepts, or implementation details unless explicitly asked.
以这种方式使用 LLM 让我工作的速度比完全不使用 LLM 更快,但我仍然比那些愿意让机器替他们思考的人慢。我不是快 10 倍,而是可能只快 2 倍。但我在速度方面失去的,我在对代码更深入理解方面获得了。
当我手动将 LLM 生成代码的每一行输入到编辑器中时,我建立了一个关于它如何工作以及如何融入我现有代码库的心理模型。如果我不理解某个 API 或算法,我可以停下来查找,或者只是让 LLM 解释它。
自己输入代码迫使我放慢速度,这意味着我更有可能发现 LLM 可能犯的幻觉或糟糕的设计选择。我可以边进行边清理代码,重新组织、重构、添加注释,并将其适应于我自己的风格。
最重要的是,这个工作流允许我建立我代码库的空间地图。我知道代码库中每一点功能都存在于哪里。当我需要进行更改时,我确切知道需要在哪里进行。它不仅帮助我在项目中工作得更快,还使我将来更容易地更好地提示和指导 LLM。
当我在十几岁时学习编程时,经验丰富的程序员经常告诉我永远不要将代码复制粘贴到项目中。如果我从书籍中学习,我被建议将所有示例复制到我的计算机中并确保我能运行它们。如果我从博客文章或论坛答案中学习,我被建议输入并将其适应到我的代码库中,以便我完全理解它。
手动将 LLM 生成的代码输入到我的代码库中感觉就像完全相同的学习过程。这可能不是使用 LLM 的最有效方式,但我重视理解而不是生产力。我已经这样做了几个月,对我来说效果很好。我计划尽可能长时间地继续使用这个工作流。
我担心软件行业在积累大量的认知负债,我们很快就必须偿还。会有一个时刻,我们不再理解我们数字基础设施的大部分是如何组合在一起的。我个人可能无法改变整个行业的过程,但我至少可以确保我完全理解我推向世界的软件。否则就是职业不当行为。