Anthropic 在 2026 年 9 月 18 日推送的 Claude Code v2.1.277 中,悄然补上了一项开发者呼吁已久的能力:当代码库根目录不存在私有的 CLAUDE.md 时,工具将自动检测并读取通用的 AGENTS.md。

这项改动表面上打破了 AI 辅助编程领域的配置壁垒。然而拆开技术实现会发现,这绝非一次彻底的原生平权,而是一场防御性妥协。Anthropic 并没有把开源标准接纳进核心运行时,而是将其打包成一个内置的外挂插件,在带来便利的同时也给工程团队埋下了易踩的静默失效陷阱。

迟到 393 天的回退机制,为何留了一手

开源社区对这一功能的诉求,最早可以追溯到 2025 年 8 月 21 日提交的 GitHub 第 6235 号功能议题。在此后一年多里,工程师在多工具协作时,必须在仓库里保留两份内容重复的指令文件,或者在 CLAUDE.md 中手动编写软链接与引入标记。

Claude Code v2.1.277 引入的默认规则被称为 claude-md-or-agents-md。它的核心逻辑是互斥回退,而不是智能融合。只有在当前目录完全找不到 CLAUDE.md 时,系统才会向下寻找 AGENTS.md。

Claude Code 指令加载的互斥与抑制逻辑 CLAUDE.md 存在 优先加载专有配置 AGENTS.md 被直接忽略 CLAUDE.local.md 隐形阻断点 本地私有覆盖全局回退 AGENTS.md 回退 无任何前置文件时触发 外挂插件注入机制 判定陷阱说明: 只要仓库存在未提交的 CLAUDE.local.md,系统就会静默压制 AGENTS.md,导致通用规则全部失效。

许多开发者以为引入此功能后两个文件能按规则合并,但默认状态下二者互斥执行。只有手动将项目指令配置改成 claude-md-and-agents-md,工具才会把两份文档拼接加载,而且 CLAUDE.md 的文本位置永远排在最前方。

更致命的是隐藏的优先级覆盖。即便开发者删除了团队共享的 CLAUDE.md,只要开发机上残留一份 CLAUDE.local.md,回退机制就会被静默阻断,导致团队精心制订的通用规范根本无法生效。

剥开外挂插件,AGENTS.md 仍是二等公民

从架构上看,这次更新并没有重写 Claude Code 的底层配置加载器,而是通过即将推出的扩展架构 mods,以内置插件 mods/agents-md 的形态落地的。

这种走外挂通道的设计,带来了多项直接的技术阉割。通过插件注入的 AGENTS.md 不会在系统的 /memory 或 /context 面板中正常呈现,开发者无法通过常规指令排查它是否被完整载入。它也不会触发核心生命周期里的 InstructionsLoaded 钩子,通过追加目录参数 --add-dir 引入的其他 AGENTS.md 更是会被直接无视。

  • 风险.若团队在 Amazon Bedrock、Google Vertex AI 或 Microsoft Foundry 等托管环境中使用 Claude Code,该回退功能尚未同步上线,冒然清理兼容脚本会导致云端任务大面积脱轨。

在云端托管与企业私有化部署场景中,环境依赖往往滞后于本地客户端。这意味着跨团队的大型项目目前依然无法真正删掉粘合脚本。

三大 AI 编程体系的指令加载哲学对比 OpenAI Codex 原生第一公民 单文件 32 KiB 限制 内置层级覆盖解析 无排他性品牌专有名前缀 Claude Code 插件层防御回退 外挂 Mod 机制加载 上下文面板与钩子失效 专有 CLAUDE.md 优先级居首 Gemini CLI 显式配置映射 需配置 context.fileName 默认采用 GEMINI.md 无开箱即用的自动回退

协议割据下的工程生存方案

横向审视整个行业,各家工具对项目指令的掌控欲截然不同。OpenAI Codex 将 AGENTS.md 作为核心标准,提供严格的层级覆盖与完整的内存调度;Google Gemini CLI 仍然坚守 GEMINI.md,需要用户自行通过配置项修改抓取文件名;Anthropic 这次拿出的方案,介于开放与封闭的狭缝之间。

这种妥协反映出大模型厂商在仓库控制权上的拉锯。把品牌名称固化在开源项目的配置文件中,本就是极强的品牌占位。

软性的提示词堆叠永远无法换来确定性的工程执行,名字之争只是表象。

无论文件被命名为 CLAUDE.md 还是 AGENTS.md,它们本质上都只是向大模型上下文中注入的参考文本,没有任何沙盒硬约束能保证指令得到百分之百的执行。

  • 建议.当下的最稳妥策略,依然是在仓库中保留一份标准的 AGENTS.md,并在 CLAUDE.md 中通过显式导入语法建立桥接,切勿在多云环境跟进前清空专有配置。

在各大工具真正开放核心加载接口之前,开发者过早押注单一文件名,只会把团队协作带入新的调试泥潭。