3 步装好 andrej-karpathy-skills:4 条准则让 Claude Code 不再自作主张
2026/9/22 11:00:23 网站建设 项目流程

3 步装好 andrej-karpathy-skills:4 条准则让 Claude Code 不再自作主张

【免费下载链接】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 写过代码,多半被它坑过:让你加个小功能,它顺手把旁边三行代码重构得你不认识;一句话的需求,它默默脑补出一整套没人要的"可配置项"。andrej-karpathy-skills 就是冲着这些毛病来的——它把 Andrej Karpathy 对 LLM 编码弊病的观察浓缩成一个 CLAUDE.md 文件,写进 4 条行为准则,让 AI 助手先想清楚再动手、只改该改的、做完能自己验证。下面从症状讲起,到装好跑通,大概 10 分钟读完。

🔍 先认症状:AI 写代码最常见的 4 种"自作主张"

在装任何东西之前,先对照一下你是不是中过招。这 4 条症状就是这个项目要治的病:

  1. 藏着假设不吭声。需求有歧义,它悄悄挑一种解释就开干,错了才回来说"我理解错了"。
  2. 过度工程化。一个 50 行能解决的事,给你生成 300 行,抽象层、策略模式、配置开关一应俱全——每个单独看都"符合最佳实践",但时机全错了。
  3. 顺手乱改。修一个空指针,diff 里却冒出注释被删、引号统一、类型标注被加进来,全跟你的任务无关。
  4. 没有成功标准。你说"把这块优化一下",它就开始改,改到什么程度算完,双方都没定义,最后靠人肉验收。

andrej-karpathy-skills 的思路很直接:不训练新模型、不改工具,就用一个约定文件把 AI 的行为往回拽。

andrej-karpathy-skills 是什么:一个文件,四条规则

这个项目的全部核心就是一个 CLAUDE.md——Claude Code 会自动读取项目根目录下的这个文件,把它当作用户级指令。所以玩法很简单:把 4 条准则放进 CLAUDE.md,AI 每次写代码前都会"看到"这套规矩。

仓库里几个文件各司其职,知道它们在哪,后面排查问题时好查:

  • CLAUDE.md:准则正文,也就是真正生效的那份文件
  • EXAMPLES.md:每个准则对应的真实正反案例
  • CURSOR.md:给 Cursor 用户的配套说明(仓库里已提交了一份 Cursor 规则文件)
  • skills/karpathy-guidelines/:打包成 Claude Code 插件时用的技能定义

它本质是"行为补丁",所以和你自己写的 CLAUDE.md 不冲突,后面装的时候会说怎么合并。

四条准则逐条拆:误区、做法、判断标准

准则一:动手前,先让它把假设说出口

  • 误区:AI 默认自己猜对了。"导出数据"它替你决定了导谁、什么格式、存哪儿。
  • 做法:CLAUDE.md 要求它在实现前明确列出假设;有多个解释就摆出来让你选;有更简单的方案要主动提;卡住了就停下来说卡在哪。
  • 判断标准:实现之前出现"我假设了 X,如果不对请告诉我"这类话,就算合格。

准则二:只写够用的代码,拒绝提前设计

  • 误区:为一次性的逻辑建抽象层,为"以后可能需要"加配置项,为不可能发生的场景写错误处理。
  • 做法:只实现你要的功能;单点使用的代码不抽象;没被要求的"灵活性"一律不加;200 行能压到 50 行就重写。
  • 判断标准:问自己"一个资深工程师会说这写复杂了吗",会,就让它砍掉。

准则三:外科手术式改动,别顺手重构

  • 误区:修 bug 时"顺手"把相邻代码格式化、换引号、加文档字符串,diff 越滚越大。
  • 做法:只改任务直接相关的行;风格跟现有代码走,哪怕你个人不喜欢;发现无关死代码,提一句就好,别删。唯一例外:它自己改出来的孤儿代码(没用的导入、变量),清掉。
  • 判断标准:diff 里每一行改动,都能一句话追溯到你的需求。追溯不到,就是越界。

准则四:先定成功标准,再让它自己循环

Karpathy 原话的大意是:LLM 特别擅长"朝着明确目标反复循环",所以别告诉它"做什么",给它"做到什么算成"。做法是把模糊指令翻译成可验证的目标:

