· 约 4 分钟 · 1,512 字
Karpathy Coding Guidelines
Karpathy Coding Guidelines
Andrej Karpathy 关于如何改善 AI Agent 编码质量的行为准则。forrestchang 将其打包为 Claude Code 插件 / Cursor 规则 / 技能。
核心洞察:“LLM 非常擅长循环执行直到达成特定目标……不要告诉它该做什么,给它成功标准,然后看着它完成。”— Karpathy
四大原则
1. Think Before Coding(编码前思考)
不要假设。不要隐藏困惑。呈现权衡。
LLM 常默默选一种解释直接执行。这个原则强制明确推理:
- 明确说明假设 — 不确定就反问
- 呈现多种解释 — 有歧义不默默选择
- 适时提出异议 — 有更简单方法就说出来
- 困惑时停下来 — 指出不清楚的地方要求澄清
2. Simplicity First(简洁优先)
最少代码解决问题。不多写一行。
对抗过度工程倾向:
- 不添加要求之外的功能
- 不为一次性代码创建抽象
- 不添加未要求的灵活性/可配置性
- 不为不可能场景做错误处理
- 200 行能写成 50 行 → 重写
检验标准:「资深工程师会觉得这过于复杂吗?」
3. Surgical Changes(精准修改)
只碰必须碰的。只清理自己的混乱。
编辑现有代码时:
- 不”顺手改进”相邻代码、注释或格式
- 不重构没坏的东西
- 匹配现有风格(即使你更倾向不同写法)
- 发现无关死代码 → 提一下,别删
改动产生孤儿代码时:
- 删你改出来的无引用导入/变量/函数
- 不删预先存在的死代码(除非被要求)
检验标准: 每一行修改都应直接追溯到用户请求。
4. Goal-Driven Execution(目标驱动)
定义成功标准。循环验证直到达成。
| 错误做法 | 正确做法 |
|---|---|
| ”添加验证" | "为无效输入写测试,然后让它们通过" |
| "修复 bug" | "写重现 bug 的测试,然后让它通过" |
| "重构 X" | "确保重构前后测试都通过” |
多步骤任务格式:
1. [步骤] → 验证: [检查]2. [步骤] → 验证: [检查]3. [步骤] → 验证: [检查]解决的问题(来自 Karpathy 推文)
“模型会代你做错误假设,然后不假思索地执行。它们不管理自身的困惑,不呈现矛盾,不展示权衡。”
“它们真的很喜欢把代码和 API 搞复杂,堆砌抽象概念,不清理死代码……”
“它们有时仍会改动或删除自己理解不足的代码和注释,即使与任务无关。“
| 原则 | 解决什么问题 |
|---|---|
| 编码前思考 | 错误假设、隐藏困惑、缺少权衡 |
| 简洁优先 | 过度复杂、臃肿抽象 |
| 精准修改 | 无关编辑、触碰不应碰的代码 |
| 目标驱动 | 通过测试优先、可验证的成功标准 |
相关页面
- andrej-karpathy-skills — GitHub 仓库(Claude Code 插件 + Cursor 规则)
- nn-zero-to-hero
- hermes-agent