multica-ai/andrej-karpathy-skills

GitHub: multica-ai/andrej-karpathy-skills

提供一套 Claude Code 行为约束的 CLAUDE.md 指南,解决 LLM 编码中的假设缺失、设计膨胀与修改失控问题。

Stars: 56152 | Forks: 4772

# Karpathy 启发式 Claude 代码指南 一个 `CLAUDE.md` 文件,用于改善 Claude Code 行为,源自 [Andrej Karpathy 对 LLM 编码陷阱的观察](https://x.com/karpathy/status/2015883857489522876)。 ## 问题 来自 Andrej 的帖子: ## 解决方案 一个文件中的四条原则,直接解决这些问题: | 原则 | 解决的问题 | |------|-----------| | **思考优先于编码** | 错误的假设、隐藏的困惑、缺失的权衡 | | **简洁优先** | 过度复杂、臃肿的抽象 | | **精准修改** | 正交修改、修改不应触及的代码 | | **目标驱动执行** | 通过测试先行、可验证的成功标准来利用杠杆 | ## 四大原则详解 ### 1. 思考优先于编码 **不要假设。不要隐藏困惑。暴露权衡。** LLM 常常静默地选择一个解释并继续执行。此原则强制显式推理: - **明确陈述假设** — 如果不确定,询问而非猜测 - **呈现多种解释** — 存在歧义时不要静默选择 - **必要时提出反对** — 如果有更简单的方法,请指出 - **在困惑时停止** — 指出不清楚的地方并请求澄清 ### 2. 简洁优先 **解决问题的最小代码。没有任何推测。** 对抗过度设计的倾向: - 不包含超出需求的功能 - 不为一次性代码创建抽象 - 不包含未请求的“灵活性”或“可配置性” - 不为不可能的场景编写错误处理 - 如果 200 行可以简化为 50 行,就重写它 **检验标准:** 一位资深工程师会说这段代码过于复杂吗?如果是,就简化。 ### 3. 精准修改 **只修改必须修改的部分。只清理自己的问题。** 编辑现有代码时: - 不要“改进”相邻的代码、注释或格式 - 不要重构没有问题的内容 - 匹配现有风格,即使你会有不同做法 - 如果你注意到无关的废弃代码,请提及它,不要删除它 当你的修改产生孤儿代码时: - 移除你的修改所导致不再使用的导入、变量或函数 - 不要删除预先存在的废弃代码,除非被明确要求 **检验标准:** 每一处修改的行都应直接追溯到用户的请求。 ### 4. 目标驱动执行 **定义成功标准。循环直到验证。** 将命令式任务转换为可验证的目标: | 而不是… | 转换为… | |---------|--------| | “添加验证” | “为无效输入编写测试,然后使其通过” | | “修复错误” | “编写重现它的测试,然后使其通过” | | “重构 X” | “确保测试在前后均通过” | 对于多步骤任务,陈述一个简要计划: ``` 1. [Step] → verify: [check] 2. [Step] → verify: [check] 3. [Step] → verify: [check] ``` 强有力的成功标准能让 LLM 独立循环。弱标准(“让它工作”)需要持续澄清。 ## 安装 **选项 A:Claude Code 插件(推荐)** 在 Claude Code 内部,首先添加市场插件: ``` /plugin marketplace add forrestchang/andrej-karpathy-skills ``` 然后安装插件: ``` /plugin install andrej-karpathy-skills@karpathy-skills ``` 这会将指南作为 Claude Code 插件安装,使该技能在所有项目中可用。 **选项 B:CLAUDE.md(每个项目)** 新项目: ``` 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 ``` ## 关键洞察 来自 Andrej: “目标驱动执行”原则捕捉了这一点:将命令式指令转换为带有验证循环的声明式目标。 ## 如何判断它是否有效 如果看到以下情况,说明这些指南正在起作用: - **差异中不必要的变更更少** — 仅出现请求的改变 - **因过度复杂而导致的重写更少** — 代码首次编写即简洁 - **在实现前提出澄清问题** — 而非在犯错之后 - **干净、简洁的 PR** — 没有随机的重构或“改进” ## 自定义 这些指南设计为可与项目特定指令合并。将它们添加到现有的 `CLAUDE.md` 或创建新的。 对于项目特定规则,添加类似的部分: ``` ## 项目特定指南 - Use TypeScript strict mode - All API endpoints must have tests - Follow the existing error handling patterns in `src/utils/errors.ts` ``` ## 权衡说明 这些指南偏向于**谨慎而非速度**。对于琐碎任务(简单的拼写修正、显而易见的单行代码),请运用判断力——并非每个变更都需要完整严谨。 目标是减少非琐碎工作中的代价高昂的错误,而不是减慢简单任务的速度。 ## 许可证 MIT
标签:AI工程化, AI编程, AI辅助编程, Claude, CVE检测, Karpathy, LLM, SWE-bench, Unmanaged PE, 代码规范, 原则, 变更管理, 开发指南, 最佳实践, 最小可行代码, 测试驱动, 简洁设计, 软件设计, 防御加固