正在用Claude Code写代码时,最容易踩的坑之一,就是改完CLAUDE.md之后,以为下一轮对话马上会按新规则执行。实际体验常常很诡异,文件已经保存了,终端里也没有报错,Claude Code却继续沿用旧规则。比如我们的团队刚把项目约定从npm install改成pnpm install,或者把测试命令从npm test改成pnpm test:unit,可当前会话里的Claude Code仍然按旧命令去跑。这不是它没有读懂,也不是缓存坏了,而是CLAUDE.md在会话生命周期里有一套非常明确的加载边界。
官方文档对CLAUDE.md的定位很直接,它是放在项目中的 Markdown 指令文件,Claude Code会在每个会话开始时读取它,用来放编码标准、架构决策、常用库、审查清单等内容。也就是说,项目根目录的CLAUDE.md更像是会话启动时的一份项目说明书,而不是一个热更新配置中心。Claude Code的文档还写到,CLAUDE.md内容会作为上下文提供给模型,而不是强制执行的配置层,所以它影响模型行为,但不能像权限规则或 hook 那样硬性拦截动作。(