一个 .md 文件,150K Stars: Karpathy 的 AI 编程四诫 用 4 条规则解决 LLM 编程 80% 的常见错误 |Github Daily

9 阅读10分钟

GITHUB DAILY · 第038期

一个 .md 文件,150K Stars:

Karpathy 的 AI 编程四诫

从 OpenAI 联合创始人的洞察到全球开发者的行为准则
用 4 条规则解决 LLM 编程 80% 的常见错误

📋 项目速览

项目名称andrej-karpathy-skills

GitHub 地址multica-ai/andrej-karpathy-skills

总 Stars⭐ 149,580+

今日新增🔥 +3,507(Trending 榜首)

Forks15,300+

协议MIT

核心文件单个 CLAUDE.md(Markdown)

适配平台Claude CodeCursorCopilot****Codex

灵感来源Andrej Karpathy(OpenAI 联合创始人、前 Tesla AI 总监)

🤔 它能解决什么问题?

你用 Claude Code、Cursor 等 AI 编程工具时,是不是经常遇到这些"翻车"场景?

翻车一:AI 默默猜需求,执行完了才发现方向全错

你说"添加用户验证",AI 直接写了一套 OAuth 完整流程——但你只需要一个简单的手机号验证。它不问、不确认、不展示方案,直接"开干"。

翻车二:改一行代码,AI 顺手"优化"了整个文件

让它修一个 bug,它顺便重构了错误处理、改了变量命名、删了"看起来没用"的注释、格式化了整个文件——结果 Diff 有 200 行,其中 180 行跟任务无关。

翻车三:100 行能搞定的事,AI 写了 800 行

改个数据库连接字符串,AI 给你整出 800 行配置系统:环境变量 + JSON 文件 + 远程配置中心 + 热更新 + Schema 验证……你只需要一行代码。

翻车四:AI 说"应该能工作了",但你不知道到底行不行

没有测试验证、没有成功标准、没有自动校验——AI 写完就算"完成",正确性完全靠手动检查,人变成了 AI 的 QA。

Andrej Karpathy 在 X(Twitter)上精准总结了 LLM 编程的三大通病:错误假设不检查、过度复杂化、副作用修改。这些问题不是偶发,而是 LLM 的系统性缺陷。

✨ 核心亮点:四条规则,系统治愈 LLM 编程通病

andrej-karpathy-skills 的核心是一个 CLAUDE.md 文件,里面只有 4 条行为规则。每条规则精确对应一个 Karpathy 观察到的 LLM 编程陷阱,从推理、架构、修改范围、目标定义四个维度规范 AI 行为。

🧠 规则一:Think Before Coding(先思考,再编码)

**针对问题:**AI 默默假设需求,不澄清就执行

**核心要求:**在写任何代码之前,AI 必须——

  • 明确陈述自己对需求的所有假设

  • 如果需求有多种解读,主动展示 2-3 种方案并说明各自的取舍

  • 发现更简单或更优的方案时,主动提出建议

  • 遇到模糊不清的地方,先停下来寻求用户澄清

❌ 没有 Karpathy Skills用户:帮我添加用户验证
AI:(默默假设需要邮箱+密码+记住我+密码强度检测,直接写出完整 OAuth 流程)

✅ 有 Karpathy SkillsAI:在开始之前,我需要确认几个问题:
1. 验证方式选 JWT 还是 Session?
2. 需要社交登录吗?
3. 你的系统是单体应用,我推荐 Session 方案,同意吗?

✂️ 规则二:Simplicity First(简洁优先)

**针对问题:**AI 过度设计,100 行能搞定的写出 1000 行

**核心要求:**用最少的代码解决问题——

  • 不添加任何未被要求的功能

  • 不为单次使用的代码创建抽象层

  • 不添加未请求的"灵活性"或"可配置性"

  • 不为不可能发生的场景写错误处理

  • 如果 200 行能压缩成 50 行,就重写它

**检验标准:**资深工程师看到这段代码,会觉得"这也太复杂了"吗?如果是,就继续简化。

