# Karpathy 的 10 条 Claude 新军规
**作者**: 码良
**日期**: 2026-06-26T18:39:33.000Z
**来源**: [https://x.com/cxjwin/status/2071025081091002392](https://x.com/cxjwin/status/2071025081091002392)
---

6.27 号,一条推炸了。
@Raytar 说:Karpathy 五周前加入 Anthropic,他团队的朋友把 Karpathy 实际在用的 CLAUDE.md 文件发给了我。「它完全改变了我用 Claude 的方式。」——2800+ 赞,7400+ 书签,60 万浏览。
> **Raytar@Raytar**: [原文链接](https://x.com/Raytar/status/2070577723089768500)
>
> Andrej Karpathy joined Anthropic five weeks ago.
> Yesterday my friend on his team sent me the Claude.md file he actually uses.
> It completely changed how I work with Claude.
> From the very first message, the difference was obvious.
> With this file, Claude finally stops fighting me
>
> 
故事讲得漂亮:「朋友泄密」「趁没删赶紧存」。评论区有人 @karpathy 问真假,他没回。有人直接拆穿——这就是 engagement bait。
先辨一下真假。
Karpathy 加入 Anthropic 这件事是真的(5 月 19 日他本人官宣,TechCrunch、Axios 均有报道),距今刚好五周,和推文的时间线对得上。这让「他写了份内部 CLAUDE.md」变得 plausible。而文件本身的标题就很 Karpathy——Field Notes on Getting a Language Model to Write Code You Will Not Rewrite。「写出你不需要重写的代码」,这句话就是他一年来反复讲的那个意思。
内容更硬。 每一条都对得上他公开吐槽过的大模型写代码通病,不只是梗概,细节也经得起对——我逐条和原文件校过,没有一条是编的。
但我更在意的是另一件事。
早在去年,社区就基于他公开的思考和吐槽提炼过一个 CLAUDE.md 模板(andrej-karpathy-skills,十几万 star,有博主测试能把 Claude 的代码错误率从 41% 降到 11%),那个版本只有 4 条核心原则——因为那时他公开说的,主要就是那些。
而这次流出的完整版,是 10 条。多出来的 6 条,不是凑数。恰恰是它们,决定了你能不能真的「放手」。
## 先把它放回 loop 那条线上
我之前写过 loop engineering:prompt → context → harness → loop,背后是任务尺寸在变大。Addy Osmani 归纳过 loop 需要的五个组件——定时触发、worktree 隔离、项目知识文件、MCP 连接、maker/checker 分离。
> **码良@cxjwin**: [原文链接](https://x.com/cxjwin/status/2064492969005355193)
>
CLAUDE.md 就是那个「项目知识文件」。
它是你放在项目根目录、Claude 每次自动读的一份说明书。loop 跑起来之后没人盯着每一步,agent 凭什么知道「在这个项目里该怎么做事」?就凭这份文件。所以一份写得好的 CLAUDE.md,不是锦上添花,是 loop 的地基之一。
这也是为什么「Karpathy 自用版」值得逐条看——它不是 prompt 技巧合集,它是你打算把责任交出去之前,给 agent 立的那套规矩。
## 完整的 10 条
我把它压成你能一眼扫完的版本(完整原文整理在文末 gist):
1. 写之前先读。 LLM 写出烂代码的头号原因——没读现有代码就开始写,一看到任务就去匹配训练数据里的模式,直接生成。先读你要改的文件(是读,不是扫),读相邻的实现,读文件顶部的 import(项目到处用 fetch 就别引 axios),读测试文件。
2. 写之前先想清楚。 说清你的假设——「加认证」可以是 session、JWT、OAuth 五种东西,别默默替我选一个。说清取舍。有多种方案就给两三个带推荐。困惑就停下来问,别用看似合理的代码去填理解上的空白。
3. 保持简单。 写解决当前这个具体问题的最少代码,不是理论上能解决一切的最少代码。抵抗四种过度设计:过早抽象、臆想式错误处理、不必要的可配置、没有生命力的灵活性。判断标准很简单——如果某处抽象的唯一理由是「以防以后需要」,那就是过度设计。
4. 外科手术式修改。 diff 越小越好,每一行改动都会进 git blame、都要有人 review。别碰没让你碰的东西,匹配现有风格(文件用 var 你也用 var),别顺手跑 prettier 重格式化。看着 diff 问自己:每一行都能用任务本身解释吗?不能就回滚。
5. 验证。 「代码能工作」和「你以为它能工作」之间,隔着测试。修 bug 先写一个能复现的失败测试,看着它红,修完看着它变绿。测行为,不测实现(测构造函数有没有给属性赋值毫无意义)。测不了就说为什么——那是关于设计的信号,不是跳过测试的许可。
6. 目标驱动。 动手前先有清晰的成功标准。把「加校验」翻译成「email 缺失或非法就返回 400 并说明原因,两种情况都加测试」。多步任务,先把计划报出来再动手。
7. 调试。 不工作,不要猜,去查。读完整的错误信息和 stack trace(LLM 老毛病是看一眼错误类型就开始「修」)。先复现再改。一次只改一处。别在没搞懂根因之前加个 null 检查糊过去——崩溃是不崩了,bug 还在,过会儿换个地方冒出来。
8. 依赖。 每加一个依赖,都是一段你不控制、却永久留在项目里的代码。先问:项目已有依赖能不能做?(有 axios 就别加 node-fetch。)再问:标准库能不能做?(crypto.randomUUID() 存在就别上 uuid。)真要加,说清为什么,别默默塞进 package.json。
9. 沟通。 说清你做了什么、为什么这么做,别只甩一段代码。实现完了但觉得方案有隐患,主动讲出来。精确表达不确定性——「我不确定这个库支不支持 streaming」是有用的,「我觉得应该能行」是没用的,区别在于前者准确告诉对方该去验证什么。Commit message 要具体——「Fix bug」没用,「Fix null pointer in user lookup when email contains uppercase chars」有用。
10. 失败模式。 他给七种反复出现的坑起了名,方便你抓现行:大杂烩(让你加个功能你顺手重构半个库)、错误的抽象(为只出现一次的问题造通用方案)、隐形决策(偷偷定了 schema/API 形状却不标记)、乐观路径(只处理 happy path)、知识幻觉(自信使用不存在的 API)、风格漂移、失控重构。发现自己在做,停下来。
## 4 条没覆盖的那 6 条,才是关键
社区早期提炼的 4 条是:想清楚再写(2)、保持简单(3)、外科手术式修改(4)、目标驱动(6)。
提炼得没错。但你看出来缺的是哪几条没——
缺的,正好是 Karpathy 放在第 1 位、并称为「写出烂代码头号原因」的「写之前先读」,以及验证(5)、调试(7)、依赖(8)、沟通(9)、失败模式(10)。
这不是社区提炼失误。4 条覆盖的,是 Karpathy 公开吐槽过的那些——管的是「单次生成出来的那段代码长什么样」——干净、简单、不越界、有目标。
社区没看到的 6 条,管的是「没人盯着的时候,它怎么自处」——这些他之前从没公开说过。
而后者,正是 loop 的命门:
- 写之前先读(1):无人值守时,agent 最容易生成那种「能跑但像另一个人写的」alien code。loop 里没人当场把它揪回来,这条是地基。
- 验证 + 调试(5、7):这两条翻译成 loop 的语言,就是 maker/checker 分离、自我验证、自我纠错——它是 loop 能空转一整晚而不烧钱、不烤过头的前提。
- 沟通(9):这条直接对治我上篇说的理解债务。无人值守的 loop 会犯无人值守的错,它必须主动把「我做了什么决策、我哪里不确定」吐出来,你才审计得动。
- 失败模式(10):「失控重构」「大杂烩」这些名字,本身就是 loop 翻车现场的标准命名。
所以两个版本的差别,不只是「4 条 vs 10 条」的数量差。它折射出的是这半年的变化:
> 4 条,是「交任务」时代的规矩——那时大家还站在终端前,每次都验收,agent 只要把这一次的 diff 写干净就行,所以公开讨论的焦点也都在这。
> 10 条,是「交责任」时代的规矩——人既不在起点也不在终点,「先读」「自己验证」「自己调试」「主动汇报」必须写进文件,让它自己兜住。这些他之前没公开聊过,因为那时候还不需要。
你想把责任交出去,前提是先把这 10 条立清楚。
## 写在最后
这份文件值得细读的是结构,不是照搬。最好的 CLAUDE.md 永远是按你自己的技术栈和风格调出来的——Karpathy 的「文件里用 var 你也用 var」对他的项目成立,未必对你的成立。
有人吐槽:连 Karpathy 都得写一大堆规则,像带初级实习生。
听着像调侃,其实点到了本质——你不是在写 prompt 技巧,你在写一份入职手册。实习生越独立、越要放手,手册就得越完整。4 条够你盯着他干;10 条才够你转身走开。
10 条说穿了,就是把可观测性、可复现测试、清晰接口、有用报错这些没人爱干的基本功,写成了 agent 看得懂的语言。
## 相关链接
- [@cxjwin](https://x.com/cxjwin)
- [3.6K](https://x.com/cxjwin/status/2071025081091002392/analytics)
- [@Raytar](https://x.com/@Raytar)
- [Jun 27](https://x.com/Raytar/status/2070577723089768500)
- [624K](https://x.com/Raytar/status/2070577723089768500/analytics)
- [@karpathy](https://x.com/@karpathy)
- [Jun 10](https://x.com/cxjwin/status/2064492969005355193)
- [9.3K](https://x.com/cxjwin/status/2064492969005355193/analytics)
- [8:17 AM · Jun 28, 2026](https://x.com/cxjwin/status/2071025081091002392)
- [3,608 Views](https://x.com/cxjwin/status/2071025081091002392/analytics)
- [View quotes](https://x.com/cxjwin/status/2071025081091002392/quotes)
---
*导出时间: 2026/6/28 15:09:12*