AI编程工具配置碎片化:Shopify CEO呼吁统一AGENTS.md标准
近年来,人工智能编程代理(AI coding agents)正以前所未有的速度渗透进软件开发的核心流程。从代码补全到测试生成,再到架构建议,这些工具依赖对项目上下文的精准理解来提供有效输出。为了向AI传递项目结构、编码规范、测试策略和可调用能力,开发者社区逐渐形成了一种新惯例:在代码仓库中加入专门面向AI的说明文件。

目前,两种主流格式正在争夺事实标准的地位:一种是以AGENTS.md为核心、配合.agents/skills目录的通用方案;另一种则是Anthropic为其Claude Code工具定制的CLAUDE.md与.claude/skills体系。前者已被OpenAI Codex、Cursor、Amp等多家工具采纳,后者则专属于Claude生态。这种分裂看似微小,却在团队协作场景中埋下了隐患。

当一个开发团队同时使用多种AI编程工具时,问题便浮出水面。假设某位工程师使用Cursor处理一个模块,另一位使用Claude Code修改相邻功能,他们各自AI代理读取的规则文件可能完全不同。如果AGENTS.md规定“所有API响应必须包含trace_id”,而CLAUDE.md遗漏了这一条,那么由Claude生成的代码就可能违反团队规范。这种不一致性在小型项目中或许容易察觉,但在拥有数千开发者的大型monorepo中,将成为难以追踪的“幽灵缺陷”源头。

Shopify CEO Tobi Lütke正是这一问题的亲历者。他在社交媒体上直言,考虑在Shopify内部禁用Claude Code,直到其支持读取通用的AGENTS.md文件。他的担忧并非出于技术洁癖,而是源于对工程可持续性的深刻洞察。在Shopify这样规模的代码库中,目录层级深、团队边界模糊、项目规范动态演进,要求每个子目录同时维护两套几乎内容相同的配置文件,本质上是一种“愚蠢的复杂性税”——开发者本应专注于业务逻辑,却被迫承担格式同步的运维负担。

面对Lütke的批评,开发者社区迅速给出了实用主义的应对策略。最直接的方法是在项目根目录创建软链接:ln -s AGENTS.md CLAUDE.md。这样,无论AI工具请求哪个文件,实际读取的都是同一份内容。另一种更灵活的方式是利用Claude Code自身的文件引用能力,在CLAUDE.md中写入@AGENTS.md指令,使其自动加载通用规则,同时保留添加Claude专属配置的空间。

然而,这些方案在大型工程环境中依然脆弱。软链接在跨平台(尤其是Windows)环境中可能失效;文件引用依赖工具链的正确解析,一旦路径变更或权限调整就可能断裂;而自动化同步脚本本身又成为需要测试、监控和维护的新组件。正如Lütke所言:“我们知道所有技巧,但问题在于规模化后的可靠性。”

Anthropic团队对此作出了积极回应。Claude Code核心成员Thariq承认多套配置确实增加了不必要的维护成本,并透露团队正在推进功能更新,使Claude Code能更灵活地读取外部文件。他解释了Anthropic最初的设计逻辑:不同AI模型对系统提示(system prompt)和上下文组织方式有显著偏好。Claude系列模型经过专门调优,能更好地理解以CLAUDE.md为入口、结合skills目录的结构化指令。这种“模型定制化”思路源于Anthropic对“上下文工程”(context engineering)的深入研究——他们发现,精心设计的prompt结构可大幅提升模型在特定任务上的表现。

事实上,Anthropic在今年7月分享的Claude 5上下文工程经验中提到,团队已将Claude Code所需的system prompt减少了约80%,转而依赖更清晰的文档化规则。这表明他们正从“硬编码提示”转向“声明式配置”,而这恰恰为兼容通用格式提供了技术基础。

值得玩味的是,当被问及是否会通过开源harness(即AI代理的执行框架)来解决兼容性问题时,Thariq幽默地回应:“Claude Code之前已经被‘开源’过了。”这暗指此前社区对Claude Code协议的逆向工程尝试。尽管官方尚未开源,但这一调侃也释放出开放合作的信号。

从更宏观的视角看,AGENTS.md之争折射出AI编程工具生态的早期阵痛。当前阶段,各厂商倾向于构建封闭的“最佳实践”体系,以凸显自身模型优势。但随着AI代理成为基础设施的一部分,互操作性(interoperability)将比差异化更重要。就像早期Web浏览器对HTML标准的争夺最终催生了W3C一样,AI开发工具也需要一个中立的配置规范。
已有迹象表明行业正在朝此方向迈进。除了AGENTS.md的广泛采用,GitHub也在其Copilot Workspace中探索类似的上下文声明机制。关键在于,标准不应强制统一所有细节,而应提供核心字段的共识(如项目目标、编码风格、测试要求),同时允许工具扩展专属配置。例如,AGENTS.md可包含通用规则,而.agents/claude.yaml存放Claude特有参数——这种分层设计既能保证基础一致性,又保留模型优化空间。
对于企业工程团队而言,短期可采取折中策略:在CI/CD流程中加入配置校验步骤,确保关键目录下AGENTS.md与CLAUDE.md内容一致;或通过模板引擎自动生成多套文件,避免人工同步错误。但长期来看,推动工具厂商采纳通用标准才是治本之策。
Lütke的发声之所以引发强烈共鸣,是因为他点出了一个被忽视的真相:AI工具的便利性不应以牺牲工程纪律为代价。当“智能”带来新的混乱,我们就需要更聪明的治理。或许不久的将来,我们会看到一个由主要AI厂商、云服务商和开源社区共同维护的AI-AGENT-CONFIG规范,让开发者不再为.md文件的命名而烦恼。
在这场静默的标准之战中,胜利不属于某个特定工具,而属于那些坚持“开发者体验优先”的设计哲学。毕竟,AI的终极目标不是取代人类程序员,而是让人类更高效、更一致、更愉悦地构建软件。