**❌ 过度设计(200 行)**class UserValidator:
def __init__(self, config=None):
self.config = config or self._load_default_config()
self.strategies = self._init_strategies()
self.cache = self._init_cache()
self.observers = []
# ... 共 200 行

**✅ 简洁实现(8 行)**def validate_user(email, password):
if not email or '@' not in email:
return False
if len(password) < 8:
return False
return True

🔬 规则三:Surgical Changes(精准修改)

**针对问题:**AI "顺手优化"无关代码,污染整个 Diff

**核心要求:**只触碰必须触碰的内容——

  • 不"改进"相邻的代码、注释或格式

  • 没有问题的代码不重构

  • 匹配现有代码风格,即使你会用不同的方式写

  • 发现死代码时,仅提示用户,不直接删除

**检验标准:**每一行修改都能直接追溯到用户的请求。说不清楚为什么改的那行,就不改。

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

**针对问题:**AI 写完代码就算"完成",没有验证标准

**核心要求:**定义可验证的成功标准,循环直到通过——

  • 把命令式任务转化为可验证目标

  • 多步骤任务使用"步骤 → 验证"格式

  • 编写测试定义"完成"是什么样子

  • 让 AI 自主循环迭代,减少人工介入

Karpathy 的关键洞察:"LLMs 非常擅长循环直到达成特定目标。不要告诉它做什么,给它成功标准,然后看它执行。"

命令式描述(弱)目标驱动描述(强)
"添加验证"
"编写失败输入的测试用例,然后让用例通过"
"修复 bug"
"编写能复现 bug 的测试用例,然后让测试通过"
"重构 X 模块"
"确保重构前后所有测试用例都通过"

🧬 行为工程:为什么一个 .md 文件能改变 AI 行为?

这不是传统意义上的"提示词工程",而是一种新的范式——行为工程(Behavior Engineering)

工作原理

CLAUDE.md 是 Claude Code 的项目级配置文件。当 Claude Code 启动时,它会自动读取项目根目录的 CLAUDE.md,将内容注入到对话上下文中。这意味着每一条规则都会在每次会话开始时自动生效,持续影响 AI 的行为模式。

# 工作机制 项目根目录/CLAUDE.md ↓ Claude Code 启动时自动读取 ↓ 内容注入对话上下文 ↓ 成为每次对话的"前置工作守则" AI 行为被持久影响 ✅

多层配置体系

项目支持三级配置,实现全局规则和项目特殊规则的灵活组合:

层级配置路径生效范围优先级
全局级
Claude Code 插件安装
所有项目
最低
用户级
~/.claude/CLAUDE.md
当前用户所有项目
项目级
项目根目录/CLAUDE.md
仅当前项目
最高

高优先级的规则会覆盖低优先级的冲突内容,同时不同层级的规则会合并生效。你可以把 Karpathy 的四条通用规则作为全局配置,再在每个项目中添加特定的技术栈要求。

与提示词工程的关键区别

维度CLAUDE.md(行为工程)普通提示词工程
作用域
项目级,跨对话持续生效
会话级,随对话结束消失
复用性
可共享、可版本管理
一次性,不可复用
针对性
针对 LLM 编码的底层失败模式设计
零散的提示词,无系统性
验证性
内置目标驱动执行原则
依赖人工判断

🔧 实战场景展示

场景一:接手陌生代码库,让 AI 先理解再动手

假设你让 Claude Code 在一个不熟悉的仓库中添加缓存功能。没有 Karpathy Skills 时,AI 可能直接引入 Redis 并重写整个数据访问层。有了 Skills 后——

❌ 无约束直接写 Redis 集成代码(500+ 行),包括连接池管理、序列化/反序列化、缓存淘汰策略……用户实际只需要内存缓存,浪费半天时间。

✅ 有约束先澄清 3 个问题:①缓存策略选内存还是 Redis?②缓存粒度?③失效机制?结合单机服务的现状,推荐内存缓存 + TTL,获得用户同意后再实现。

场景二:Code Review 不再是噩梦

团队成员使用 AI 生成的代码提交 PR 时,没有 Skills 的 PR 通常包含大量无关修改——格式调整、变量重命名、"顺手"的重构。有了 Skills 后——

  • Diff 中减少不必要的修改,只出现被请求的变更

  • 没有顺手重构或"改进",每一行改动都可追溯到需求

  • 代码审查时间预计减少 50% 以上

