Karpathy 给 Claude Code 开的药方:四个原则治住 AI 乱写代码

Andrej Karpathy 一句话戳到了痛点:LLM 会带着错误的假设一路狂奔。它们把代码搞复杂、造抽象层、乱动不该动的东西。最气人的是,它们做得彬彬有礼、信心满满、而且批量生产。

一个 CLAUDE.md 文件 —— 现在已经是 Claude Code 的插件了 —— 专门治这些毛病。四个原则,直接从 Karpathy 的观察提炼而来,从根上改变 Claude Code 的行为方式。

四个原则

每个原则对应 Karpathy 指出的一个特定失败模式:

先想再写 —— LLM 会默默选择一个解释然后开干。这个原则强制显式推理:说清假设、给出可选项、有更简单的方案要提出来。如果 Claude 不确定,它会说出来而不是瞎猜。

“它们会替你做出错误假设,然后一路执行下去。它们不管理自己的困惑,不寻求澄清,不指出矛盾。”

保持简单 —— 默认行为是把 100 行的东西写成 1000 行。这个原则扼杀了这种倾向:不做需求之外的功能,不为只用一次的东西造抽象层,不搞没人要的”灵活性”。检验标准:一个资深工程师会觉得这东西过于复杂吗?

“它们特别喜欢把代码和 API 搞复杂,堆砌抽象层。”

只改该改的 —— LLM 会作为副作用改动它们不完全理解的代码。这个原则把修改范围严格限制在任务所需。不改动相邻代码。不重构没坏的东西。每行改动都必须能追溯到用户的需求。

“它们有时会改动或删除它们不完全理解的注释和代码,即使这些与任务无关。”

目标驱动 —— Karpathy 指出 LLM 特别擅长循环直到达成具体目标。这个原则把命令式指令变成可验证的成功标准。不是”加个校验”,而是”给无效输入写测试,然后让测试通过”。

“不要告诉它做什么,给它成功标准,看它自己跑。“

什么时候用

代码 Review —— 只改该改的原则产出的 PR 只包含请求的改动。没有顺手重构,没有神秘 diff。

新功能开发 —— 目标驱动把模糊需求变成可测试的结果。Claude 自己验证自己迭代,不需要牵着走。

调试 —— 先想再写在写代码之前就截住错误假设。Claude 主动告诉你它不确定什么,而不是猜错。

遗留代码 —— 只改该改的防止”我顺手清理一下”的陷阱。Claude 只动 bug,不动周围 500 行风格存疑的代码。

一个你需要知道的取舍

这些原则偏向谨慎而非速度。修个 typo、改个明显的一行代码,不需要走全套流程。设计这些原则是为了减少非琐碎工作上的昂贵错误,不是为了拖慢简单任务。

不加区分地用,你会得到一个过分谨慎、问太多问题的助手。Skill 最好用在你脑子分得清”加个字段”和”重设计认证流程”的区别的时候。

安装

方式一:Claude Code 插件(推荐)

在 Claude Code 中执行:

/plugin marketplace add forrestchang/andrej-karpathy-skills
/plugin install andrej-karpathy-skills@karpathy-skills

安装后跨项目生效。

方式二:CLAUDE.md(按项目)

新项目:

curl -o CLAUDE.md https://raw.githubusercontent.com/forrestchang/andrej-karpathy-skills/main/CLAUDE.md

已有项目,追加到现有的 CLAUDE.md。

Claude 的行为会怎么变

没加 guidelines 之前,让 Claude”修一下校验的 bug”,它可能重写整个校验模块、加个配置系统、顺便”修正”你的错误处理风格。

加了之后,它先在测试里复现 bug,然后应用最小修复,最后列出正好三行改动。

差异体现在 diff 里。干净、最小化、可追溯。每处改动都能对应到一个需求。

实战:从指令式到声明式

没有 guidelines 的典型交互:

你:给 API 加限流
Claude:[加了 rate-limit 中间件、Redis 存储、配置系统
        带环境变量、顺便重写了错误处理]

有 guidelines 的相同请求:

你:给 API 加限流
Claude:我来实现。目标:每分钟超过 100 次请求返回 429。
        加中间件和配置开关。
        [三个文件,最小 diff,聚焦]

区别不微妙。第一个版本需要回滚,第二个直接进 review。


Karpathy 的批评并不新鲜 —— 每个重度 AI 编程用户都感受过这些痛点。新鲜的是有了一个系统性的解决方案,而且只装在一个文件里。

如果你的 Claude Code 会话经常以”它为什么也改了那个”结束,你早就知道这个工具解决的是什么问题。装好它只需要三十秒。

项目地址: https://github.com/forrestchang/andrej-karpathy-skills Karpathy 原文: https://x.com/karpathy/status/2015883857489522876

相关文章

如何把真实世界的能力封装为 Agent Skill

通用 AI Agent 能力很强,但缺少每支团队都有的东西:程序性知识。你的代码审核清单、部署手册、API 规范——这些都不在模型的训练数据里。 这就是 Agent Skill 要解 ...

跟 Claude 说一声,图就画好了:/drawio 在 Claude Code 里直接出图

跟 Claude 说一声,图就画好了:/drawio 在 Claude Code 里直接出图

你在跟 Claude Code 描述系统架构。它回复了一堆 ASCII art,差不多能看,但总觉得差点意思。你心想:"要是能直接让它画张图就好了。" 可以。 draw.io 的 Claude C ...

22 个 Claude Code 技能打通内容创作全链路:从生成到发布的一条龙工作流

22 个 Claude Code 技能打通内容创作全链路:从生成到发布的一条龙工作流

你写完一篇技术博客,接下来要做的事情让人头疼:生成封面图、画配图、做信息图、转 HTML 适配微信公众号、发到 X 和微博。这些工作以前需要切换四五个工具,现在在 Claude Code 里打一条命令 ...

风格 × 布局:baoyu-skills 的视觉设计系统如何让 AI 画得比你设计得还好

你让 AI 画张图,它给你一堆过饱和塑料感的玩意儿。你让 AI 做信息图,它把文字堆在一张不透明的背景上。你让 AI 设计幻灯片,它给你五颜六色、毫无一致的灾难。 问题的根源不在 AI 不会画画—— ...

当 AI 输出从 10 行暴涨到 1000 行,Claude 团队为什么正在抛弃 Markdown

当 AI 输出从 10 行暴涨到 1000 行,Claude 团队为什么正在抛弃 Markdown

你的 AI 能一次性输出 1000 行计划、画复杂流程图、做完整代码审查。但你还在用 Markdown 读它。 Claude Code 团队工程师 Thariq 最近在 X 上发了一条很直接的推文: ...

Book2Skills:把经典书籍变成真正可用的 Agent Skill

Book2Skills:把经典书籍变成真正可用的 Agent Skill

Book2Skills 是一个开源项目,把经典书籍的方法论蒸馏成结构化的 AI 智能体技能。每个技能是一个文件夹,包含 SKILL.md 核心文件和参考文档——AI 读取框架,应用书里的实际决策规则, ...

Caveman:砍掉 AI 输出 75% 的 Token,一个都不少

Caveman:砍掉 AI 输出 75% 的 Token,一个都不少

你的 AI Agent 话太多了。每句"当然!我很乐意帮你解决这个问题"都是一个浪费的 token —— 它在烧钱、拖慢响应速度、把真正的答案埋在客套话里。如果你每天都在用 AI 编码 agent — ...