Karpathy风格AI编码指南
andrej-karpathy-skills
基于Andrej Karpathy对LLM编码缺陷的观察,通过一套核心原则优化Claude Code的行为,减少过度工程和错误假设。

试试这样做
请根据Karpathy指南原则,先分析需求中的潜在歧义,列出你的假设,并在编写代码前确认实现方案。
在进行代码重构前,请先定义明确的成功标准和测试用例,确保修改仅限于目标范围,不触碰无关代码。
请审查当前代码实现,如果存在过度抽象或不必要的复杂逻辑,请按简洁至上原则进行精简。
详细介绍
Karpathy 风格的 Claude Code 指南
本技能提供了一套 CLAUDE.md 文件指南,灵感来源于 Andrej Karpathy 对 LLM 编码陷阱的观察,旨在改善 Claude Code 的行为,减少错误、避免过度复杂化、提高代码质量。适用于使用 Claude Code 进行编程的开发者。
适用场景
- 任何使用 Claude Code 进行代码生成、编辑或重构的项目
- 当你希望避免过度复杂的代码、不必要的抽象和意外修改时
- 当你希望 Claude Code 在实现前澄清假设并展示权衡时
核心原则
1. 先思考再编码
- 明确陈述假设 —— 如果不确定,询问而不是猜测
- 呈现多种解释 —— 存在歧义时不要默默选择
- 在必要时提出异议 —— 如果有更简单的方法,说出来
- 困惑时停止 —— 指出不清楚的地方并请求澄清
2. 简洁优先
- 只完成要求的功能,不添加额外功能
- 不为一次性使用的代码创建抽象
- 不添加未要求的“灵活性”或“可配置性”
- 不为不可能的场景处理错误
- 如果 200 行代码可以缩减为 50 行,重写它
检验标准: 资深工程师是否会觉得过于复杂?如果是,请简化。
3. 精准修改
- 只修改必须修改的部分
- 不要“改进”相邻的代码、注释或格式
- 不要重构没有问题的代码
- 匹配现有风格,即使你更喜欢另一种方式
- 如果发现无关的死代码,提出来 —— 不要删除它
- 删除你的修改导致未使用的导入/变量/函数(但不要删除已有的死代码,除非被要求)
4. 目标驱动执行
- 在实现前定义成功标准
- 将命令式任务转化为可验证的目标
- 对于多步骤任务,列出简要计划并附上验证步骤
| 不要这样做... | 而是这样做... |
|---|---|
| “添加验证” | “编写无效输入的测试,然后让它们通过” |
| “修复 bug” | “编写能复现它的测试,然后让它们通过” |
| “重构 X” | “确保测试在重构前后都通过” |
工作方式
本技能提供了一套指南,Claude Code 在交互时会遵循这些指南。它鼓励明确推理、最小化代码更改和面向目标的验证。你可以将其与项目特定规则结合,放在 CLAUDE.md 文件中。
你会获得
- 差异中的不必要更改更少 —— 只出现请求的更改
- 由于过度复杂化而重写的次数更少 —— 代码从一开始就简洁
- 在实现之前提出澄清问题 —— 而不是在错误之后
- 干净、最小的 PR —— 没有附带的重构或“改进”
关键见解
“LLMs are exceptionally good at looping until they meet specific goals... Don't tell it what to do, give it success criteria and watch it go.” — Andrej Karpathy
“目标驱动执行”原则体现了这一点:将命令式指令转化为带有验证循环的声明式目标。
自定义
这些指南可以与项目特定指令合并。添加类似以下部分:
## 项目特定指南
- 使用 TypeScript 严格模式
- 所有 API 端点必须有测试
- 遵循 `src/utils/errors.ts` 中的现有错误处理模式
权衡说明
这些指南偏向于谨慎而非速度。对于简单任务(如修复拼写错误、明显的单行修改),请自行判断 —— 并非每次更改都需要完整的严谨性。目标是在非平凡工作上减少代价高昂的错误,而不是拖慢简单任务。
兼容性
本技能可与 Claude Code 一起使用。它还包含用于 Cursor 的规则(参见相关文档)。