multica-ai/andrej-karpathy-skills
GitHub: multica-ai/andrej-karpathy-skills
提供一套 Claude Code 行为约束的 CLAUDE.md 指南,解决 LLM 编码中的假设缺失、设计膨胀与修改失控问题。
Stars: 56152 | Forks: 4772
# Karpathy 启发式 Claude 代码指南
一个 `CLAUDE.md` 文件,用于改善 Claude Code 行为,源自 [Andrej Karpathy 对 LLM 编码陷阱的观察](https://x.com/karpathy/status/2015883857489522876)。
## 问题
来自 Andrej 的帖子:
## 解决方案
一个文件中的四条原则,直接解决这些问题:
| 原则 | 解决的问题 |
|------|-----------|
| **思考优先于编码** | 错误的假设、隐藏的困惑、缺失的权衡 |
| **简洁优先** | 过度复杂、臃肿的抽象 |
| **精准修改** | 正交修改、修改不应触及的代码 |
| **目标驱动执行** | 通过测试先行、可验证的成功标准来利用杠杆 |
## 四大原则详解
### 1. 思考优先于编码
**不要假设。不要隐藏困惑。暴露权衡。**
LLM 常常静默地选择一个解释并继续执行。此原则强制显式推理:
- **明确陈述假设** — 如果不确定,询问而非猜测
- **呈现多种解释** — 存在歧义时不要静默选择
- **必要时提出反对** — 如果有更简单的方法,请指出
- **在困惑时停止** — 指出不清楚的地方并请求澄清
### 2. 简洁优先
**解决问题的最小代码。没有任何推测。**
对抗过度设计的倾向:
- 不包含超出需求的功能
- 不为一次性代码创建抽象
- 不包含未请求的“灵活性”或“可配置性”
- 不为不可能的场景编写错误处理
- 如果 200 行可以简化为 50 行,就重写它
**检验标准:** 一位资深工程师会说这段代码过于复杂吗?如果是,就简化。
### 3. 精准修改
**只修改必须修改的部分。只清理自己的问题。**
编辑现有代码时:
- 不要“改进”相邻的代码、注释或格式
- 不要重构没有问题的内容
- 匹配现有风格,即使你会有不同做法
- 如果你注意到无关的废弃代码,请提及它,不要删除它
当你的修改产生孤儿代码时:
- 移除你的修改所导致不再使用的导入、变量或函数
- 不要删除预先存在的废弃代码,除非被明确要求
**检验标准:** 每一处修改的行都应直接追溯到用户的请求。
### 4. 目标驱动执行
**定义成功标准。循环直到验证。**
将命令式任务转换为可验证的目标:
| 而不是… | 转换为… |
|---------|--------|
| “添加验证” | “为无效输入编写测试,然后使其通过” |
| “修复错误” | “编写重现它的测试,然后使其通过” |
| “重构 X” | “确保测试在前后均通过” |
对于多步骤任务,陈述一个简要计划:
```
1. [Step] → verify: [check]
2. [Step] → verify: [check]
3. [Step] → verify: [check]
```
强有力的成功标准能让 LLM 独立循环。弱标准(“让它工作”)需要持续澄清。
## 安装
**选项 A:Claude Code 插件(推荐)**
在 Claude Code 内部,首先添加市场插件:
```
/plugin marketplace add forrestchang/andrej-karpathy-skills
```
然后安装插件:
```
/plugin install andrej-karpathy-skills@karpathy-skills
```
这会将指南作为 Claude Code 插件安装,使该技能在所有项目中可用。
**选项 B:CLAUDE.md(每个项目)**
新项目:
```
curl -o CLAUDE.md https://raw.githubusercontent.com/forrestchang/andrej-karpathy-skills/main/CLAUDE.md
```
现有项目(追加):
```
echo "" >> CLAUDE.md
curl https://raw.githubusercontent.com/forrestchang/andrej-karpathy-skills/main/CLAUDE.md >> CLAUDE.md
```
## 关键洞察
来自 Andrej:
“目标驱动执行”原则捕捉了这一点:将命令式指令转换为带有验证循环的声明式目标。
## 如何判断它是否有效
如果看到以下情况,说明这些指南正在起作用:
- **差异中不必要的变更更少** — 仅出现请求的改变
- **因过度复杂而导致的重写更少** — 代码首次编写即简洁
- **在实现前提出澄清问题** — 而非在犯错之后
- **干净、简洁的 PR** — 没有随机的重构或“改进”
## 自定义
这些指南设计为可与项目特定指令合并。将它们添加到现有的 `CLAUDE.md` 或创建新的。
对于项目特定规则,添加类似的部分:
```
## 项目特定指南
- Use TypeScript strict mode
- All API endpoints must have tests
- Follow the existing error handling patterns in `src/utils/errors.ts`
```
## 权衡说明
这些指南偏向于**谨慎而非速度**。对于琐碎任务(简单的拼写修正、显而易见的单行代码),请运用判断力——并非每个变更都需要完整严谨。
目标是减少非琐碎工作中的代价高昂的错误,而不是减慢简单任务的速度。
## 许可证
MIT
标签:AI工程化, AI编程, AI辅助编程, Claude, CVE检测, Karpathy, LLM, SWE-bench, Unmanaged PE, 代码规范, 原则, 变更管理, 开发指南, 最佳实践, 最小可行代码, 测试驱动, 简洁设计, 软件设计, 防御加固