andrej-karpathy-skills 机制剖析:一份 CLAUDE.md 如何改变 LLM 编码行为
【免费下载链接】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
你大概遇到过这种场面:告诉编码助手"加个导出用户数据的功能",它不问一句,默认导出全部用户、全部字段,文件写到根目录,写完跑起来发现全不对。问题往往不在模型不会写代码,而在它悄悄做了假设然后一路跑下去。andrej-karpathy-skills 项目把 Andrej Karpathy 对 LLM 编码缺陷的观察,落成了一份 CLAUDE.md 行为规则文件,用四条准则改变助手的工作方式。下文拆解这四条机制,并给出接入与验证办法。
项目要解决的问题:针对 LLM 的四个缺陷
项目 README 直接引用了 Karpathy 的原话:模型会做错误假设且不检查、偏爱把代码和 API 过度复杂化、还会顺手改动它并不理解的代码。落到具体缺陷:
| 缺陷 | 典型表现 |
|---|---|
| 静默假设、不澄清 | 面对"导出用户数据",默认所有用户、所有字段,直接开写 |
| 过度工程 | 简单折扣计算写抽象类、策略模式、配置对象,千行处可百行 |
| 夹带无关修改 | 修个 bug 同时"改进"注释、换引号风格、加类型提示 |
| 没有成功标准 | "修复鉴权"变成"审查、改进、测试",无可验证定义 |
机制拆解:每条准则改变了什么行为
编码前思考:把"猜"换成"问"
规则一句话:实现前明确陈述假设;存在多种解释就列出来,不默默选一个;有不清楚的地方就停下、点名、提问。
前后差异可对照 EXAMPLES.md 核对。以"让搜索更快"为例:
- 规则生效前:模型直接加缓存、数据库索引、异步处理,一口气写约 200 行优化代码
- 规则生效后:列出"降低响应时延、提升并发吞吐、改善感知速度"三种解释,各附预估工作量,反问你最在意哪一种
简单优先:以"高级工程师的判断"为标尺
规则:只写解决问题的最小代码,不写任何投机性功能;写了 200 行而 50 行能搞定,就重写。内置自检是一句话:"高级工程师会说这过度复杂吗?"是就简化。
EXAMPLES.md 中"加个折扣计算函数"的对照:生效前输出 DiscountStrategy 抽象类、两个策略实现和配置数据类,30 行起步;生效后就是一个函数,amount * (percent / 100)几行完事。重点不是前者写错了,而是复杂性提前进场——更难读、更难测、更慢。
外科手术式修改:每一行改动都必须可追溯
规则:只碰必须碰的;只清理自己造成的乱;即使你个人写法不同,也要匹配现有风格;发现无关死代码只提出来,不删除。
可核对的例子是"修复空邮箱导致校验器崩溃":生效前,模型顺手强化邮箱校验、新增用户名长度检查、重写注释;生效后,diff 只剩改动空值处理的两行,原有风格原样保留。收尾自检一句话:每一行被改动的代码都能追溯到用户请求。
目标驱动执行:把命令句改写成可验证目标
规则:定义成功标准,循环执行直到验证通过。命令式任务按固定方式转写:
| 原始命令 | 可验证目标 |
|---|---|
| "加个校验" | "为非法输入写测试,然后让它通过" |
| "修这个 bug" | "写一个能复现它的测试,然后让它通过" |
| "重构 X" | "重构前后测试都通过" |
多步任务还要求列出"步骤 → 验证点"的计划。标准强,模型就能独立循环;标准弱(比如"让它能跑"),就得你全程盯着。
边界与代价:什么时候起效,什么时候可以放宽
这套规则在非平凡任务上收益最大:改存量代码库、多步骤重构、需要精确控制产出的场景。代价也很实在——模型动手前"话更多"了(先列假设、先给标准),起步慢一拍,换来的是更干净的 diff 和更少的返工。README 的 Tradeoff Note 说得很直白:准则偏向谨慎而非速度;改错别字、明显的一行修复这类琐事,凭判断放宽即可,不必每处改动都走全套流程。
接入与验证路径:三步启用并确认生效
- 拿到规则:
git clone https://gitcode.com/GitHub_Trending/an/andrej-karpathy-skills - 集成:Claude Code 走插件市场安装,一次装好、全项目生效;按项目配置则把 CLAUDE.md 放进项目根目录(已有文件则追加);用 Cursor 的话,把
.cursor/rules/karpathy-guidelines.mdc拷进目标项目的.cursor/rules/目录 - 验证:启用后故意下一条模糊指令,看它是否先列假设、先给成功标准;再看 diff 是否只含你要的改动。README 的 "How to Know It's Working" 给了四个判据:diff 中无关改动变少、因过度复杂而重写变少、澄清问题出现在实现之前、PR 干净无顺手重构
这个项目的价值不在让模型写码更快,而在让它先问再写、只写必要、只改该改——行为可控,代码可审。建议你现在就把一句"每一行被改动的代码都必须能追溯到我的请求"加进项目 CLAUDE.md,下一个 PR 的 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),仅供参考