模糊说法可验证的目标
加个校验先写非法输入的测试,再让它们通过
修这个 bug先写一个能复现 bug 的测试,再让它通过
重构 X 模块重构前后现有测试全绿

多步任务则要求它先报一个"步骤 → 验证方式"的短计划,每一步都能单独验收。

⚙️ 实战走一遍:把"订单超时自动取消"做对

拿一条中等难度的需求串一遍这 4 条准则。你提出:"帮我加个功能,超过 24 小时没支付的订单自动取消。"

第一步,它会先反问(准则一)。没装准则前,AI 大概率直接开写。装了之后,你更可能看到这样的开场:

动手前确认三点:1)"24 小时"写死还是可配置?2)谁来触发——定时任务扫描,还是查询时惰性判断?3)只改状态字段,还是要通知用户?如果只改状态,我可以先给最小实现。

问题问在动手之前,就省掉了后面一整轮返工。

第二步,写最小实现(准则二)。这是典型的"过度设计"高发区,两种写法的差距:

class CancelStrategy(ABC): @abstractmethod def should_cancel(self, order) -> bool: ... class TimeBasedStrategy(CancelStrategy): ... @dataclass class CancelPolicy: # 策略+宽限期+通知渠道,共120行 strategy: CancelStrategy grace_period: int
def cancel_stale_orders(max_age_hours=24): """取消超过 max_age_hours 未支付的订单""" stale = db.orders.filter(paid=False, created_lt=now() - hours(max_age_hours)) for order in stale: order.status = 'cancelled' order.save()

上面那个策略模式没毛病,问题在时机——今天只有一个取消规则,抽象就是纯开销。等真出现第二种取消条件时再抽,成本几乎为零。

第三步,控制改动面(准则三)。它应该只做两件事:新增上面的函数,在定时任务里挂一行调用。相邻代码的变量命名、注释、缩进一律不动;如果它注意到调度模块里有个一直没被调用的旧函数,正确反应是提一嘴,而不是删掉。

第四步,闭环验证(准则四)。它给你一句收尾的话应该是:"测试已加:构造一条 25 小时前的未支付订单,断言状态变为 cancelled;原有订单测试全部通过。" 而不是"我改完了,应该没问题"。

📦 安装 andrej-karpathy-skills:插件版和文件版

方式一:装成 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-skills cp andrej-karpathy-skills/CLAUDE.md 你的项目根目录/CLAUDE.md

新项目直接放文件即可;已有 CLAUDE.md 的老项目,把准则内容追加到文件末尾就行——它明确设计为可以和你的项目规则共存,比如你再补一节"TypeScript 用严格模式""所有接口必须有测试"这类自己的条款。

✅ 怎么判断准则真的在起作用

装上之后不用盯着看,过几天检查 diff 和对话记录,看有没有这几个信号:

  • diff 里只剩你点名的改动,"附带改进"消失了
  • 第一次生成的代码就是简单版,不再反复推翻重写
  • 澄清问题出现在实现之前,而不是翻车之后
  • 提交的 PR 干净、最小,没有顺手重构

有一点要心里有数:这套准则整体偏"谨慎"而非"速度"。改个拼写、挪一行这种小事,不用走完整流程,它自己会用判断。设计目标就是减少非琐碎任务上的贵错误,不是把简单任务拖慢。

❓ 常见疑问

会不会拖慢日常开发?会稍微多几句"确认",但只发生在需求有歧义的时候。经验上,一次动手前的确认,比一次方向错的返工便宜得多。

我已经有自己的 CLAUDE.md 了,要覆盖吗?不用覆盖。追加合并即可,项目规则在前,这套通用准则在后,互不干扰。

用 Cursor 的能装吗?可以。仓库里已经提交了一份对应的 Cursor 规则文件,照着 CURSOR.md 的说明把规则复制到你自己的项目规则里就行,内容就是同样这 4 条。

装完之后,建议先只用准则四跑一次:下次让 AI 修 bug,别直接说"修一下",而是让它先写一个复现 bug 的失败测试。看到它真的按这个节奏走,再决定要不要全量信任这套准则。

【免费下载链接】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),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询