LLM 编程缺陷模式
概述
LLM(大语言模型)在编程任务中表现出色,但也存在一些系统性的缺陷模式。这些模式源于模型的工作机制,会导致代码质量问题、不必要的复杂性以及维护困难。理解这些缺陷模式对于有效使用 LLM 进行编程至关重要。^[inbox(剪藏进来的)__SMARTclip__forrestchang-andrej-karpathy-skills- A single CLAUDE.md file to improve Claude C__e35e9215.md]
主要缺陷模式
假设驱动编程
LLM 经常在信息不完整的情况下做出错误假设,并基于这些假设继续执行,而不是寻求澄清。这种模式表现为:
- 在面临歧义时静默选择一种解释
- 不管理自身的困惑状态
- 不主动寻求澄清
- 不呈现不同的权衡方案
- 在应该推回时缺乏质疑^[inbox(剪藏进来的)__SMARTclip__forrestchang-andrej-karpathy-skills- A single CLAUDE.md file to improve Claude C__e35e9215.md]
过度复杂化倾向
LLM 倾向于创建过于复杂的代码和 API,表现为:
- 膨胀的抽象层次
- 不清理死代码
- 用 1000 行代码实现本可以用 100 行完成的功能
- 添加不必要的"灵活性"和"可配置性"
- 为单次使用的代码创建抽象^[inbox(剪藏进来的)__SMARTclip__forrestchang-andrej-karpathy-skills- A single CLAUDE.md file to improve Claude C__e35e9215.md]
非目标性修改
LLM 有时会修改或删除与当前任务无关的注释和代码,即使这些内容与任务正交。这种"顺手"修改会导致:
- 意外的副作用
- 难以追踪的变更
- 破坏现有的代码风格
- 引入不相关的重构^[inbox(剪藏进来的)__SMARTclip__forrestchang-andrej-karpathy-skills- A single CLAUDE.md file to improve Claude C__e35e9215.md]
应对策略
思考优先原则
通过强制显式推理来对抗错误假设:
- 明确陈述假设
- 呈现多种解释
- 在合适时推回
- 遇到困惑时停下来寻求澄清^[inbox(剪藏进来的)__SMARTclip__forrestchang-andrej-karpathy-skills- A single CLAUDE.md file to improve Claude C__e35e9215.md]
简洁性优先
解决问题的最小代码量,不做投机性开发:
- 不添加超出要求的功能
- 不为单次使用的代码创建抽象
- 不添加未被请求的"灵活性"
- 如果 200 行可以简化为 50 行,就重写它^[inbox(剪藏进来的)__SMARTclip__forrestchang-andrej-karpathy-skills- A single CLAUDE.md file to improve Claude C__e35e9215.md]
外科手术式修改
只触碰必须修改的部分:
- 不"改进"相邻的代码、注释或格式
- 不重构没有问题的代码
- 匹配现有风格,即使你会采用不同方式
- 每个修改的行都应该直接追溯到用户的请求^[inbox(剪藏进来的)__SMARTclip__forrestchang-andrej-karpathy-skills- A single CLAUDE.md file to improve Claude C__e35e9215.md]
目标驱动执行
将命令式任务转换为可验证的目标。LLM 在循环直到满足特定目标方面表现出色,因此应该给它成功标准而不是具体指令:
| 替代方式 | 转换为 |
|---|---|
| "添加验证" | "为无效输入编写测试,然后使其通过" |
| "修复 bug" | "编写重现 bug 的测试,然后使其通过" |
| "重构 X" | "确保重构前后测试都通过" |
^[inbox(剪藏进来的)__SMARTclip__forrestchang-andrej-karpathy-skills- A single CLAUDE.md file to improve Claude C__e35e9215.md]
效果评估
这些策略生效的标志包括:
- diff 中减少不必要的变更
- 首次编写的代码就很简洁
- 在实现前提出澄清问题
- 干净、最小化的 PR,没有顺手的重构^[inbox(剪藏进来的)__SMARTclip__forrestchang-andrej-karpathy-skills- A single CLAUDE.md file to improve Claude C__e35e9215.md]
权衡考虑
这些指导原则偏向于谨慎而非速度。对于简单任务(如明显的拼写错误修正、简单的单行修改),需要运用判断力,不是每个变更都需要完整的严格流程。目标是减少非平凡工作中的代价高昂的错误,而不是拖慢简单任务。^[inbox(剪藏进来的)__SMARTclip__forrestchang-andrej-karpathy-skills- A single CLAUDE.md file to improve Claude C__e35e9215.md]
来源
- inbox(剪藏进来的)__SMARTclip__forrestchang-andrej-karpathy-skills- A single CLAUDE.md file to improve Claude C__e35e9215.md