告诉HN:假装不使用人工智能让我成为了更好的开发者
我在一个在线游戏开发社区工作,这个社区的文化反对使用人工智能进行任何事情,甚至是编码。这个社区围绕一个开源的游戏开发软件工具链以及其他用于分发、玩耍、评审和讨论这些游戏的网络应用程序建立。
我过去曾对开发软件工具链提交过拉取请求(PR),但这个工具链相当复杂(包括用多种编程语言编写的工具),我一直很难理解它,因此通常不太愿意去尝试。
到了2026年,使用大型语言模型(LLM)修复这个工具链中的错误变得容易多了。LLM在切换编程语言、添加调试跟踪以追踪错误在每一层的流动、生成自动化测试以重现错误,然后正确修复错误方面毫无问题。
当然,问题在于:我该如何说服团队合并一个完全由LLM生成的代码的PR,而这显然是违反他们政策的?
我选择的答案是:我撒谎说我写了这段代码。
但为了“卖”这个谎言,我首先请LLM详细解释错误修复的过程,然后我非常仔细地审查生成的代码(确保它的写法与我自己写的一模一样,尤其是注释),最后我完全手动撰写所有的提交信息和PR描述。
我发现这种方法极具教育意义。我学到了很多关于工具链中编程语言的知识,以及开源游戏开发工具的内部工作原理。在许多情况下,我更深入的理解让我能够真正审查LLM生成的代码,发现其中的问题,然后让LLM进行修复。
我确信,如果我只是点击一个按钮让LLM生成提交信息和PR描述,我绝对不会发现那些问题。而且显然我也不会学到这么多。
我不能以自己的名义写任何关于这件事的内容,但我现在真心推荐使用LLM来提交开源PR,但绝不要使用LLM生成提交信息或PR描述。即使开源项目明确允许LLM生成PR,也要假装是自己写的代码。
如果你对代码的理解不够深入,无法撰写提交信息或PR描述,可以请LLM为你生成一个,但随后要用自己的语言从头重写一遍。这部分是为了避免描述中有人工智能的味道,同时也是为了确保你对代码有足够的理解,以解释它的功能以及为什么这段代码是正确的做法。
假装这段代码真的是我的代码,迫使我深入学习这段代码,以便能够真正掌握它。我对自己在这方面撒谎感到羞愧,但我为通过这样做所学到的知识和取得的成就感到自豪。
查看原文
I work in an online game-development community where the culture is opposed to using AI for anything, even coding. The community is built around an open-source game-development software toolchain, as well as other web apps for distributing, playing, reviewing, and discussing those games.<p>I've filed PRs against the dev software toolchain in the past, but the toolchain is pretty complicated, (including tools written in multiple programming languages) and it's always been extremely difficult to wrap my head around it, so I usually didn't bother.<p>In 2026, it's been way, way easier for me to fix bugs in that toolchain using LLMs. LLMs have no problem switching between programming languages, adding debug tracing to trace the flow of a bug through each layer, generating automated tests to reproduce the bug, and then fixing the bug correctly.<p>Of course, the problem then is: how would I convince the team to merge a PR containing code that was entirely LLM generated, when that's explicitly against their policy?<p>The answer I've picked: I lie and say I wrote the code.<p>But, to <i>sell</i> the lie, I first ask the LLM to explain the bug fix in detail, then I review the generated code very carefully (making sure it's written exactly the way I would have written it, especially the comments), and then I write all commit messages and the PR description entirely by hand.<p>I've found this to be an tremendously educational approach. I've learned a <i>lot</i> about the programming languages in the toolchain, and about the inner workings of the open-source game-dev tools. In many cases, my deeper understanding has allowed me to <i>truly</i> review the LLM's code, finding problems in the generated code, which the LLM then fixes.<p>I'm certain that if I'd just clicked a button and had the LLM generate the commit message + PR description, I never would have found those issues. And I obviously would never have learned as much.<p>I can't write anything about this under my own name, but I now genuinely recommend using LLMs to file open-source PRs, but never using the LLM to generate commit messages or PR descriptions. Pretend as if you wrote the code yourself, even if the open-source project explicitly permits LLM-generated PRs.<p>If you don't understand the code well enough to write the commit message or the PR description, ask the LLM to generate one for you, but then rewrite it from scratch in your own terms. This is partly so the description doesn't have that smell of AI slop, but also to ensure you understand the code well enough to explain what it does and why this code is the right approach.<p>Pretending that the code is really my code forces me to learn the code well enough to own it. I'm ashamed of lying about what I've done, but I'm proud of what I've learned and accomplished by doing so.