Skip to content

大型 CLAUDE.md 不会再被「只看开头就整篇重写」:2.1.312 给 Write 加了一道保险 ​

如果你在 monorepo 的子目录里放过很长的 CLAUDE.md,或者用 @ 引入了一份很大的规范文件,可能遇到过一种让人心惊的情况:让 Claude「顺手补一条规则」,结果文件后半部分不见了。CLI 2.1.312 专门修了这个问题。

发生了什么 ​

更新说明的意思是:修复了 Claude 在只看到子目录中超大 CLAUDE.md、规则文件或 @ 引入文件的开头后,就把它整个覆盖的问题;现在 Write 会要求 Claude 读完整个文件,或者改为原地编辑。

问题的根源不难理解。很大的文件被读进上下文时,往往只会读到前面一部分。Claude 如果基于这「半份」内容用 Write 写回去,等于用一份残缺的副本替换了原文件,后面没读到的规则就丢了。

现在的行为 ​

2.1.312 起,碰到这类大文件时,Write 不会直接执行整篇覆盖,而是提示 Claude 二选一:

  • 先把文件完整读完,确认掌握全部内容后再写;
  • 改用 Edit 做局部修改,只动需要改的那几行。

对记忆和规则类文件来说,后者通常才是正确做法:加一条规则不该重写整份文件。

对你的意义 ​

  1. 规则文件更安全。子目录 CLAUDE.md、.claude/rules 下的规则、被 @ 引入的长文档,这些往往是团队多人维护的「约定」,被悄悄截断的代价很高。
  2. diff 更干净。原地编辑产生的改动更小,代码审查时一眼就能看出加了什么。
  3. 仍然建议纳入版本控制。这道保险减少了事故,但 CLAUDE.md 放进 git、改动走 review,依旧是最可靠的兜底。

顺手的建议 ​

  • 单个 CLAUDE.md 太长本身就是信号:可以按目录拆分,或把细节挪到被引用的独立文件里,让每份文件保持在容易通读的长度。
  • 让 Claude 修改规则时,直接说「用 Edit 在某一节末尾追加」,比「更新一下 CLAUDE.md」更不容易出意外。

小结 ​

这是一条不起眼但很实用的修复:大文件不会再因为「只看了开头」而被整篇改写。升级到 2.1.312 后,维护长规则文件可以少一分担心。

Claude-cn.org,专注于 Claude Code 中文教程