· 约 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 搞复杂,堆砌抽象概念,不清理死代码……”

“它们有时仍会改动或删除自己理解不足的代码和注释,即使与任务无关。“

原则解决什么问题
编码前思考错误假设、隐藏困惑、缺少权衡
简洁优先过度复杂、臃肿抽象
精准修改无关编辑、触碰不应碰的代码
目标驱动通过测试优先、可验证的成功标准

相关页面

评论