CLAUDE.md 在每个会话开始时整份载入上下文,它是“上下文”而不是“强制配置”。文件越长,单条规则在噪音里越容易被淹没——官方文档直接写明:臃肿的 CLAUDE.md 会导致 Claude 忽略你真正的指令。
一句话结论
结论
把 CLAUDE.md 砍到 200 行以内,只留“每个会话都用得上”的事实;局部规则挪到
.claude/rules/ 做路径限定,多步流程挪成 skill,必须 100% 执行的动作改写成 hook。官方官方给出的判断标准:每一行都问“删掉它 Claude 会犯错吗?”不会就删。
做法步骤
- 先确认文件真的加载了。会话里跑
/context,在 Memory files 列表里找你的 CLAUDE.md。官方不在列表里 Claude 就看不见——那是路径问题,不是长度问题。在列表里但不遵守,继续往下。 - 逐行做“删除测试”。官方官方建议单文件控制在 200 行以内,更长会消耗更多上下文并降低遵循度;并明确警告“如果 Claude 无视某条规则,多半是文件太长、规则淹没在噪音里”。该留和该删的典型:
该留(Claude 猜不到的) 该删(Claude 自己能搞定的) 猜不出来的构建/测试命令 读代码就能推断的一切 和默认值不同的代码风格 语言的标准惯例 仓库礼仪(分支命名、PR 规范) 详细 API 文档(放链接即可) 项目特有的架构决策、环境坑 逐文件的代码库描述、长篇教程 非显而易见的 gotcha “写干净的代码”这类废话 - 把“只在局部生效”的规则挪去
.claude/rules/。官方rules 目录里的 markdown 可用 YAML frontmatter 的paths字段限定文件范围(如src/api/**/*.ts),只在 Claude 读到匹配文件时才载入上下文,不匹配就不占空间。没有paths的 rule 仍然每次都载入,注意别只是换个目录堆放。 - 把“偶尔才用的多步流程”挪成 skill。官方skills 按需加载:你主动调用或 Claude 判断相关时才进上下文,适合领域知识和可复用工作流。判断口径:CLAUDE.md 放“每个会话都成立的事实”,skill 放“某类任务才需要的流程”。
- 把“必须每次都发生”的动作改成 hook。官方CLAUDE.md 是建议性上下文,没有强制力;要求“提交前必须 lint”“禁改 migrations 目录”这类硬约束,写成 hook 才保证执行。官方修复建议原话方向:Claude 不需要提醒也能做对的指令,删掉或转成 hook。
- 清理矛盾与偷懒的拆分。官方两条规则互相冲突时 Claude 可能任选一条;另外
@path/to/fileimport 只是组织手段,被 import 的文件启动时照样全部载入,不省任何上下文。v2.1.206 起可跑/doctor,它会对入库的 CLAUDE.md 提出裁剪建议:砍掉能从代码推导的目录结构、依赖清单,保留坑、理由和非默认约定。 - 验证效果。本站观点精简后观察几个会话:之前被无视的规则是否开始被遵守。官方也建议对个别关键规则加 “IMPORTANT” / “YOU MUST” 强调——但这是最后的调味料,不是长文件的解药。
可直接抄的 prompt
帮我精简 @CLAUDE.md,目标 200 行以内:
1. 逐行审查,对每一行回答:“删掉它你会犯错吗?”不会就列入待删。
2. 找出互相矛盾或重复的规则,给出保留哪条的建议。
3. 把只和特定目录/文件类型相关的规则,改写成 .claude/rules/ 下带 paths
frontmatter 的 rule 文件;把多步操作流程改写成 .claude/skills/ 下的 skill。
4. 把“必须每次强制执行”的动作(如提交前 lint)列出来,建议对应的 hook 配置。
5. 输出:精简后的 CLAUDE.md 全文 + 迁移清单(哪条去了哪里、为什么)。
先给我看方案,确认后再改文件。
来源与最后核实日期
- 官方How Claude remembers your project(memory)——200 行目标、rules 的 paths 限定、import 不省上下文、/doctor 裁剪、冲突规则任选,抓取于 2026-08-05。
- 官方Best practices — Write an effective CLAUDE.md / The over-specified CLAUDE.md——删除测试、去留对照表、“臃肿导致忽略指令”,抓取于 2026-08-05。
- 最后核实:2026-08-05 · volatility:high(绑定 rules/skill/hook 与 /doctor 等具体产品机制,会定期复核)。