文章摘要
文章指出当前LLM编程助手的两大不足:一是缺乏真正的复制粘贴功能,只能通过记忆和写入操作模拟代码移动,无法像人类开发者那样直观确保代码一致性;二是操作方式与人类编程习惯存在差异,导致协作时存在"波长不合"的隔阂感。作者通过重构代码等场景说明这种差异带来的不便。
文章总结
标题:大语言模型编程助手仍不擅长的两件事
最近我尝试重新使用大语言模型(LLM)辅助编程(此前曾彻底停用),但总感觉有些不对劲——就像我们不在同一个频道上。姑且称之为"氛围编程"或"氛围工程",但我终于找到了两个关键原因,解释为何它们的编码方式如此别扭。
LLM不会复制粘贴代码
当你要求它们将大文件重构为小文件时,它们会"记住"代码块,用delete工具删除旧文件内容,再通过write工具凭记忆写出提取的代码。整个过程没有真正的cut或paste操作,所有修改都依赖记忆中的write命令。这与人类习惯截然不同——我们依赖复制粘贴来确保移动的代码与原始版本完全一致。只有Codex偶尔会尝试用sed和awk模拟这种交互,但效果并不稳定。缺乏提问机制
LLM解决问题的方式也很怪异:它们从不提问,只会基于假设暴力尝试。优秀的人类开发者会在不确定时主动澄清(正如"没有愚蠢的问题"这句格言),但LLM只会不断试错直到碰壁,然后继续硬闯。虽然可以通过精心设计的提示词勉强让它们提问(如Roo在这方面表现尚可),但效果有限。这可能源于开发公司过度追求"加速编码"的优化目标。
正是这些特性让我反对"LLM将取代人类开发者"的观点——它们更像过度自信的实习生,目前还难以真正融入工作节奏。
(注:删减了原文中导航栏、日期标签等非核心内容,保留技术细节和比喻性表述,调整了部分术语的汉化方式以符合中文技术写作习惯)
评论总结
评论内容总结
1. LLM在代码重构和文件操作上的不足
- 观点:LLM在代码重构时不会真正“复制粘贴”,而是从记忆中重新生成代码,容易引入错误。
- 引用:
- "LLMs don’t copy-paste (or cut and paste) code... Every tweak is just them emitting write commands from memory."(评论15)
- "The LLM had HALLUCINATED most of the path part of the URLs!"(评论20)
2. LLM缺乏提问和确认的能力
- 观点:LLM在不确定时不会主动提问,而是盲目尝试,导致错误。
- 引用:
- "Good human developers always pause to ask before making big changes... LLMs keep trying to make it work until they hit a wall."(评论27)
- "LLMs will gladly go along with bad ideas that any reasonable dev would shoot down."(评论13)
3. LLM在复杂任务上的局限性
- 观点:LLM擅长简单任务(如CRUD应用),但在复杂任务(如解析器重构)中表现不佳。
- 引用:
- "LLMs are good at replacing junior engineers... But they fail at senior-level tasks."(评论16)
- "It made a plan, which looked reasonable... 80% of the test suite failed."(评论8)
4. LLM对开发环境的理解不足
- 观点:LLM难以理解复杂的开发环境(如工具链、目录结构),容易因细节问题失败。
- 引用:
- "Agents break down not because the code is too complex, but because invisible, 'boring' infrastructure details trip them up."(评论12)
- "They don’t know whether there is a helper function they could use, so they re-implement it."(评论11)
5. LLM的进步与潜力
- 观点:LLM在提问、工具使用等方面有进步,但仍需改进。
- 引用:
- "They’re getting better at asking questions; I routinely see search calls against the code base index."(评论2)
- "It’s easy to add 'cut/copy/paste' tools to the AI system if that shows improvement."(评论27)
6. LLM对开发行业的影响
- 观点:LLM可能取代初级开发者,但尚无法替代高级开发者。
- 引用:
- "AI is not able to replace good devs... But it can probably replace bad and mediocre devs."(评论30)
- "Tech twitter keeps showing 'one-shotting full-stack apps'... but it was trivial to programmers."(评论18)
总结
评论普遍认为LLM在代码生成和简单任务上表现良好,但在复杂重构、环境理解和主动提问等方面存在明显不足。尽管有进步潜力,目前LLM更像“过度自信的实习生”(评论28),尚无法完全替代人类开发者,尤其是高级开发者。