Karpathy 编程指导原则
Karpathy 编程指导原则是基于 Andrej Karpathy 对大语言模型编程缺陷观察而总结的四项核心原则,旨在改善 AI 编程助手的代码行为,避免常见的编程陷阱。
核心问题
Karpathy 指出了大语言模型在编程时的三个主要问题:模型会代替用户做出错误假设并继续执行,不会管理自己的困惑状态,不寻求澄清,不暴露不一致性,不展示权衡选择,在应该反驳时也不会反驳;它们倾向于过度复杂化代码和 API,膨胀抽象层,不清理死代码,用 1000 行代码实现本来 100 行就能完成的功能;有时会改变或删除它们不够理解的注释和代码,即使这些与当前任务无关。^[inbox(剪藏进来的)__SMARTclip__forrestchang-andrej-karpathy-skills- A single CLAUDE.md file to improve Claude C__e35e9215.md]
四项核心原则
1. 编程前先思考 (Think Before Coding)
不要假设,不要隐藏困惑,暴露权衡选择。
这一原则要求明确表达推理过程:明确陈述假设,如果不确定就询问而不是猜测;当存在歧义时展示多种解释,不要默默选择;当存在更简单的方法时要推回;遇到困惑时停下来,说明不清楚的地方并寻求澄清。^[inbox(剪藏进来的)__SMARTclip__forrestchang-andrej-karpathy-skills- A single CLAUDE.md file to improve Claude C__e35e9215.md]
2. 简洁优先 (Simplicity First)
用最少的代码解决问题,不做投机性开发。
对抗过度工程化的倾向:不添加超出要求的功能;不为单次使用的代码创建抽象;不添加未被要求的"灵活性"或"可配置性";不为不可能的场景添加错误处理;如果 200 行代码可以用 50 行实现,就重写它。判断标准是:资深工程师会说这个代码过于复杂吗?如果是,就简化它。^[inbox(剪藏进来的)__SMARTclip__forrestchang-andrej-karpathy-skills- A single CLAUDE.md file to improve Claude C__e35e9215.md]
3. 精准修改 (Surgical Changes)
只触碰必须修改的部分,只清理自己造成的混乱。
编辑现有代码时:不要"改进"相邻的代码、注释或格式;不要重构没有问题的代码;匹配现有风格,即使你会用不同方式实现;如果注意到无关的死代码,提及它但不要删除。当你的修改产生孤立代码时:删除你的修改导致未使用的导入/变量/函数;不要删除预先存在的死代码,除非被要求。判断标准是:每一行修改都应该能直接追溯到用户的请求。^[inbox(剪藏进来的)__SMARTclip__forrestchang-andrej-karpathy-skills- A single CLAUDE.md file to improve Claude C__e35e9215.md]
4. 目标驱动执行 (Goal-Driven Execution)
定义成功标准,循环直到验证通过。
将命令式任务转换为可验证的目标。例如,将"添加验证"转换为"为无效输入编写测试,然后让它们通过";将"修复 bug"转换为"编写重现它的测试,然后让它通过";将"重构 X"转换为"确保重构前后测试都通过"。对于多步骤任务,陈述简要计划,每步都有验证检查。强有力的成功标准让 LLM 能够独立循环,而弱标准("让它工作")需要持续澄清。^[inbox(剪藏进来的)__SMARTclip__forrestchang-andrej-karpathy-skills- A single CLAUDE.md file to improve Claude C__e35e9215.md]
核心洞察
Karpathy 的关键洞察是:"LLMs 在循环直到满足特定目标方面表现出色...不要告诉它做什么,给它成功标准并看着它执行。"目标驱动执行原则体现了这一点:将命令式指令转换为带有验证循环的声明式目标。^[inbox(剪藏进来的)__SMARTclip__forrestchang-andrej-karpathy-skills- A single CLAUDE.md file to improve Claude C__e35e9215.md]
效果评估
这些指导原则发挥作用的标志包括:差异中不必要的更改更少,只出现请求的更改;因过度复杂化导致的重写更少,代码第一次就很简单;澄清问题出现在实现之前,而不是犯错之后;干净、最小化的 PR,没有顺便重构或"改进"。^[inbox(剪藏进来的)__SMARTclip__forrestchang-andrej-karpathy-skills- A single CLAUDE.md file to improve Claude C__e35e9215.md]
权衡考虑
这些指导原则倾向于谨慎而非速度。对于琐碎任务(简单的拼写错误修复、明显的单行代码),需要运用判断力——不是每个更改都需要完整的严格性。目标是减少非琐碎工作中的代价高昂的错误,而不是拖慢简单任务。^[inbox(剪藏进来的)__SMARTclip__forrestchang-andrej-karpathy-skills- A single CLAUDE.md file to improve Claude C__e35e9215.md]
来源
- inbox(剪藏进来的)__SMARTclip__forrestchang-andrej-karpathy-skills- A single CLAUDE.md file to improve Claude C__e35e9215.md