LogoSiWei's Blog

别让 AI 替你写 CLAUDE.md:

PSW 2026-07-24 36 阅读 5 分钟

如果你刚接触 Claude Code,可能会习惯性地敲下 /init,让它自动生成一份 CLAUDE.md 文件。我最初也是这么做的——毕竟"让 AI 了解项目"听起来很合理。但用了几个月后,我的结论恰恰相反:不要执行 /init,不要让 AI 自己生成 CLAUDE 文件。

/init 做了什么

/init 会扫描你的项目结构、读取关键文件,然后生成一份面面俱到的"项目说明书":技术栈、目录结构、编码规范、测试命令、部署流程……看起来很有用,对吧?

但问题就出在这里——它太"全"了

全则全矣,唯独不"准"

Claude Code 读取 CLAUDE.md 时,会把它当作核心指令来遵循。一份 /init 产出的文档可能包含几十条规则,而其中大部分是 AI 自己归纳出来的"常识"。比如:

  • 项目用 Spring Boot → 自动写上"使用 Spring Boot 框架"
  • 目录有 src/main/java → 写上"代码在 src/main/java 下"
  • 用了 Maven → 写上"使用 Maven 构建"

这些信息AI 本来就能从项目中推断出来。把它们写进 CLAUDE.md,等于让 AI 去读一堆它已经知道的东西——不仅浪费时间 token,而且多条规则之间可能互相干扰

我的测试结果

我做过对比测试:同样一个任务,分别在有 /init 生成 CLAUDE.md 的仓库和没有 CLAUDE.md 的仓库中执行。

结果很直观——/init 产物的仓库,任务推进速度反而更慢。具体表现在:

  1. 响应变慢:AI 每次都要消化大量"规则",包括那些本来就已知的信息
  2. 容易过度遵循:一些模板化的规则被当成硬性约束,反而限制了 AI 的灵活性
  3. 掩盖真正的问题:当 AI 行为不理想时,一份冗长的自动生成文档很难定位到底是哪条规则出了问题

正确的用法:只写"直觉之外"的信息

CLAUDE.md 真正的价值不在于告诉 AI 已经知道的东西,而在于告诉它仅从代码中看不出来的东西

换句话说,只有当你发现 AI 的行为不理想时,才应该通过写 CLAUDE.md 来引导它。比如:

  • AI 总是用 Tab 缩进而项目用空格 → 写一条缩进规则
  • AI 总是用英文输出而你希望它用中文 → 写上"中文优先"
  • 项目有特殊的分支策略或部署流程 → 简单说明

一条有针对性的规则,胜过十句正确的废话。

什么时候该写

我的经验法则是:先不用 CLAUDE.md 干活,直到 AI 在某件事上反复犯错,再把它写进去。

这就像教一个人做事——你不会在第一天就给他一本 50 页的手册,而是在他发现坑的时候告诉他怎么避坑。CLAUDE.md 应该是"踩坑记录",而不是"项目简介"。

总结

  • 不要执行 /init——它生成的内容太多、太泛、反而拖慢进度
  • 不要写 AI 本来就了解的信息——那是浪费
  • 只在 AI 行为不理想时写 CLAUDE.md——用它来纠正,而不是用来介绍
  • 保持 CLAUDE.md 精简——一个文件十几条规则已经很多了

CLAUDE.md 的价值不在于"全",而在于"准"。写你直觉之外的信息,剩下的事情交给 AI 自己判断。

目录

评论

© 2026 SiWei's Blog. All rights reserved.