
欢迎关注我的新项目 Multica —— 一个用于运行和管理编程 Agent、支持可复用技能的开源平台。欢迎在 X 上关注我:https://x.com/jiayuan_jy
一个 CLAUDE.md 文件,用于优化 Claude Code 的行为表现,内容源自 Andrej Karpathy 的观察——他总结了 LLM 在编程场景中的常见问题。
English | 简体中文
摘自 Andrej 的帖子:
“模型会替你做出错误的假设,然后径自往下走,从不核实。它们不会管理自己的困惑,不会主动寻求澄清,不会暴露矛盾之处,不会呈现权衡利弊,也不会在该拒绝时拒绝。”
“它们非常喜欢把代码和 API 过度复杂化,堆砌抽象层,不清理废弃代码……明明 100 行能搞定的事,偏要写出 1000 行的臃肿结构。”
“它们有时仍然会把自己并不完全理解的注释和代码当作副作用修改或删除,哪怕这与当前任务毫无关系。”
一个文件,四条原则,直击上述问题:
| 原则 | 解决的问题 |
| 先想后写 | 错误假设、隐藏的困惑、缺失的权衡分析 |
| 简洁优先 | 过度设计、臃肿的抽象层 |
| 精准修改 | 无关联的改动、动了不该动的代码 |
| 目标驱动执行 | 借助测试先行、可验证的成功标准来提升效率 |
不做假设。不隐藏困惑。主动呈现权衡。
LLM 常常默默选择一种理解方式然后直接执行。这条原则要求显式地进行推理:
用最少的代码解决问题,不做任何超前设计。
对抗过度工程化的倾向:
自检标准: 一位资深工程师看了会不会觉得过于复杂?如果会,就简化。
只动必须动的地方。只清理自己制造的问题。
修改已有代码时:
当你的改动产生了"孤儿"代码时:
自检标准: 每一行改动都应能直接追溯到用户的需求。
定义成功标准,循环直至验证通过。
将命令式的任务转化为可验证的目标:
| 原始说法…… | 转化为…… |
| “添加校验” | “为非法输入编写测试,然后让测试通过” |
| “修复 Bug” | “编写能复现该 Bug 的测试,然后让测试通过” |
| “重构 X” | “确保重构前后测试均通过” |
对于多步骤任务,先陈述简要计划:
1. [Step] → verify: [check] 2. [Step] → verify: [check] 3. [Step] → verify: [check]清晰的成功标准能让 LLM 独立循环执行。模糊的标准(“让它跑起来”)则需要反复澄清。
方式 A:Claude Code 插件(推荐)
在 Claude Code 中,先添加插件市场:
/plugin marketplace add forrestchang/andrej-karpathy-skills然后安装插件:
/plugin install andrej-karpathy-skills@karpathy-skills这会将本准则作为 Claude Code 插件安装,使其在你所有项目中均可使用。
方式 B:CLAUDE.md(按项目使用)
新项目:
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本仓库包含一个已提交的 Cursor 项目规则文件(.cursor/rules/karpathy-guidelines.mdc),因此在 Cursor 中打开项目时,同样的准则也会生效。有关设置方法、如何在其他项目中使用该规则,以及其与 Claude Code 的关系,请参阅 CURSOR.md。
摘自 Andrej:
“LLM 在循环执行直至达成特定目标方面表现出色……不要告诉它该做什么,而是给它成功标准,然后看它自己搞定。”
"目标驱动执行"这条原则正是对此的提炼:将命令式的指令转化为带有验证循环的声明式目标。
如果你观察到以下现象,说明准则正在发挥作用:
本准则设计为可与项目专属指令合并使用。将其添加到已有的 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 `本准则倾向于谨慎优于速度。对于琐碎任务(简单的拼写修正、显而易见的单行改动),请自行判断——并非每一次改动都需要如此严格的流程。
目标是减少非琐碎工作中代价高昂的失误,而非拖慢简单任务的节奏。
MIT