前段时间刷 GitHub 趋势榜,我发现了一个项目,有点吃惊——它只是份文档,居然能排到前三名。
github.com/forrestchang/andrej-karpathy-skills
要知道,GitHub是全世界程序员共用的代码云端仓库 + 开源共享"网盘",一般能排前几名的,都是非常牛的开源项目,都是能跑的代码。
这份小小的 Markdown 文件,它到底有什么神奇的地方?
出于好奇,我打开看了一下。诶,还真有点东西,它是一份Claude.md文件。我之前在 Codex 教程中提到过,AI 的全局指令是非常重要的,相当于给AI套上了紧箍咒,玩多了你就会发现,AI 经常写出屎山代码,功能全混在一块,耦合性很强,这就好比我们让 AI 帮忙炒一桌菜,一开始它先炒了一盘西红柿炒鸡蛋,然后我们说,再来一盘小炒黄牛肉吧,结果它直接牛肉和西红柿炒蛋混在一起炒了,接着让它再来一盘手撕包菜,它又把包菜加进去了,最后成了一锅大杂烩…
所以,必须得有一个规范。我们来看看这个文档到底好在哪里。
01 全局指令:AI 的紧箍咒
这个文档的理念来自 AI 领域大神卡帕西(Andrej Karpathy)的一段推文:
“模型会代你做错误假设,然后不假思索地执行。它们不管理自身的困惑,不寻求澄清,不呈现矛盾,不展示权衡,在应该提出异议时也不反驳。”
“它们真的很喜欢把代码和 API 搞复杂,堆砌抽象概念,不清理死代码……明明 100 行能搞定的事情,非要实现成 1000 行的臃肿架构。”
“它们有时仍会改动或删除自己理解不足的代码和注释,即使这些内容与任务本身无关。”
02 卡帕西的四个原则
它提出了四个点,按照我的理解给大家分享下,
1、无知之幕
让AI不要假设自己知道任何事情,如果不确定,不要猜,要主动问出来,当有多种解释的时候,要提出来。这让我想到了政治哲学家约翰·罗尔斯在《正义论》里提出的概念,叫"无知之幕",制定政策的时候不要预设立场,不要从当前的位置出发,你可能是社会中的任何阶层,这样制定的政策才能取最大公约数。
放到 AI 身上也一样——让模型不要有预设的立场
2、奥卡姆剃刀
如无必要,勿增实体。
比如很多物理学家都在追求大一统理论,就是因为它简洁,刘慈欣有部短篇小说叫《朝闻道》,就写道里面的物理学家丁仪,为了寻求大一统理论的答案,甚至愿意献祭自己的生命。
一个事情你能一步完成,就不要搞五六步。简洁才是最美的。对代码也一样,一行代码能搞定的事,你就别写两行。
3、只干该干的
我们让 AI 写代码的时候经常发现,你让它改个 A,它给你把 A、B、C 全改了,然后衍生出一堆 bug。
该干的活它干了,不该干的它也干了。。。。
所以需要告诉它:只干自己该干的,别瞎揽活。
4、定义验收标准
干完一件事之后,怎么衡量它有没有完成、有没有干好?得有一个验收标准。
这在控制论里叫反馈闭环,有了这种反馈机制,AI 才能知道代码改得对不对,好不好。
所以,每次都要给它制定验收标准,自主进行测试。
03 Harness 与 Agent.md 实践
这份文档的规范,给了我很大的启发,加上我之前的实践经验,我顺手把自己的claude.md也改了,保留了一些创建项目的规范,以及提交git的规范,比如环境变量里的密钥、API Key 不能提交到 Git 里,还有 Skill 的路由规则等等,写得更全面了一些,在附录给大家分享出来。
我们让 AI 完成任务的时候,千万不要让它成为脱缰的野马。 这其实就是最近经常刷到的 Harness 工程所说的事情,Harness 是马具的意思,就是我们要给 AI 戴上马具,让它在约束里面干活。所以我推荐大家,不管用 Claude Code 还是其他编程工具,都可以在自定义指令里加好约束规范。
claude.md参考模板:
# Agent.md 全局配置(通用模板)
## 关于我
> 按你的实际情况填写角色和使用场景
## 全局设置
- **语言**: 始终使用简体中文进行交流和输出
- **说话风格**:保持有人情味的对话风格,既专业又平易近人,专业术语用大白话解释
- **文档风格**:不写废话,关键技术细节和架构涵盖在内即可,简洁但不省关键内容
## 工作风格
- 主动建议但需要用户确认后才执行,不擅自做决定
- 判断问题从第一性原理出发,不要谄媚,有问题主动提出来,并给出多个解决方案,对比优劣
- 子 Agent 并行拆分:默认不拆,需要时主动问用户是否拆分及拆法
- 遇到可以用 Skill 解决的场景,主动路由到对应 Skill
## 约束先行
- 新项目先在项目目录创建 `Agent.md`,定义好目录结构、组织方式、清理策略
- 已有规范的项目遵循规范,没有则先创建
- 需要调整规范时先改文档,再改实践,不得反过来
- 项目级 Agent.md 控制在 150 行以内;超了就审视哪些规则可以删、合并、或下沉到子目录文档
- 识别到 Agent.md 需要删减时,必须先列出要删什么、为什么,用户确认后才能改
- 新项目创建 Agent.md 时,检查是否包含 Git Commit 规范引用,没有则提醒补上
## 编码纪律(四原则)
### 1. 先想后写
### 2. 简单至上
### 3. 精准手术
### 4. 目标驱动
## Git Commit 规范
...
和你一起探索 AI 在生活中的有趣用法。