[控场AI]
· 4 分钟阅读· 2,447 字

你的CLAUDE.md和AGENTS.md正在悄悄冲突,你却没发现

你的CLAUDE.md和AGENTS.md正在悄悄冲突,你却没发现

ruleherd是一款审计多AI代理配置文件漂移的开源linter,能查出七类问题且无需格式迁移。

AI编程代理工具生态缺乏统一配置标准,Claude Code、Codex、Cursor等各用各的指令文件(CLAUDE.md、AGENTS.md、.cursor/rules等),同一条规则要粘贴到多个位置,六个月后必然漂移冲突。作者princejain756开源了ruleherd——一款零依赖的审计型linter,不做迁移只做体检,能检测冲突、失效引用、失效命令、过时信息、失效glob、重复内容和文件臃肿七类问题,并给出百分制评分。作者在自身机器上运行得到B级(85分),发现9个指令文件存在多段重复内容,约4757 tokens的代理上下文被浪费。作者坦诚矛盾检测基于启发式而非语义理解,存在漏报误报可能。该工具适合接入CI流程定期检查配置漂移。

AI编程代理工具的配置碎片化问题,正在成为开发者日常维护中的一个隐性痛点。Claude Code用CLAUDE.md,Codex和30多个工具用AGENTS.md,Cursor用.cursor/rules,还有.windsurfrules、GEMINI.md、copilot-instructions.md……同一条规则写一遍就得粘贴到五个地方,六个月后这些文件开始各说各话:一个说用npm,另一个说用pnpm;一个说永不推送到main分支,另一个说尽管推。

开发者princejain756在GitHub上开源了ruleherd——一个专门用来审计这些指令文件是否已经漂移的linter工具。它的定位很明确:不做迁移,只做体检。

rss source: Your CLAUDE.md and AGENTS.md disagree and you don't know it

为什么你的Agent配置一定会漂移

问题的根子在于AI编程工具生态缺乏统一的配置标准。每个工具都想要自己的配置文件,格式不同、加载逻辑不同、作用范围也不同。作者的真实经历很有代表性:他手工维护一份"通用规则文件",再手动同步到五个工具位置——结果还是漂移了。

配置漂移示意

这种漂移带来的后果不只是"文件不一致"那么简单。当CLAUDE.md说用pnpm而AGENTS.md说用npm时,不同代理工具会给出互相矛盾的建议;当某个.mdc规则文件的glob指向一个已删除的目录时,Cursor会静默忽略它,你以为是生效的规则其实从未被加载。

现有的同步方案如rulesync能解决问题,但代价是要求你采用一套新的"唯一真相源"格式。对于已经积累了多个配置文件的项目来说,这种迁移成本往往让人望而却步。

ruleherd能查出什么:七类问题一览

ruleherd的核心价值在于它直接审计你已有的文件,不需要任何格式迁移。运行npx ruleherd即可扫描仓库中所有指令文件,报告七类问题:

CONFLICT(冲突):文件之间的矛盾,比如缩进用tab还是空格、包管理器用npm还是pnpm、共享主题上"never"与"always"的对立。

DEAD REF(失效引用):反引号包裹的路径和@import指向了不存在的文件。

DEAD CMD(失效命令):npm run x在package.json中找不到对应的x脚本。

STALE(过时信息):规则中写着"react 17",但package.json实际安装的是react 19。

DEAD GLOB(失效glob):.mdc规则的glob指向已删除的目录——Cursor会静默地永不加载它。

DUPLICATE(重复内容):同一段文字被粘贴到多个文件中。

BLOAT(臃肿文件):单个文件超过约4k tokens,每次都会加载进提示词中浪费上下文窗口。

最终给出百分制评分,严格模式下CI中非零退出。零依赖,MIT协议。

在真实环境中跑一遍:B级成绩

作者在自己的机器上运行ruleherd(它也会扫描全局配置),得到的输出相当有说服力:

GRADE: B (85/100)
9 instruction files · ~4,757 tokens of agent context
  DUPLICATE ~333-char block in 6 files
  DUPLICATE ~939-char block in 6 files
  DUPLICATE ~705-char block in 6 files
          ~/.claude/CLAUDE.md, ~/.gemini/GEMINI.md,
          ~/.config/devin/AGENTS.md, windsurf global rules,
          ~/.agents/rules/, ~/.cursor/rules/browser-tooling.mdc

9个指令文件、约4757 tokens的代理上下文,三段重复内容分别出现在6个文件中。即便是作者手工维护的"通用规则"也未能幸免——他已经手动同步了,但它还是漂移了。

审计工具自身的局限与诚实

作者在工具说明中保持了难得的坦诚。矛盾检测是启发式的——基于关键词配对和never/always极性判断,并非语义理解。这意味着它可能漏报微妙的矛盾,也可能误报措辞不同但含义一致的情况。

失效引用检查则刻意保守,宁可漏报也不误报。作者分享了一个很有说服力的细节:第一版ruleherd把他的@types/node标记为失效文件引用,把pnpm install标记为缺失的npm脚本——而这两个都在他自己的配置文件中。审计审计工具本身,确实让人谦逊。

工具给出的"干净"评分只意味着"没有检测到漂移",而不是"你的规则写得好"。这个区分很重要。

多配置文件时代的基础设施缺口

ruleherd折射出一个更大的问题:AI编程工具正在经历配置文件的"巴别塔"阶段。每个新工具入场就带来一个新配置文件格式,而开发者被迫成为格式转换器。

短期内,ruleherd这类审计工具是务实的中间方案——不要求你改变现状,只是帮你发现已经存在的问题。它适合接入CI流程,在每次提交时检查配置漂移。

长期来看,这个问题可能需要行业层面的标准来解决。但在标准出现之前,先确保你的CLAUDE.md和AGENTS.md没有在背后互相矛盾,是每个使用多代理工具的开发者应该做的第一件事。

#CLAUDE.md#AGENTS.md#AI编程配置#ruleherd#配置漂移#AI代理工具#指令文件审计
分享:

相关推荐