Andrej Karpathy 编码准则落地:karpathy-skills 项目全解析

“LLM 写的代码,不是太多,就是太乱。”
Andrej Karpathy 对 AI 编码缺陷的一句话总结,催生了这个项目。

andrej-karpathy-skills 是一套轻量级的 LLM 编码行为护栏系统,将 Andrej Karpathy 提出的 LLM 编码典型失败模式,提炼为 4 条可落地的编码准则,以纯指令文本的形式适配 Claude Code、Cursor 等 AI 编码助手。

🔗 项目地址:github.com/forrestchang/andrej-karpathy-skills


🔍 项目背景:LLM 编码的四大痛点

Andrej Karpathy 曾系统性地指出,当前 LLM 在辅助编码时存在四类高频失败模式:

# 失败模式 典型表现
1 静默错误假设 不澄清歧义,自行脑补,猜错了也不说
2 过度复杂化 用 1000 行实现本可 100 行完成的逻辑,堆砌冗余抽象
3 无关代码改动 修改不理解的注释、删除正交逻辑、”顺手”重构
4 完成标准模糊 缺乏可验证目标,无法判断任务是否真正完成

这个项目的目标,就是把以上问题逐一消解——用 prompt 级别的指令约束,让 AI 编码助手的行为更可控、更可预期。


🧭 核心四大准则

项目核心提炼了 4 条编码准则,每一条都精准对应上述痛点:

1. Think Before Coding — 编码前先思考

解决问题:LLM 静默做出错误假设、盲目猜答案

核心要求

  • 必须显性陈述假设,不允许隐藏前提
  • 存在歧义时,给出多种解读方案,供用户选择
  • 发现有更简单的方案时,主动提出
  • 有困惑时,先提问而非猜测

2. Simplicity First — 极简优先

解决问题:LLM 过度设计、代码膨胀、过早抽象

核心要求

  • 只编写解决问题的最小可行代码
  • 禁止以下行为:
    • 投机性功能(”以后可能用到”的代码)
    • 过早抽象(单次使用的接口/基类)
    • 非必要的可配置性
    • 无意义的异常处理(catch 住了什么都不做)

3. Surgical Changes — 精准修改

解决问题:LLM 修改与任务无关的代码、范围蔓延

核心要求

  • 仅触碰用户明确要求修改的内容
  • 禁止以下行为:
    • 无关代码的”顺路优化”
    • 风格重构(统一缩进/命名等)
    • 非自身产生的死代码清理

类比外科手术:只处理病灶,不碰周围健康组织。


4. Goal-Driven Execution — 目标驱动执行

解决问题:LLM 无明确可验证的完成标准

核心要求

  • 为每个任务定义可验证的成功标准(例如:修复 bug → 先写复现测试用例,再让用例通过)
  • 循环执行直至达标
  • 多步骤任务需要明确带验证节点的执行计划

🏗️ 项目架构

项目采用极简架构,无任何可运行的应用代码,核心价值全部承载于适配不同 AI 工具的指令文本文件中:

1
2
3
4
5
6
7
8
9
10
11
andrej-karpathy-skills/
├── CLAUDE.md # Claude Code 项目级指令文件
├── README.md / README.zh.md # 说明文档(中英文)
├── EXAMPLES.md # 正反代码对比示例
├── CURSOR.md # Cursor 编辑器适配说明
├── .cursor/
│ └── rules/karpathy-guidelines.mdc # Cursor 项目级自动生效规则
├── .claude-plugin/ # Claude 插件配置
└── skills/
└── karpathy-guidelines/
└── SKILL.md # Claude Code 全局技能定义

三大核心指令文件(CLAUDE.md / .cursor/rules/karpathy-guidelines.mdc / skills/karpathy-guidelines/SKILL.md内容完全一致,仅通过不同的元数据封装适配对应工具的原生格式,无需任何构建或转换脚本


🔌 三种集成方式

根据使用场景,项目提供了三条集成路径:

集成方式 适配工具 生效范围 操作成本 适用场景
Claude Code Plugin Claude Code 全局(所有项目) 2 条 CLI 命令 多仓库开发,一次安装全场景生效
CLAUDE.md 文件 Claude Code 单项目 1 条 curl 命令 单项目使用,或团队需纳入版本控制
Cursor Rule(.mdc 文件) Cursor 单项目 复制 1 个文件 Cursor 用户,规则自动生效

✅ 效果验证:4 个可观测信号

准则生效后,可以通过以下 4 个维度验证效果:

  1. PR/diff 干净:无不必要的修改,仅保留用户明确要求的代码变更
  2. 首次实现即满足极简要求:无需反复要求 LLM “简化重写”
  3. LLM 先问后做:编码前主动提出澄清问题,而非先猜错再返工
  4. 无范围外操作:无意外的重构、格式修改、无关注释删除

⚠️ 使用注意事项

准则天然偏向谨慎优先而非速度优先,以下场景可灵活放宽:

  • 改错别字、变量名等 trivial 修改
  • 单行代码的明确替换
  • 完全不涉及业务逻辑的格式调整

初期交互可能因 LLM 前置提问显得略慢,但长期来看,可大幅减少交互轮次,显著提升复杂编码任务的输出质量


📊 核心价值总结

维度 改善效果
代码质量 减少无意义过度设计,代码更简洁可读
变更安全性 避免无关改动,降低引入新 bug 的风险
可验证性 以可验证目标为导向,改动能精准解决问题
协作效率 贴合资深工程师的编码思维,减少 AI 编码的”不接地气”问题

简而言之,这个项目把 Andrej Karpathy 对 LLM 编码的洞见,落地成了一套可直接部署的 AI 编码行为准则,让 Claude Code、Cursor 等工具写出更符合人类工程实践的代码。

对于频繁使用 AI 辅助编码的工程师来说,这 4 条准则值得认真落地。


参考资料:项目 GitHub · Zread 解读