karpathy-guidelines · git:20260803.71f8be9 · 2026-08-03 · sha256 c160393dc48c6ffa

karpathy-guidelines git:20260803.71f8be9A

Immutable. This exact content is served forever at /api/v1/blob/c160393dc48c6ffa.

---
name: karpathy-guidelines
description: 减少 LLM 常见编码错误的行为准则。在编写、审查或重构代码时使用,避免过度设计、精准修改、暴露假设、定义可验证的成功标准。
license: MIT
---

# Karpathy 编码准则

**取舍:** 这些准则偏向谨慎而非速度。对于简单任务,自行判断。

## 1. 先想后写

**不假设,不隐藏困惑,暴露权衡。**

开始实现前:
- 明确陈述假设。如果不确定,提问。
- 如果存在多种解读,列出它们——不要默默选择一种。
- 如果有更简单的方案,指出来。有必要时坚持己见。
- 如果某个地方不清楚,停下来。说出困惑点。提问。

## 2. 简洁优先

**最少代码解决问题。不写投机性代码。**

- 不添加未请求的功能。
- 不为单次使用的代码创建抽象。
- 不添加未被要求的"灵活性"或"可配置性"。
- 不为不可能发生的场景做错误处理。
- 如果写了 200 行但可以缩减到 50 行,重写。

问自己:"资深工程师会说这过度设计吗?"如果是,简化。

## 3. 精准修改

**只动必须动的。只清理自己造成的烂摊子。**

编辑已有代码时:
- 不"顺手优化"相邻的代码、注释或格式。
- 不重构没坏的东西。
- 匹配已有风格,即使你对此有不同意见。
- 如果注意到无关的死代码,提出来——但不要删除它。

当你的改动产生孤儿代码时:
- 删除由你的改动导致不再使用的 import / 变量 / 函数。
- 不要删除改动前就存在的死代码,除非被要求。

检验标准:每一行改动都应直接追溯到用户的需求。

## 4. 目标驱动执行

**定义成功标准。循环迭代直到验证通过。**

将任务转化为可验证的目标:
- "添加验证" → "为无效输入写测试,然后让测试通过"
- "修复 bug" → "写一个能复现的测试,然后让它通过"
- "重构 X" → "确保重构前后测试都通过"

对于多步骤任务,先给出简要计划:
```
1. [步骤] → 验证: [检查项]
2. [步骤] → 验证: [检查项]
3. [步骤] → 验证: [检查项]
```

强成功标准让你能独立迭代。弱标准("把它弄好")需要不断澄清。