Karpathy 的 LLM 编码规则:思考、简化与迭代
安迪(Andrej Karpathy)的 LLM 编码规则:思考、简化与迭代
大型语言模型(LLM)如 Claude 在代码生成方面具有巨大优势,但它们也可能产生凌乱、过度设计甚至错误的结果。安德烈·卡尔帕提(Andrej Karpathy)——该领域的先驱——将其观察总结为四个原则,帮助开发者在使用 Claude 时编写可靠、简洁的代码。本教程逐条阐释每条规则,说明其重要性,并展示如何将其嵌入您的工作流程中。
1. 先思考再编码
目标:凸显假设、澄清歧义,并在更安全的决策可行时采取回避。
当 Claude 阅读任务时,它往往会 推断 一种理解并直接执行,而不询问。这会导致隐藏的困惑或错误的权衡。
- 显式声明假设:在提示的最开始列出先前的假设。
- 请求澄清:若需求含糊不清,先生成向用户提问的句子。
- 展示可选方案:提供多种可行方案,而不是立即锁定单一路径。
- 不确定时停止:指出不明确的部分,要求更多上下文后再继续编码。
实用技巧:在每个生成文件的开头加入注释块,简要概述假设与已选策略。
2. 简约至上
目标:优先使用最简单满足规范的代码。
Claude 喜欢尝试所有可能的抽象,往往会产出 1,000 行的代码,而实际上 50 行足矣。简约降低了后续开发者的认知负担,缩小了缺陷表面。
- 移除不必要功能:除非规范明确要求,否则不要添加可选参数。
- 避免通用框架:若一个小帮助函数能解决问题,就直接编写;不要预先构建整个类来“以防后用”。
- 保持错误处理实际:只处理现实可出现的错误路径,避免对不可能状态做保护。
- 遵循“200 行以上 = 50 行”规则:每当代码超出 200 行时,进行重构或删减。
使用 高级工程师测试:高级工程师会说这段代码过于复杂吗? 若答案是“Yes”,请简化。
3. 精准修改
目标:仅修改用户明确要求的部分。
在调整现有代码时,Claude 有时会无意间触及不相关部分,改动注释或不必要的重构。
- 不触碰无关代码:变更限定在直接响应请求的行上。
- 保持风格:遵循项目的风格指南;模仿现有模式。
- 不删除原有死代码:若发现孤立函数,只需提及它——除非另有请求别删除。
- 自己清理:移除因修改而变得未使用的导入或变量。
变更后运行 diff‑review 循环,确认没有意外修改。
4. 目标驱动执行
目标:定义明确的成功标准,并循环验证直至满足。
此原则利用 Claude 的迭代优势,持续到可验证条件满足。与其下达命令式指令,不如明确期望的最终状态。
- 描述目标:如“添加输入校验并通过 API 响应返回错误信息”。
- 定义验证步骤:如“为空输入编写单元测试;运行并确认失败;添加校验;重新运行并确认成功”。
- 制定简短计划:按步骤列出检查点。
- 循环:每次修改后,要求 Claude 运行或评估测试。
伪代码示例:
1. 为空输入添加单元测试 → 验证失败。
2. 插入校验逻辑 → 验证失败。
3. 调整逻辑使测试通过 → 验证成功。
如何安装这些指南
仓库中包含单个 CLAUDE.md 文件,您可将其添加至任何项目。
# 方案 A:作为 skills CLI 插件
npx skills add forrestchang/andrej-karpathy-skills
# 方案 B:直接拷贝文件
# 新项目
curl -o CLAUDE.md https://raw.githubusercontent.com/forrestchang/andrej-karpathy-skills/main/CLAUDE.md
# 已有项目(追加)
echo "" >> CLAUDE.md
curl https://raw.githubusercontent.com/forrestchang/andrej-karpathy-skills/main/CLAUDE.md >> CLAUDE.md
文件就绪后,以 目标驱动执行 格式提示 Claude:Add data validation; Write tests that catch it; Run until tests pass. Claude 将自动参考这些准则。
实际案例
场景:团队正在构建一个简单的用户注册 API。需求:
1. 接收 name、email 与 password;
2. 验证邮箱格式;
3. 拒绝重复邮箱;
4. 存储密码哈希。
按 Karpathy 规则操作: 1. 先思考 – 询问 API 对重复邮箱应返回 409,还是通用 400? 2. 简约 – 仅使用一个邮箱校验助手,而非完整外部服务。 3. 精准 – 只修改控制器文件,不触碰中间件。 4. 目标驱动 – 设定成功准则:合法/非法输入的单元测试。
Claude 将产生最小、结构良好的代码,遵循项目风格,开发者可轻松查看仅包含必要更改的清洁 PR。
小结
采纳 Karpathy 的四大原则,可显著减少使用 LLM 编程时的噪音与错误。通过聚焦假设、简约、精准修改与明确目标,开发者即可充分利用 Claude 的能力,同时保持代码库的可维护性与可靠性。
尝试在下一个项目中添加 CLAUDE.md,并观测您的代码循环更智能、更专注。