为何 LLM 无法真正构建软件?
编码只是冰山一角。卓越的软件工程核心在于人类独有的、LLM 难以企及的能力:心智模型。
真正的软件工程:一个循环
高效工程师并非线性编码,而是在一个持续的反馈循环中工作。
构建需求模型
深入理解需求,在脑海中形成一个关于“系统应该做什么”的清晰蓝图。
编写代码
将需求模型转化为具体的代码实现。这是将抽象概念物化的过程。
构建代码模型
通过测试、调试和阅读,形成一个关于“代码实际做什么”的精确理解。
识别差异 & 迭代
对比两个模型,找出偏差,然后决定是修正代码还是调整需求,并开始新的循环。
核心对决:人类工程师 vs. LLM
在工程循环的关键环节,差异显而易见。
人类工程师
- ✓
清晰的心智模型: 能同时维持需求和代码两个清晰、独立的模型。
- ✓
精准的差异定位: 当测试失败时,能判断是代码问题、测试问题还是需求理解偏差。
- ✓
上下文切换与聚焦: 能暂时搁置主任务,深入解决子问题,然后无缝返回。
- ✓
从失败中学习: 即使从头再来,也会带着对问题更深刻的理解。
大型语言模型 (LLM)
- ✗
混淆的心智模型: 倾向于假设自己写的代码是完美的,难以区分“应该怎样”和“实际怎样”。
- ✗
盲目的修复尝试: 面对失败,随机猜测是修代码还是修测试,缺乏根本判断。
- ✗
受困于上下文窗口: 无法有效缩放和聚焦,只能不断增加上下文,最终导致混乱。
- ✗
毁灭性重置: 遇到挫折时,倾向于删除重来,但并未获得更深的理解。
探究根源:LLM 的三大技术缺陷
这些问题直接破坏了其维持清晰心智模型的能力。
上下文忽略
模型难以发现对话或代码库中被省略的关键信息,导致基于不完整信息的错误决策。
近因偏见
模型会过度关注上下文窗口中最近出现的信息,而忽略早期但可能更重要的指令或事实。
内容幻觉
模型会“编造”不存在的细节、API 或事实,这在需要绝对精确性的软件工程中是致命的。
具象化核心症结:心智模型的对比失败
这是区分熟练工匠与概率性文本生成器的分水岭。
心智模型 A
(需求是什么)
对比
&
识别差异
心智模型 B
(代码做了什么)
人类工程师的决策:
✅ 清晰识别 A 与 B 的差异。
✅ 分析差异根源。
✅ 做出明智决策:修改代码或澄清需求。
LLM 的困境:
⚠️ 模型 A 和 B 发生混淆。
⚠️ 无法定位精确差异。
⚠️ 陷入猜测和无效修改的循环。
结论:你仍在驾驶座上
LLM 是革命性的代码生成器、需求分析师和文档助手。它们是这个时代最强大的工具之一。
但是,对于任何非凡的软件创造,你,作为工程师,负责维护最终的清晰度和方向。LLM 是你的副驾驶,而不是自动驾驶系统。