12万Star的Karpathy skills:四原则修正 LLM 编码行为
项目地址:https://github.com/forrestchang/andrej-karpathy-skills
许可证:MIT
核心文件:单个 CLAUDE.md
一、项目背景
Andrej Karpathy 在社交媒体上指出了 LLM 编码的三大顽疾:模型替你做错误假设然后一错到底、过度复杂化代码和抽象、作为副作用随意删除或修改它不完全理解的代码。本项目将 Karpathy 的观察浓缩为四条原则,写入一个 CLAUDE.md 文件,直接修正 Claude Code 的行为模式。
与试图"拥有流程"的框架(GSD、BMAD 等)不同,这套指南偏向谨慎而非速度,通过约束代理行为而非接管流程来提升输出质量。
二、四大原则
原则一:Think Before Coding(先想后写)
核心:不要假设,不要隐藏困惑,呈现权衡。
LLM 倾向于默默选择一种解释然后一路跑下去。本原则强制代理进行显式推理:不确定时主动提问而非猜测;存在歧义时呈现多种解读而非静默选择;更简单的方案存在时必须反推;困惑时停下来命名不清楚之处并请求澄清。这一原则将"事后修正"转化为"事前对齐"。
原则二:Simplicity First(简单优先)
核心:用最少的代码解决问题,不做投机性开发。
对抗过度工程化的倾向:不实现未被要求的功能,不为单次使用的代码创建抽象,不添加未被请求的"灵活性"或"可配置性",不为不可能发生的场景写错误处理。检验标准:一个资深工程师会说这段代码过度复杂吗?如果是,就简化它。
原则三:Surgical Changes(外科手术式变更)
核心:只触碰必须触碰的代码,只清理自己制造的混乱。
编辑现有代码时:不"改进"相邻代码、注释或格式;不重构没坏的东西;匹配已有风格;发现无关死代码时只提及不删除。变更产生孤立项时:移除自己的变更导致的无用导入/变量/函数,但不删除预先存在的死代码。检验标准:每一行变更都应能追溯到用户请求。
原则四:Goal-Driven Execution(目标驱动执行)
核心:定义成功标准,循环直至验证。
将命令式任务转化为可验证目标:“添加验证” → “为无效输入写测试,然后让测试通过”;“修复 bug” → “写一个能复现的测试,然后让测试通过”;“重构 X” → “确保重构前后测试通过”。多步任务要求声明简短计划,每步附带验证检查点。强成功标准让 LLM 独立循环,弱标准则需要不断人工干预。
三、安装方式
| 方式 | 命令 | 适用场景 |
|---|---|---|
| Claude Code 插件(推荐) | /plugin install andrej-karpathy-skills@karpathy-skills | 跨项目全局生效 |
| CLAUDE.md(新项目) | curl -o CLAUDE.md <raw-url> | 单项目使用 |
| CLAUDE.md(已有项目) | 追加到现有 CLAUDE.md | 与项目规则合并 |
| Cursor | 使用.cursor/rules/karpathy-guidelines.mdc | Cursor 用户 |
四、效果验证
指南生效的标志:diff 中不必要的变更减少;因过度复杂导致的重写减少;澄清问题出现在实现之前而非之后;PR 干净最小,无顺手重构或"改进"。
五、适用与不适用
适用于大多数需要 AI 代理修改代码的场景,尤其是代码审查和协作开发。对于简单的 typo 修复或显而易见的单行变更,可酌情跳过完整流程——指南偏向谨慎,但不意味着每个变更都需要全套仪式。
