C
ChaoBro

14 万星:Karpathy 的 LLM 编程避坑指南,浓缩进了一个 CLAUDE.md

Andrej Karpathy 不需要太多介绍。前 Tesla AI 总监、前 OpenAI 创始成员、nanogpt 的作者。他在 AI 圈子里的地位,大概相当于摇滚乐里的 Bob Dylan——不一定每次都唱得最好听,但说的每句话都有人认真听。

最近,有人把 Karpathy 关于「LLM 编程常见陷阱」的观察,整理成了一个 CLAUDE.md 文件,放到 GitHub 上叫 andrej-karpathy-skills

140,420 个星标,14,414 个 fork,每天涨 2,600 多颗星。

一个纯文本文件,没有一行代码,拿到了这个数据。说明 Karpathy 的洞察力确实值钱。

CLAUDE.md 是什么

简单说,CLAUDE.md 就是你对 Claude Code 说的话——每次开新会话时,Claude 会自动读取项目根目录下的这个文件,把它当成「背景知识」。

你可以用它告诉 Claude:「这个项目用的是什么框架」「代码风格是什么样的」「哪些文件不要碰」。

Karpathy 版本的 CLAUDE.md 做的是另一件事:告诉 Claude(以及使用 Claude 的开发者),在让 LLM 写代码时,哪些事经常出错、应该避免。

核心洞察(提炼版)

虽然这个文件本身是开源的,但它的核心价值不在于文件内容(任何人都可以 fork),而在于 Karpathy 归纳问题的角度。根据社区的讨论和 fork 后的变体,可以总结出几个关键方向:

1. LLM 会「自信地胡说」

这是最经典的问题。你让 LLM 写一个它不熟悉的 API 调用,它会编一个看起来完全合理的函数名和参数。编译的时候才会发现不存在。

Karpathy 的建议是:永远不要让 LLM 凭空生成调用。先让它查文档,再生成代码。

2. 大文件是 LLM 的盲区

把一个 5000 行的文件丢给 LLM 让它修改,它大概率会搞砸。不是因为模型不够聪明,而是因为它需要在这么大的上下文里精确定位修改点——就像让你在图书馆里不借助目录找一页纸。

建议:大文件先拆分,让 LLM 处理小模块,最后再组装。

3. 状态管理是重灾区

LLM 对「当前状态」的理解能力远弱于人类。你让它「接着上次的改继续」,它可能根本不记得上次改了什么。

建议:每次任务都要自包含。不要依赖 LLM 的「记忆」。

4. 测试比代码更重要

让 LLM 写代码时,先让它写测试,再写实现。这样你至少有一个客观标准来判断它写得对不对。

建议:TDD(测试驱动开发)在 AI 编程场景下比以往更有价值。

为什么这个文件能火

14 万星的 CLAUDE.md,火的不是文件本身,而是它背后的东西:

Karpathy 作为顶级 AI 研究者,花了大量时间亲自用 LLM 写代码,然后总结出了这些教训。 这不是理论推演,是实战经验。

在 AI 编程这个领域,大多数「最佳实践」都是工具厂商写的(「用我们的工具就能解决所有问题」)。Karpathy 的不同在于,他是从使用者的角度出发——「我用了这些工具,踩过这些坑,你们别重蹈覆辙。」

这种视角在目前的 AI 编程社区里极度稀缺。

社区的反应

这个项目的 fork 数量(14,414)和 star 数量(140,420)的比例很有意思——大约 10% 的 star 用户选择了 fork。这意味着大量人在基于 Karpathy 的原始版本做自己的定制。

有的 fork 加了特定框架的规则(React、Django、Rust),有的加了团队规范,有的加了语言偏好。

这说明 CLAUDE.md 正在成为一种「可组合的知识载体」——一个人总结经验,所有人受益并迭代。

怎么用

最直接的用法:

  1. 下载这个 CLAUDE.md
  2. 放到你的项目根目录
  3. 根据你的项目做裁剪(不是所有规则都适用于你的场景)
  4. 用 Claude Code 的时候,它会自动生效

但更有价值的用法是:读一遍,理解每个规则背后的原因,然后写出适合你自己的版本。

Karpathy 的经验是起点,不是终点。

我的想法

这个 CLAUDE.md 最值得学习的地方,不是里面写了什么,而是它揭示了一个趋势:

AI 编程的最佳实践正在从「工具层」下沉到「配置层」。

以前我们学编程,看的是书和教程。现在我们学「怎样让 AI 帮我们编程」,看的是一个 markdown 文件。

这不是降级,是进化。知识正在从长篇大论变成可执行、可组合、可迭代的配置文件。

而 Karpathy 恰好是第一个把这个趋势具象化的人。


主要来源: