一个 CLAUDE.md 管住 Claude Code:andrej-karpathy-skills 的4条行为准则实战指南
【免费下载链接】andrej-karpathy-skillsA single CLAUDE.md file to improve Claude Code behavior, derived from Andrej Karpathy's observations on LLM coding pitfalls.项目地址: https://gitcode.com/GitHub_Trending/an/andrej-karpathy-skills
凌晨一点,你让 Claude Code 修一个空指针异常,它倒是改了,但 diff 里顺手"优化"了旁边三个函数的注释、引号风格和错误处理。这种体验的根源,是 Andrej Karpathy 对 LLM 编码陷阱的观察,而 andrej-karpathy-skills 把它落成了解决方案:一个 CLAUDE.md 指令文件,用 4 条行为准则约束编码助手的行为边界,不引入框架、不改模型。
这4个改坏代码的症状,你大概率都中过
问题不在模型写不出代码,而在它管不住自己的不确定性。
- 默默做假设。你说"加个导出数据功能",它默认全量导出、默认文件格式、默认字段清单,不问一句就写完了。
- 过度工程。一个折扣计算函数,它套上策略模式、抽象类、枚举和配置对象,200 行代码干了 50 行的活。
- 附带损伤。让你修 Bug,它把不相关的注释"改进"了、格式重排了,还加了一堆没人要的类型标注。
- 无验证即交付。说"修好了",但没有测试证明,对错只能靠你肉眼检查。
andrej-karpathy-skills 就是对着这四个症状写的一页行为守则:把"怎么做事"教给助手,而不只是"做什么"。
两分钟启用 andrej-karpathy-skills:插件或 CLAUDE.md 二选一
最短路径只有两条,按生效范围选。
方式一,装成 Claude Code 插件,所有项目全局生效。在 Claude Code 里依次输入:
/plugin marketplace add forrestchang/andrej-karpathy-skills /plugin install andrej-karpathy-skills@karpathy-skills装完即生效,之后每个会话自动带上这套准则。
方式二,只给当前项目用。克隆仓库后,把 CLAUDE.md 的内容放进你项目根目录(已有同名文件就追加到末尾):
git clone https://gitcode.com/GitHub_Trending/an/andrej-karpathy-skillsClaude Code 启动时会自动读取根目录的 CLAUDE.md,无需其他配置。如果你用 Cursor,仓库里已附带一份规则文件.cursor/rules/karpathy-guidelines.mdc,拷到目标项目的同路径下即可,具体说明见仓库的 CURSOR.md;想作为可复用技能分发的话,skills/karpathy-guidelines/SKILL.md是独立版本。
CLAUDE.md 的4条行为准则逐条拆解
这个文件没有任何代码和配置,全部内容就是 4 条约束,每条对准一个症状。
先说假设,再动手。为什么重要:返工最多的工作,都源于模型悄悄选了错误的需求解释并一路狂奔。准则要求写码前把假设写出来,不确定就问;存在多种解释时并排列出,不许默默挑一个。例子:你说"让搜索变快",它会先反问是响应时间、吞吐量还是感知速度,并给出各自的预估工作量,而不是默默上缓存加异步。
只写最小必要的代码。为什么重要:过度抽象不是错,是时机错——在需求还没出现前就加复杂度。准则设了硬清单:不加工没要求的功能、不为单次使用的代码建抽象、不加没被要求的"灵活性";写了 200 行能压到 50 行的,重写。检验标准一句话:资深工程师会说"太复杂"吗?
只改必须改的,只清理自己弄出来的乱子。为什么重要:顺手"改进"让 diff 无法审阅,也让回滚失去意义。规则是:不"改进"相邻代码、匹配现有风格(哪怕你自己写法不同)、发现无关死代码只提及不删除。检验标准:每一行改动都能直接追溯到你的请求。
给成功标准,而不是步骤。为什么重要:Karpathy 的原话是,LLM 很擅长"循环直到达成目标"——你告诉它做什么,它会飘;告诉它达成标准是什么,它会自己跑到终点。所以"加校验"要翻译成"为无效输入写测试,再让它通过";多步骤任务必须先列出"步骤 → 验证"的简要计划。弱标准("让它能跑")会逼得你全程当人肉测试员。
实战:一次 Bug 修复里,4条准则如何接力
假设你的评分功能有个 Bug:出现同分选手时,榜单顺序每次都变。启用准则后,你说"修一下分数排序"。没有 CLAUDE.md 时,它会直接重写排序函数,可能顺带重构半条数据链路;现在它换了个节奏。
第一步,它先复述症状并确认预期行为(准则一):同分顺序不稳定,期望稳定有序。第二步,把任务翻译成可验证目标(准则四):先写一个测试,用"同分选手"作为输入,断言多次排序结果一致——先确认测试失败、复现出 Bug,再动手改。第三步,改动时只给排序键加了一个同分时的姓名 tie-breaker(准则三):没动注释、没动引号、没引入比较器工具类,因为它判断稳定排序足够(准则二)。最后跑一遍既有测试确认无回归。整个交付是一个小提交:一个复现测试加几行排序逻辑,diff 一眼读完。
谨慎优先的代价:3种场景别硬套
这套准则明确偏向"谨慎而非速度",所以它也有适用边界。
- 琐碎任务直接跳过全套流程。改错别字、加一行明显该加的代码,走完整的提问-验证流程只会让你觉得它变慢了。文件开头就声明了这个权衡:非琐碎任务才值得完整严谨。
- 别指望它替你审架构。准则约束的是行为,不替代能力,涉及架构级的取舍,最终拍板还得是人。
- 合并而不是替换。它设计上就是给现有 CLAUDE.md 追加用的,你可以自己加一节项目规则,比如"所有 API 端点必须有测试";但别指望这一页纸修掉模型所有的毛病。
判断它是否生效也有信号:diff 里无关变更变少、澄清问题出现在实现之前而不是犯错之后、代码第一次就是简单的。
andrej-karpathy-skills 的全部价值,就是花两分钟教会助手"先问、少做、改准、验证"四个习惯,把代价高昂的返工变成便宜的一句澄清。下一步建议:把它放进你最近最被它坑的项目,盯一周的 diff,你会直观看到差别。
【免费下载链接】andrej-karpathy-skillsA single CLAUDE.md file to improve Claude Code behavior, derived from Andrej Karpathy's observations on LLM coding pitfalls.项目地址: https://gitcode.com/GitHub_Trending/an/andrej-karpathy-skills
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考