Karpathy 的 Claude Code 黄金法则:让 AI 编程助手真正听话的 CLAUDE.md

forrestchang/andrej-karpathy-skills 是今日 GitHub Trending 第一名,一个单一 CLAUDE.md 文件,提炼自 Andrej Karpathy 对 LLM 编码陷阱的深刻洞察,通过四大核心原则——编码前思考、简洁优先、精准修改、目标驱动执行——系统性解决 AI 代码助手过度复杂化、擅自假设和乱改代码的问题。今日新增 5,733 star,总计 28,330 star。

项目概述

andrej-karpathy-skills 是今日 GitHub Trending 排行榜第一名,由开发者 forrestchang 维护,灵感直接来源于 AI 领域知名研究者 Andrej Karpathy 的推文。

这个项目的核心只有一个文件:CLAUDE.md。它通过向 Claude Code 注入一套严格的行为准则,系统性地解决了 LLM 编程助手在实际使用中最令人头疼的三类问题。

今日数据(2026-04-14):⭐ 28,330 stars | 今日新增 5,733 | Fork 2,328


为什么需要它?

Karpathy 观察到,LLM 在辅助编程时存在三个根深蒂固的问题:

1. 擅自假设——模型遇到不确定的地方,不会提问,而是自行脑补并直接执行。不呈现权衡取舍,不寻求澄清,悄悄做了你不想要的决定。

2. 过度复杂化——倾向于用 1000 行代码实现本可用 100 行完成的功能。臃肿的抽象层、不必要的"灵活性"设计、用不到的错误处理……代码越堆越厚。

3. 副作用编辑——修改一个函数时,顺手"优化"了旁边的注释和代码,删掉了它觉得没用但实际上有用的东西。每次 PR 都有意料之外的 diff。

这三个问题叠加在一起,导致 AI 辅助编程的实际体验往往令人抓狂:你说修个 bug,它给你重构了半个项目。


四大核心原则

原则一:编码前思考(Think Before Coding)

不要假设。不要隐藏困惑。呈现权衡取舍。

具体要求 Claude Code 做到:明确陈述自己的假设;存在多种解释时不要默默选择;遇到更简单方法时主动说出来;遇到困惑时停下来请求澄清,而不是硬着头皮猜。

原则二:简洁优先(Simplicity First)

用最少的代码解决问题。不做推测性开发。

不实现没被要求的功能,不为一次性代码创建抽象,不添加没被要求的"可配置性"。检验标准是:如果一个高级工程师看到这段代码会觉得过于复杂,就说明还需要简化。

如果 200 行能简化成 50 行,就重写。

原则三:精准修改(Surgical Changes)

只修改必须修改的部分。只清理自己造成的混乱。

编辑现有代码时,不要"顺手改进"相邻代码,不要重构没有问题的部分,匹配现有风格即使自己会有不同做法。如果注意到无关的死代码,提及但不删除。

验证标准很干脆:每一行变更都应直接追溯到用户请求。

原则四:目标驱动执行(Goal-Driven Execution)

定义成功标准。循环验证直到通过。

这是 Karpathy 最重要的洞察:LLMs 在"循环迭代直到满足特定目标"方面表现出色。因此,与其告诉模型做什么,不如给它成功标准,让它自己执行验证循环。

替代命令式指令 转换为目标导向
“添加验证” “为无效输入编写测试,然后使其通过”
“修复 bug” “编写复现该 bug 的测试,然后使其通过”
“重构 X” “确保重构前后测试都通过”

安装方法

方案 A:Claude Code 插件(推荐,全局生效)

1
2
3
4
5
# 添加市场
/plugin marketplace add forrestchang/andrej-karpathy-skills

# 安装插件
/plugin install andrej-karpathy-skills@karpathy-skills

安装后这套规则在所有项目中自动生效。

方案 B:CLAUDE.md 文件(按项目生效)

1
2
3
4
5
6
# 新项目
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

如何验证是否生效

如果以下现象减少了,说明规则在起作用:

  • PR 里不再有意料之外的变更——只有你请求的那些改动
  • 代码第一次就是简洁的——不再需要让模型"重写,但简单一点"
  • 澄清问题出现在实现之前——而不是犯错之后
  • 没有"顺手重构"——模型不再擅自清理它认为不好的旧代码

一点额外说明

这套指南偏向谨慎而非速度。对于简单的拼写修正、明显的一行修复,不必每次都走完整流程。它的目标是在非琐碎工作上减少代价高昂的错误,而不是让简单任务也变得繁琐。

项目同时推荐了配套工具 Multica——一个用于运行和管理编码代理的开源平台,可与这套规则结合使用。


项目地址:https://github.com/forrestchang/andrej-karpathy-skills
许可证:MIT