File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change 1+ # AI 写代码总爱瞎折腾?Karpathy 说这是因为你没教对
2+
3+ 不知道大家有没有这种经历:你让 AI 助手改个 bug,结果打开 diff 一看——整份文件都被改了一遍。
4+
5+ 你让它加个按钮,它顺手给你重构了整个组件;你让它修个 bug,它把隔壁模块的注释都改了;最绝的是,你让它写个简单的验证逻辑,它给你整出了一套"可扩展、可配置、支持未来 10 年需求"的 1000 行架构。
6+
7+ 别急,这事儿不光是你一个人头疼。
8+
9+ 最近 Andrej Karpathy 发了一条推文,直接把 LLM 写代码的那些毛病扒了个底朝天。
10+
11+ 如果你对 AI 领域稍有关注,应该听过 Karpathy 的名字——OpenAI 创始成员之一,前 Tesla AI 高级总监,当年 Autopilot 就是他在带队。斯坦福博士,著名的 CS231n 深度学习课程也是他写的。总之,这人说话是有分量的。
12+
13+ 他指出的问题,说难听点,咱们平时用的 AI 助手基本占全了:
14+
15+ ** 擅自做假设** —— 你说"加个用户字段",它默认你要加到数据库、改 API、更新前端,一整套流程给你安排得明明白白,但你其实只想加个临时的内存变量。
16+
17+ ** 不管理困惑** —— 遇到模糊需求时,它不问,直接选一个理解往下干,等到写完了你才发现方向完全错了。
18+
19+ ** 过度复杂化** —— 100 行能解决的事,它能给你写出 1000 行,抽象、配置、错误处理一应俱全,看着专业,维护的时候直接想砸键盘。
20+
21+ ** 乱改不相干的代码** —— 修一个 bug,顺便把整个文件的格式、注释、变量名都改了一遍,git diff 一眼望不到头。
22+
23+ 翻译成人话就是:AI 太"聪明"了,聪明到不知道什么时候该闭嘴。
24+
25+ 但话说回来,这事儿也不能全怪 AI。毕竟,你让它写代码,但你没告诉它"什么时候该停下来",它就默认"永远别停"。
26+
27+ Karpathy 给出的解决方案很有意思——不是训练更好的模型,而是给模型一套"行为准则"。有人把这套准则做成了 Claude Code 插件,四条原则,直击痛点:
28+
29+ ** 第一,思考优先。**
30+ 别瞎猜,搞不清楚就问。遇到有歧义的需求,停下来,问清楚再动手。
31+
32+ ** 第二,简单至上。**
33+ 最小代码解决问题,别瞎加功能。如果能用 50 行解决,就不要写 200 行。
34+
35+ ** 第三,精准修改。**
36+ 只改必须改的,别顺手"优化"。你让它改哪个函数,它就改哪个函数,旁边的格式、注释、无关代码,看都不要看。
37+
38+ ** 第四,目标驱动。**
39+ 明确成功标准,写测试先写后实现。不是"让它去干",而是"给它一个目标,然后让它自己验证有没有达成"。
40+
41+ 使用起来也简单得离谱。在 Claude Code 里敲两行命令:
42+
43+ ```
44+ /plugin marketplace add forrestchang/andrej-karpathy-skills
45+ /plugin install andrej-karpathy-skills@karpathy-skills
46+ ```
47+
48+ 完事。
49+
50+ 效果呢?说"史诗级提升"可能有点夸张,但至少,你的 PR 不会再像车祸现场了。diff 里只有你真正要改的东西,没有 AI 自作主张的"优化";代码不会因为过度复杂化需要重写;有问题,AI 会在写代码之前问你,而不是写错了你再改。
51+
52+ 虽然这些点,咱平时也没少吐槽,但仔细想想,Karpathy 的洞察其实挺有意思的——他没说"我们要更大的模型"或"更好的训练数据",他说的是"我们要教模型什么时候该停手"。
53+
54+ 这或许才是 AI 编程真正的关键。不是让 AI 更聪明,而是让 AI 更"懂事"。
You can’t perform that action at this time.
0 commit comments