场景三:敏捷开发中快速迭代不翻车

需求经常变化的敏捷项目中,AI 遵循"简洁优先"和"目标驱动"原则后,不会为"将来可能的需求"提前做设计,每一轮迭代都保持最小可行方案,极大降低了技术债务的累积速度。

💡 返工减少 80%

遵循四条原则后,AI 编程中最常见的四类错误可被系统性消除,开发者对 AI 生成代码的信任度显著提升。

🚀 上手指南

整个安装过程只需要 1 分钟,支持三种方式:

1

方式一:Claude Code 插件(推荐,全局生效)

打开 Claude Code,依次执行:

# 添加插件市场源/plugin marketplace add multica-ai/andrej-karpathy-skills# 安装插件/plugin install andrej-karpathy-skills@karpathy-skills

2

方式二:项目级 CLAUDE.md(单项目生效)

将规则文件放到项目根目录即可:

# 新项目:直接下载curl -o CLAUDE.md raw.githubusercontent.com/multica-ai/… 已有项目:追加到现有文件echo "" >> CLAUDE.mdcurl raw.githubusercontent.com/multica-ai/… >> CLAUDE.md

3

方式三:Cursor 用户

官方已提供 Cursor 适配文件,复制到项目的规则目录即可自动生效:

cp .cursor/rules/karpathy-guidelines.mdc your-project/.cursor/rules/

自定义扩展

四条规则可与项目特定指令合并,在 CLAUDE.md 底部追加你的项目专属规则:

## Project-Specific Guidelines - Use TypeScript strict mode - All API endpoints must have tests - Follow the existing error handling patterns in src/utils/errors.ts

如何验证规则已生效?

生效信号对应规则
Diff 更干净,只有被请求的改动
Surgical Changes
AI 首次输出就简洁,不需要重写
Simplicity First
澄清问题出现在实现之前(不是出错后)
Think Before Coding
PR 无无关的"顺手"改动
Surgical Changes
AI 编写测试来验证自己的输出
Goal-Driven

异常信号识别

AI 出现这些话违反的规则
"顺便优化一下"
Surgical Changes
"加个抽象层会更灵活"
Simplicity First
"我猜你是想…"
Think Before Coding
"应该能工作了"
Goal-Driven Execution

⚖️ 权衡与局限

官方坦诚说明了这些规则的适用边界:

  • 偏向谨慎而非速度:对于改拼写、改一行代码等简单任务,规则可能显得过于严格,不需要每次都走完整流程

  • 软约束而非硬编码:CLAUDE.md 不是系统级提示词,AI 在复杂任务中存在上下文优先级权衡,规则不一定总是赢

  • 仅覆盖编码场景:四条规则专为代码开发设计,不适用于文档生成、数据分析等非编码类 AI 任务

  • 探索性原型需调整:快速试错的探索开发场景下,建议临时关闭"简洁优先"原则,允许 AI 做更多尝试

📝 今日总结

最小有效干预:一个 .md 文件、4 条规则、0 行代码,解决了 LLM 编程 80% 的常见错误——这是"最小可行方案"的完美诠释

行为工程新范式:不是让 AI 更聪明,而是给 AI 明确的行为边界。从"提示词工程"到"行为工程"的思维转变

顶级洞察 + 极简执行:Karpathy 从特斯拉和 OpenAI 的实战经验中提炼的观察,被压缩成可直接复制的配置文件

三级配置体系:全局 + 用户 + 项目级配置叠加,一套规则适配所有场景,还可自由扩展项目专属规则

150K Stars 的启示:最好的工具不一定是框架或 SDK,有时只是一份让所有人都能共鸣的洞察

即插即用:1 分钟安装,支持 Claude Code / Cursor / Copilot 等主流 AI 编程工具,零学习成本

📍 项目地址:github.com/multica-ai/andrej-karpathy-skills

🌟 今日 Stars:149,580+ | 🔥 今日新增:+3,507

GitHub Daily · 每天一个值得深读的开源项目