“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 | andrej-karpathy-skills/ |
三大核心指令文件(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 个维度验证效果:
- PR/diff 干净:无不必要的修改,仅保留用户明确要求的代码变更
- 首次实现即满足极简要求:无需反复要求 LLM “简化重写”
- LLM 先问后做:编码前主动提出澄清问题,而非先猜错再返工
- 无范围外操作:无意外的重构、格式修改、无关注释删除
⚠️ 使用注意事项
准则天然偏向谨慎优先而非速度优先,以下场景可灵活放宽:
- 改错别字、变量名等 trivial 修改
- 单行代码的明确替换
- 完全不涉及业务逻辑的格式调整
初期交互可能因 LLM 前置提问显得略慢,但长期来看,可大幅减少交互轮次,显著提升复杂编码任务的输出质量。
📊 核心价值总结
| 维度 | 改善效果 |
|---|---|
| 代码质量 | 减少无意义过度设计,代码更简洁可读 |
| 变更安全性 | 避免无关改动,降低引入新 bug 的风险 |
| 可验证性 | 以可验证目标为导向,改动能精准解决问题 |
| 协作效率 | 贴合资深工程师的编码思维,减少 AI 编码的”不接地气”问题 |
简而言之,这个项目把 Andrej Karpathy 对 LLM 编码的洞见,落地成了一套可直接部署的 AI 编码行为准则,让 Claude Code、Cursor 等工具写出更符合人类工程实践的代码。
对于频繁使用 AI 辅助编码的工程师来说,这 4 条准则值得认真落地。