Claude Code 与 AGENTS.md 标准:互操作性冲突

冲突:CLAUDE.md vs. AGENTS.md

Claude Code 使用专有的 CLAUDE.md 文件为 AI 提供特定于项目的上下文和记忆。然而,一个名为 AGENTS.md 的日益增长的开放标准——已被超过 20,000 个开源项目采用,并受到 Cursor 和 Codex 等工具的支持——旨在为任何编程 AI 提供统一的、与代理无关的指令文件。

开发者们正请求 Claude Code 采用双文件方法:优先使用 CLAUDE.md 进行 Claude 特有的优化(例如 MCP 服务器配置或子代理定义),同时回退到 AGENTS.md 以获取通用的项目指南、构建命令和样式规则。这将允许 Claude Code 在无需手动复制指令的情况下,立即在数千个现有仓库中发挥作用。

当前状态与社区抵制

尽管获得了大量的支持(GitHub issue 上有超过 4,600 个反应),该功能请求却在没有核心产品原生实现的情况下被标记为“已完成”并关闭。这引发了开发者社区的显著批评,用户指责其缺乏透明度、公关能力差,以及被认为是在向“围墙花园”生态系统迈进。

批评者认为,要求使用 CLAUDE.md 文件是对 Anthropic 的一种“免费广告”,迫使每个仓库即使在指令与开放标准完全相同的情况下也要显示一个 Claude 特有的文件。一些用户表达了极度的挫败感,称在没有变更日志或文档的情况下悄无声息地关闭 issue,对于一个面向专业开发者的工具来说是不可接受的。

互操作性的技术规避方案

由于目前无法原生支持 AGENTS.md,社区已经开发了几种规避方案,以在不同的 AI 工具之间保持单一事实来源:

1. 导入方法

Claude Code 的 CLAUDE.md 支持导入其他文件。开发者可以创建一个仅包含一行内容的 CLAUDE.md 文件来引入通用标准:

@AGENTS.md

2. 符号链接

在 macOS 和 Linux 上,用户可以创建符号链接,使 Claude Code 像读取 CLAUDE.md 一样读取 AGENTS.md 文件:

ln -s AGENTS.md CLAUDE.md

3. 通过会话钩子实现自动化

为了在嵌套目录中获得更流畅的体验,开发者可以使用 .claude/settings.json 钩子,在启动时自动将仓库中找到的所有 AGENTS.md 文件注入到会话上下文中:

设置配置:

{
  "hooks": {
    "SessionStart": [
      {
        "matcher": "startup",
        "hooks": [
          {
            "type": "command",
            "command": "$CLAUDE_PROJECT_DIR/.claude/hooks/append_agentsmd_context.sh"
          }
        ]
      }
    ]
  }
}

Shell 脚本 (append_agentsmd_context.sh):

#!/bin/bash
echo "=== AGENTS.md Files Found ==="
find "$CLAUDE_PROJECT_DIR" -name "AGENTS.md" -type f | while read -r file; do
    echo "--- File: $file ---"
    cat "$file"
    echo ""
done

开发者视角的综合分析

关于 AGENTS.md 的争论凸显了工具特定优化与生态系统互操作性之间的根本紧张关系。

"显而易见的原因是他们更希望在每个仓库中都有 CLAUDE.md 文件……这简直就是我们时代的 'Sent from my iPhone'。"

虽然有人认为工具特定文件可以更好地针对模型的特定特性定制指令,但资深用户的主流观点是,在大型组织或许多开源项目中维护多个几乎相同的文件的开销是一个显著的摩擦点,阻碍了 AI 编程代理的采用。

Sources

相关