一个文件,让 Claude Code 变得更靠谱——andrej-karpathy-skills 项目解读
来源:捣鼓软件(微信公众号) 原文链接:https://mp.weixin.qq.com/s/cJ0qjUUbNi0ZQRqx780jbg 作者:fornetuseone
17,000+ Star,Andrej Karpathy 亲自点名的 AI 编程痛点,有人用一个 CLAUDE.md 文件解决了。
AI 编程助手的三个硬伤
如果你用过 Claude Code、Cursor 或者其他 AI 编程工具,大概率踩过这些坑:
问题一:AI 会自作主张。
你说"帮我加个缓存",它默默决定用 Redis,搭了一套分布式架构,还顺手重构了你的数据库层——你根本没让它这么做,它也没问你,就自顾自地冲了。
问题二:AI 写出天量代码。
本来 50 行能搞定的功能,它洋洋洒洒写了 500 行,还带上了"灵活扩展层"、"配置项接口"、"未来可能用到的抽象"——一堆你根本没要求的东西。
问题三:AI 改坏了不该动的地方。
你让它修一个 bug,它顺手"优化"了旁边的注释,删掉了几行它看不懂的代码,改掉了你精心维护的格式——改完之后你甚至不知道它动了什么。
这三个问题,不是你的问题,也不是模型笨——Andrej Karpathy(OpenAI 联合创始人、前特斯拉 AI 总监)在公开评论里明确指出过:
"The models make wrong assumptions on your behalf and just run along with them without checking. They don't manage their confusion, don't seek clarifications..."
"They really like to overcomplicate code and APIs, bloat abstractions... implement a bloated construction over 1000 lines when 100 would do."
换句话说,这是当前 LLM 辅助编程的结构性问题。
这个项目是什么?
GitHub 项目 andrej-karpathy-skills(作者:forrestchang)的做法非常直接:
把 Karpathy 指出的问题,提炼成四条行为准则,写进一个 CLAUDE.md 文件里。
仅此而已。没有复杂的框架,没有新的工具链,就是一个纯文本的 Markdown 文件。
项目上线不久便斩获 17,000+ Star,成为 Claude Code 生态中传播最广的社区规范之一。
四条核心原则
原则一:先想清楚再动手(Think Before Coding)
核心要求:不要乱猜,不要藏着疑惑,主动暴露不确定性。

动手之前,AI 应该:
- 明确说出自己做了哪些假设
- 如果有多种理解方式,把它们都列出来,不要偷偷选一个
- 如果有更简单的方案,主动说出来
- 如果有不清楚的地方,停下来,点名说清楚,然后问
效果: 让 AI 的"内心独白"变得可见,减少跑偏之后的大规模返工。
原则二:以简为先(Simplicity First)
核心要求:写解决问题所需的最少代码,不写任何推测性内容。
禁止清单:
- 没被要求的功能
- 只用一次的代码里加抽象层
- 没人要求的"灵活性"和"可配置性"
- 为不可能发生的场景做错误处理
内置自检标准: "一个高级工程师看到这段代码,会不会觉得它过度复杂?" 如果答案是会,重写。
效果: diff 更干净,review 更快,代码更容易维护。
原则三:精准手术式修改(Surgical Changes)
核心要求:只碰必须碰的,清理自己制造的垃圾。
修改存量代码时:
- 不要"顺手优化"不相关的代码、注释或格式
- 不要重构没坏的东西
- 保持现有风格,哪怕你不喜欢它
- 发现无关的死代码,提一嘴,但不要删
清理规则:
- 你的改动造成的多余 import/变量/函数 → 你来清
- 原本就存在的死代码 → 没让你动就别动
黄金标准: 每一行改动,都能直接追溯到用户的需求。
效果: 大幅减少 review 时"这里为什么动了"的困惑。
原则四:目标驱动执行(Goal-Driven Execution)
核心要求:先定义成功标准,然后循环直到验证通过。
把模糊指令转化为可验证目标:
- "加个校验" → 先写出非法输入的测试用例,再让它通过
- "修这个 bug" → 先写能复现 bug 的测试,再让它通过
- "重构 X" → 确保重构前后测试结果一致
多步骤任务要求 AI 先列计划:
[步骤] → 验证:[检查点]
[步骤] → 验证:[检查点]
[步骤] → 验证:[检查点]效果: AI 可以在更少打断的情况下自主完成任务,你也能随时知道它到哪一步了。
怎么用?
方法一:最简单,直接下载
在项目根目录执行:
curl -o CLAUDE.md https://raw.githubusercontent.com/forrestchang/andrej-karpathy-skills/main/CLAUDE.md一行命令,一个文件,完成。
方法二:追加到已有的 CLAUDE.md
如果你的项目已经有 CLAUDE.md 文件,不想覆盖:
echo "" >> CLAUDE.md
curl https://raw.githubusercontent.com/forrestchang/andrej-karpathy-skills/main/CLAUDE.md >> CLAUDE.md方法三:作为 Claude Code 插件全局安装
这是最推荐的方式,安装一次,所有项目都能用:
claude mcp install https://github.com/forrestchang/andrej-karpathy-skills安装后这套准则会作为 Claude Code 插件生效,不需要每个项目单独配置。
与项目规范共存
这个文件设计上就考虑了与项目自定义规范的兼容。你可以在文件末尾追加项目专属规则,二者互不干扰:
## 项目专属规范
- 使用 TypeScript strict 模式
- 所有 API 接口必须有测试
- 错误处理遵循 src/utils/errors.ts 中的现有模式怎么判断是否生效?
项目 README 给出了三个可观测的信号:
- diff 里的无关改动变少了 —— AI 不再顺手"优化"你没让它动的地方
- 因过度复杂而返工的次数减少了 —— 它不再一上来就搭一套过度设计的框架
- 澄清问题出现在动手之前,而不是出错之后 —— 它开始在实现前问你,而不是写完一堆再来重来
总结
andrej-karpathy-skills 是一个极其克制的项目——它没有发明新工具,没有包装新概念,只是把 AI 辅助编程中真实存在的问题,用最直接的方式写成了 AI 能读懂的行为规范。
它的逻辑其实很朴素:与其换一个模型,不如把你对它的期望说清楚。
四条原则,一个文件,解决的是每天都在发生的问题。
如果你用 Claude Code,这大概是目前最值得花五分钟配置的东西。
项目地址:https://github.com/forrestchang/andrej-karpathy-skills
整理自微信公众号「捣鼓软件」,版权归原作者所有