andrej-karpathy-skills入门指南
简介
andrej-karpathy-skills 是一个旨在改善 Claude Code 行为的项目,其核心理念源自 AI 领域知名专家 Andrej Karpathy 对 LLM 编程陷阱的深刻观察。
解决的问题
Andrej Karpathy 在其推文中指出了 LLM 编程时的常见问题:
“模型会替你做出错误的假设,然后不加验证地继续执行。它们不管理困惑,不寻求澄清,不暴露不一致性,不呈现权衡取舍,不在应该的时候提出反对。”
“它们喜欢过度复杂化代码和 API,膨胀抽象层,不清理死代码……用 1000 行代码实现本可以用 100 行完成的功能。”
“它们有时仍会作为副作用更改/删除它们不够理解的注释和代码,即使这些与任务正交。”
核心价值
通过一个简单的 CLAUDE.md 文件,该项目提供四大原则来直接解决上述问题,帮助 AI 助手生成更简洁、更准确的代码。
核心原则
项目包含四个核心原则,每个原则针对特定的 LLM 编程问题:
| 原则 | 解决的问题 |
|---|---|
| 先思考后编码 | 错误假设、隐藏困惑、缺失权衡 |
| 简单优先 | 过度复杂化、膨胀的抽象层 |
| 精准修改 | 正交编辑、触碰不该触碰的代码 |
| 目标驱动执行 | 通过测试优先、可验证的成功标准 |
1. 先思考后编码
不要假设。不要隐藏困惑。呈现权衡取舍。
LLM 往往会默默地选择一种解释然后继续执行。这个原则强制显式推理:
- 显式陈述假设 — 如果不确定,先问而不是猜测
- 呈现多种解释 — 当存在歧义时,不要默默地选择
- 适时提出反对 — 如果存在更简单的方法,说出来
- 困惑时停止 — 指出不清楚的地方并请求澄清
2. 简单优先
用最少的代码解决问题。不做任何推测性的设计。
对抗过度工程的倾向:
- 不添加超出需求的功能
- 不为单次使用的代码创建抽象
- 不添加未请求的”灵活性”或”可配置性”
- 不为不可能发生的场景添加错误处理
- 如果 200 行代码可以写成 50 行,就重写它
检验标准: 高级工程师会说这太复杂了吗?如果是,就简化它。
3. 精准修改
只触碰必须触碰的部分。只清理自己造成的混乱。
编辑现有代码时:
- 不要”改进”相邻的代码、注释或格式
- 不要重构没有问题的东西
- 匹配现有风格,即使你会用不同的方式
- 如果注意到无关的死代码,提一下 —— 但不要删除它
当你的更改产生孤立代码时:
- 删除因你的更改而变得未使用的导入/变量/函数
- 除非被要求,否则不要删除预先存在的死代码
检验标准: 每个更改的行都应该能直接追溯到用户的请求。
4. 目标驱动执行
定义成功标准。循环直到验证通过。
将命令式任务转换为可验证的目标:
| 与其说… | 转换为… |
|---|---|
| “添加验证” | “为无效输入编写测试,然后让测试通过” |
| “修复 bug” | “编写一个能复现它的测试,然后让测试通过” |
| “重构 X” | “确保重构前后测试都通过” |
对于多步骤任务,陈述简要计划:
1 | 1. [步骤] → 验证: [检查项] |
强有力的成功标准让 LLM 能够独立循环。弱标准(”让它工作”)需要不断澄清。
安装使用
方式 A:Claude Code 插件(推荐)
在 Claude Code 中,首先添加市场:
1 | /plugin marketplace add forrestchang/andrej-karpathy-skills |
然后安装插件:
1 | /plugin install andrej-karpathy-skills@karpathy-skills |
这会将指南作为 Claude Code 插件安装,使该技能在所有项目中可用。
方式 B:CLAUDE.md(按项目)
新项目:
1 | curl -o CLAUDE.md https://raw.githubusercontent.com/forrestchang/andrej-karpathy-skills/main/CLAUDE.md |
现有项目(追加):
1 | echo "" >> CLAUDE.md |
与 Cursor 配合使用
该项目包含一个已提交的 Cursor 项目规则(.cursor/rules/karpathy-guidelines.mdc),因此当你在 Cursor 中打开项目时,相同的指南也会应用。
使用示例
场景:添加新功能
错误做法:
1 | 给用户模块添加邮箱验证功能 |
正确做法:
1 | 给用户模块添加邮箱验证功能 |
场景:修复 Bug
错误做法:
1 | 修复登录页面的报错 |
正确做法:
1 | 修复登录页面的报错 |
效果验证
这些指南正在发挥作用,如果你看到:
- diff 中不必要的更改更少 — 只有请求的更改出现
- 因过度复杂化而重写的次数更少 — 代码第一次就很简单
- 澄清问题在实现之前出现 — 而不是在犯错之后
- 干净、最小的 PR — 没有”顺手”重构或”改进”
自定义指南
这些指南设计为可与项目特定指令合并。添加到现有的 CLAUDE.md 或创建新的。
对于项目特定规则,添加如下部分:
1 | ## 项目特定指南 |
注意事项
这些指南偏向谨慎而非速度。对于简单任务(简单的拼写修复、明显的单行更改),请运用判断力 —— 不是每个更改都需要完全的严谨。
目标是减少非平凡工作中的代价高昂的错误,而不是拖慢简单任务。
总结
andrej-karpathy-skills 提供了一套简洁而强大的原则,帮助 AI 编程助手生成更高质量的代码。通过强制显式推理、追求简洁、精准修改和目标驱动执行,可以有效避免 LLM 编程中的常见陷阱。
核心要点:
- 先思考后编码 — 不确定就问,不要假设
- 简单优先 — 用最少的代码解决问题
- 精准修改 — 只改需要改的地方
- 目标驱动执行 — 定义成功标准,循环验证
将这些原则融入你的 AI 编程工作流,可以显著提升代码质量和开发效率。
参考资源
- GitHub 仓库
- Andrej Karpathy 原推文
- Multica 项目 — 开源的编码代理运行和管理平台