快速上手Andrej Karpathy Skills:让AI编程不再翻车
【免费下载链接】andrej-karpathy-skillsA single CLAUDE.md file to improve Claude Code behavior, derived from Andrej Karpathy's observations on LLM coding pitfalls.项目地址: https://gitcode.com/GitHub_Trending/an/andrej-karpathy-skills
上个月让 AI 修一个排序 bug,我打开 PR(代码合并请求)时愣住了:改了 8 个文件,顺手重构了两个不相干的函数,连注释风格都换了。问它为什么,它回答"顺手提升了可读性"。这不是个例,Andrej Karpathy 观察到,大模型会替你做错误假设还径自往下跑,把 100 行的活膨胀成 1000 行。andrej-karpathy-skills 就是冲着这个来的:一个 CLAUDE.md 文件放进项目根目录,AI 编程从此照着规矩来。规则一共四条,省下的都是返工的时间。
📌 30秒项目速览
它只干一件事:让 AI 编程助手守规矩。
它把 Andrej Karpathy 对大模型(LLM)常见编程毛病的观察变成一份行为准则文件——CLAUDE.md 放进项目根目录,Claude Code(Anthropic 出的命令行编程工具)写代码时就会照着执行。
| 文件 | 作用 | | CLAUDE.md | 核心准则文件,放项目根目录,就是入口 | | README.md | 问题清单、规则讲解与两种装法 | | EXAMPLES.md | 每条规则的代码对照示例 | | CURSOR.md | 同一套规则怎么在 Cursor 里生效 | | skills/karpathy-guidelines/SKILL.md | 同一套规则的技能版,可作复用技能 |
🛠️ 两行命令装好,三步跑通
先别纠结原理,装上亲眼看效果。
方式一,Claude Code 插件(在 Claude Code 里执行):
/plugin marketplace add forrestchang/andrej-karpathy-skills /plugin install andrej-karpathy-skills@karpathy-skills方式二,把文件放进自己的项目:
git clone https://gitcode.com/GitHub_Trending/an/andrej-karpathy-skills cp andrej-karpathy-skills/CLAUDE.md 你的项目/装好后三步跑通:
- 用 Claude Code 打开你的项目
- 提一个模糊任务,如"优化搜索"
- 看它动手前是否先反问
🧠 四条规则各治什么病
四条规则各对应一种高频翻车现场,不是口号。上一步装了插件的话它们已经生效,下面的一句话版本适合方式二或追加进现有 CLAUDE.md。
AI 默默脑补需求时
问题:你说"加个导出用户数据",它直接假设导出全部用户,字段、格式、隐私一概不问。 思路:把假设摆到台面上问一句,永远比默默选错便宜。 动作:在 CLAUDE.md 加一行:动手前列出你的假设;有歧义就停下来问,不要替我做选择。
三行需求变三十行时
问题:算个折扣,它写出抽象类、策略模式、配置 dataclass 一整套。 思路:只实现被要求的东西,复杂度在需求出现时再加,不靠猜。 动作:加一行:不添加未要求的功能和抽象;200 行能压到 50 行就重写。
它"顺手"改无关代码时
问题:修一个 bug,diff 里连注释、引号、类型提示都变了。 思路:每行改动都能追溯回你的请求,风格跟着项目走。 动作:加一行:只改与任务相关的行,匹配现有代码风格,只清理你自己弄出的孤儿代码。
"修一下 bug"没法验证时
问题:你说"修下认证系统",它改了一堆,你还是不知道修没修好。 思路:把任务变成明确的验收标准,它才能自己循环推进。 动作:提任务时写清验收,如先写一个能复现问题的失败测试,再修复,确保全部测试通过。
🔍 一次完整排障走下来
拿项目示例里的一个真实 bug,把全过程走一遍。
你输入的一句话: "排序在出现重复分数时会乱。先写一个能复现它的失败测试,再修复,最后确认整套测试通过。"
AI 的实际动作,按顺序:
- 它没碰排序逻辑,先写了个复现测试:
def test_sort_with_duplicate_scores(): scores = [ {'name': 'Alice', 'score': 100}, {'name': 'Bob', 'score': 100}, ] result = sort_scores(scores) assert [s['name'] for s in result[:2]] == ['Alice', 'Bob']✅ 判断点一:这个测试必须先失败,问题确认存在,才算不是"盲修"。
- 然后修复只有一行:
def sort_scores(scores): return sorted(scores, key=lambda x: (-x['score'], x['name']))分数降序,同分按名字排,顺序从此确定。
- 怎么验收:重复跑测试,每次顺序都稳定;原有测试全部通过。
✅ 判断点二:验收看的是"标准变绿",不是"代码看起来挺对"。
⚡ 高频陷阱速查
新手最常踩的坑都在这,每条给一句原因加一句解法。
现象:PR 的 diff 远大于要求改动量。原因:AI 把看到的代码都当成自己的,分不清任务边界。解法:CLAUDE.md 里写死"每行改动必须能追溯到请求"。
现象:新功能里冒出缓存、通知等没要求过的东西。原因:模型按"最佳实践"惯性脑补。解法:写明"只实现被请求的功能,不做投机性设计"。
现象:AI 说完成了,你却没法确认它真做到了。原因:你给了任务,没给验收标准。解法:把任务都改成"先写测试,再让它通过"。
现象:面对多种理解时,AI 默默挑了一种。原因:猜比问省力气。解法:要求它"列出全部假设,拿不准就停手提问"。
进阶两条:
- 在 CLAUDE.md 里追加"项目特定规则"小节,比如"所有 API 端点必须有测试",它设计上就支持与自定义规则合并。
- 琐事留判断空间:这份准则本身偏向谨慎,改错别字这类活不必走完整套流程。
📈 用前用后对照:怎么判断它生效了
别看感觉,看四个变化。
- 以前 diff 里混一堆无关改动,现在只看得见你要求的改动
- 以前第一版就过度设计,返工一轮,现在第一版就简单,很少返工
- 以前等 PR 评审才发现它理解偏了,现在澄清问题全发生在动手前
- 以前你要追着问"到底修好没",现在它自己循环到测试变绿
这个项目的底层想法一句话就能说清:模型特别擅长"循环到达成目标为止",所以正确做法不是规定它每一步怎么做,而是把成功标准交给它,让它自己跑。
现在就去打开你刚克隆仓库里的 CLAUDE.md,把它放进项目根目录,开始用。
【免费下载链接】andrej-karpathy-skillsA single CLAUDE.md file to improve Claude Code behavior, derived from Andrej Karpathy's observations on LLM coding pitfalls.项目地址: https://gitcode.com/GitHub_Trending/an/andrej-karpathy-skills
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考