forrestchang/andrej-karpathy-skills
GitHub: forrestchang/andrej-karpathy-skills
这是一个基于 Andrej Karpathy 观点的配置文件,旨在通过四条核心准则优化 Claude Code 的编码行为,避免 AI 生成过度复杂或偏离目标的代码。
Stars: 18698 | Forks: 1478
# 受 Karpathy 启发的 Claude Code 准则
单个 `CLAUDE.md` 文件,用于改进 Claude Code 的行为,源于 [Andrej Karpathy 关于 LLM 编程陷阱的观察](https://x.com/karpathy/status/2015883857489522876)。
## 问题所在
来自 Andrej 的帖子:
## 解决方案
一个文件中的四条原则,直接解决这些问题:
| 原则 | 解决的问题 |
|-----------|-----------|
| **编码前思考** | 错误假设、隐藏的困惑、权衡缺失 |
| **简洁优先** | 过度复杂、臃肿的抽象 |
| **精准修改** | 非正交的编辑、触碰不应修改的代码 |
| **目标驱动执行** | 通过测试先行、可验证的成功标准来实现杠杆 |
## 四大原则详解
### 1. 编码前思考
**不要假设。不要隐藏困惑。明确权衡。**
LLM 经常在默认情况下选择一种解释并照此执行。本原则强制显式推理:
- **明确陈述假设** — 如果不确定,请提问而不是猜测
- **提出多种解释** — 当存在歧义时不要默默选择
- **在必要时提出异议** — 如果存在更简单的方法,请指出来
- **在困惑时停止** — 指出不清晰的地方并请求澄清
### 2. 简洁优先
**解决问题所需的最少代码。不做任何推测性的工作。**
对抗过度工程的倾向:
- 不要超出要求增加功能
- 不要为一次性使用的代码创建抽象
- 不要增加未被请求的“灵活性”或“可配置性”
- 不要为不可能出现的场景增加错误处理
- 如果 200 行代码能压缩到 50 行,就重写它
**测试标准:** 资深工程师会不会认为这太复杂了?如果是,请简化。
### 3. 精准修改
**只触碰你必须修改的部分。只清理你自己制造的混乱。**
编辑现有代码时:
- 不要“改进”相邻的代码、注释或格式
- 不要重构没有损坏的部分
- 遵循现有风格,即使你通常会采用不同方式
- 如果你注意到无关的死代码,请指出来 — 不要删除它
当你的更改产生孤立代码时:
- 删除 YOUR 更改导致未被使用的导入/变量/函数
- 除非被要求,否则不要删除预先存在的死代码
**测试标准:** 每一行变更都应直接追溯到用户的请求。
### 4. 目标驱动执行
**定义成功标准。循环直到验证通过。**
将命令性任务转化为可验证的目标:
| 与其... | 不如转化为... |
|--------------|-----------------|
| “添加验证” | “为无效输入编写测试,然后让测试通过” |
| “修复该 Bug” | “编写一个重现该 Bug 的测试,然后让测试通过” |
| “重构 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 :
“目标驱动执行”原则捕捉了这一点:将命令性指令转换为带有验证循环的声明性目标。
## 如何判断其是否生效
如果你看到以下情况,说明这些准则正在发挥作用:
- **Diff 中不必要的变减少了** — 仅出现请求的更改
- **因过度复杂导致的重写减少了** — 代码一次性保持简单
- **澄清问题出现在实现之前** — 而不是在错误之后
- **干净、最小的 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辅助编程, Claude, CLAUDE.md, CVE检测, DLL 劫持, Karpathy, LLM, Unmanaged PE, 代码生成, 大语言模型, 恶意代码分析, 提示词工程, 数据管道, 最佳实践, 渗透测试工具, 策略决策点, 编码规范, 自动化开发, 软件工程, 配置文件, 防御加固