乐于分享
好东西不私藏

AI 写代码的 6 个致命坏习惯,Andrej Karpathy 用一个文件全治好了

AI 写代码的 6 个致命坏习惯,Andrej Karpathy 用一个文件全治好了

🔥 AI 大神亲自下场,专治 LLM 编程病

Andrej Karpathy 是谁?

  • OpenAI 联合创始人

  • Tesla AI 部门前总监

  • 在 X 上有 300 万+ 粉丝

  • AI 编程领域最有发言权的人之一

他最近发了一条长文,痛批 LLM 编程的 6 大顽疾:

"模型会替你做错误假设,不检查就继续跑。"

"它们不会管理自己的困惑,不寻求澄清,不指出不一致,不呈现权衡,不在该反对的时候反对。"

"它们特别喜欢过度复杂化代码,膨胀抽象,不清理死代码……100 行能搞定的事非要写 1000 行。"

"它们还会偷偷改变/删除不理解的代码,哪怕那些代码跟你的任务毫无关系。"

这 6 条,条条扎心。用过 Claude Code、Cursor、GitHub Copilot 的人,一定都中过招。

于是有人(multica-ai 团队)把 Karpathy 的观察,浓缩成了一个 CLAUDE.md 文件——就这一个文件,直接给 Claude Code 装上了"大脑升级包"。


🧠 四个原则,根治 AI 编程的"自作聪明"

这个文件的核心只有 4 个原则,每个都精准打击 LLM 的一个坏习惯:


原则一:Think Before Coding(先想后写)

专治:错误假设、隐藏困惑、缺失权衡

LLM 最大的毛病是什么?它选了一个理解,不告诉你,直接开干。

你让它"加个登录验证",它可能理解成"JWT Token 验证",也可能理解成"Session Cookie 验证",还可能理解成"OAuth 第三方登录"——但它不问你,直接按自己猜的写。

这个原则强制 AI 显式推理:

  • 不确定就提问,而不是瞎猜

  • 有歧义时呈现多种解读,让你选

  • 有更简单的方案就反对,而不是无脑执行

  • 困惑时停下来,说出哪里不清楚,等你澄清

以前:AI 闷头写,写完你发现完全不是你要的。

现在:AI 先问"你要哪种验证方式?JWT 还是 Session?需不需要刷新机制?",写对一次过。


原则二:Simplicity First(极简优先)

专治:过度工程、膨胀抽象、死代码堆积

AI 写代码有一个可怕的倾向:它觉得代码越"专业"越好。

你让它"读取一个配置文件",它给你整一个完整的配置管理类,带缓存、带热重载、带类型校验、带默认值回退……最后 200 行代码,其实 20 行就能搞定。

这个原则给 AI 上了紧箍咒:

  • 不要实现没被要求的功能

  • 不要为只用一次的代码造抽象

  • 不要加没被要求的"灵活性"或"可配置性"

  • 不要处理不可能发生的错误场景

  • 如果 200 行能变成 50 行,重写它

检验标准:一个资深工程师看了会不会说"这过度设计了"?如果会,就简化。

以前:AI 写了个"企业级"配置管理器,你看着 200 行代码头皮发麻。

现在:AI 给你 15 行简洁代码,一眼看懂,维护零负担。


原则三:Surgical Changes(手术刀式修改)

专治:乱改无关代码、副作用灾难、风格不一致

这是最让程序员血压飙升的场景:

你让 AI "把登录按钮改成蓝色",结果 diff 里出现了 50 处修改——它不仅改了按钮颜色,还顺手"优化"了旁边的 CSS,删了几个它觉得"没用"的注释,重构了一个它觉得"写得不好"的函数……

最后你的 PR 里混进了 10 个无关改动,review 时根本分不清哪些是任务相关的。

这个原则让 AI 变成手术刀:

  • 不"改进"相邻的代码、注释或格式

  • 不重构没坏的东西

  • 匹配现有风格,哪怕你自己会写得不一样

  • 发现无关死代码?提一下,别删

  • 自己改动造成的孤儿代码(无用导入、变量、函数),自己清理

检验标准:每一行改动都能直接追溯到用户的请求。

以前:git diff 里 80% 是 AI 的"顺手优化",review 时想杀人。

现在:diff 干干净净,只有你要的改动,review 秒过。


原则四:Goal-Driven Execution(目标驱动执行)

专治:任务模糊、验证缺失、反复返工

Karpathy 说了一句金句:

"LLMs 极其擅长循环执行直到达成特定目标……别告诉它该做什么,给它成功标准,然后看着它跑。"

这个原则把模糊指令变成可验证的目标:

❌ 以前这样说
✅ 现在这样说
"加个验证"
"为无效输入写测试,然后让测试通过"
"修个 bug"
"写一个复现 bug 的测试,然后让它通过"
"重构 X"
"确保重构前后测试都通过"

对于多步骤任务,AI 会先列出计划:

1[步骤] → 验证:[检查点]2[步骤] → 验证:[检查点]3[步骤] → 验证:[检查点]

强成功标准让 AI 能独立循环,弱标准("让它跑起来")让你不断澄清。

以前:你说"修个 bug",AI 改完你测了一下,bug 还在,来回 5 轮。

现在:AI 先写复现测试,确认能复现 bug,然后修改,再跑测试确认通过。一次到位。


🚀 安装只需 30 秒,支持 Claude Code + Cursor

方式一:Claude Code 插件(推荐)

在 Claude Code 里执行:

/plugin marketplace add forrestchang/andrej-karpathy-skills/plugin install andrej-karpathy-skills@karpathy-skills

装一次,所有项目都能用。

方式二:CLAUDE.md(按项目)

新项目:

curl -o CLAUDE.md https://raw.githubusercontent.com/forrestchang/andrej-karpathy-skills/main/CLAUDE.md
已有项目(追加到现有 CLAUDE.md):
echo "" >> CLAUDE.mdcurl https://raw.githubusercontent.com/forrestchang/andrej-karpathy-skills/main/CLAUDE.md >> CLAUDE.md

方式三:Cursor 用户

项目里已经内置了 .cursor/rules/karpathy-guidelines.mdc,直接用。


✅ 怎么知道它在起作用?

装上之后,你会观察到这些变化:

变化
说明
diff 更干净
只有请求的改动,没有"顺手优化"
代码更简洁
第一次写出来就是对的,不需要返工简化
问题先问后写
不确定的地方先澄清,而不是写错后再改
PR 更清爽
没有 drive-by 重构,review 效率翻倍
测试驱动
AI 开始主动写测试来验证自己的改动

💡 一句话总结:从"指令式"到"目标式"

Karpathy 的核心洞察,也是这个文件的灵魂:

别告诉 AI 该做什么,给它成功标准,然后看着它跑。

这不仅是 4 条编程规范,更是一种 AI 协作范式的升级——从"你指挥我干活"的指令式,进化到"你定目标我达成"的目标式。

在 Vibe Coding 越来越火的今天,这个文件解决了一个关键问题:

AI 不是不够聪明,是它太喜欢"自作聪明"。

给它装上这个"大脑升级包",让它学会先想后写、极简优先、精准修改、目标驱动——你的 AI 编程体验,会从"能用"直接进化到"好用"。


📌 GitHub
https://github.com/multica-ai/andrej-karpathy-skills
你用 Claude Code 时,被 AI 的"自作聪明"坑过吗?评论区说说你的血泪史 👇
关注我,了解更多AI最新消息~