xkcd 在 2011 年有一則很有名的漫畫,標題叫〈Standards〉。第一格寫著:現在有 14 個互相競爭的標準。兩個工程師看了說,14 個?太荒謬了,我們來做一個涵蓋所有情況的統一標準吧。下一格:現在有 15 個互相競爭的標準。
漫畫開頭順手舉了幾個例子:交流電充電器、字元編碼、即時通訊。十幾年後,這份清單又多了一項:寫給 AI coding agent 的說明書。
CLAUDE.md 是寫給 Claude Code 看的專案說明,Day 1 談過該怎麼寫、怎麼拆。其他 AI coding 工具也有類似的檔案,只是每家的檔名和位置都不一樣。
一個人只用一種工具時,這不是問題。團隊裡有人用 Claude Code、有人用別的工具,同一套專案規則就得寫好幾份。一開始內容一樣,接著有人在其中一份加了一條新規則,忘了同步到其他份。幾個月後,每份都略有不同,同一個專案在不同工具手上,又開始交出不一樣的東西。
這是 Day 23 的雪花問題換了一個方向:上次是人跟人之間不一樣,這次是工具跟工具之間不一樣。
2025 年 8 月,OpenAI 號召 Google、Cursor 等幾家公司,一起推出了 AGENTS.md:一個各家 AI coding 工具都能讀的共用說明檔,放在專案根目錄,用一般的 markdown 寫。它的自我定位很樸素,就是一份給 agent 看的 README。
同年 12 月,AGENTS.md 跟 Anthropic 的 MCP 一起,交給了 Linux 基金會底下新成立的 Agentic AI Foundation 管理。Day 13 談的 MCP 和這篇的 AGENTS.md,現在由同一個中立組織維護,不再屬於任何一家公司。
多個工具讀同一份檔案,這種做法並不是第一次出現。
工程師用的編輯器五花八門,每一種都有自己設定縮排和換行的方式。EditorConfig 定義了一個叫 .editorconfig 的檔案,用 tab 還是空格、縮排幾格、換行字元用哪一種,都寫在裡面。很多編輯器直接支援它,其他的裝個外掛就能讀。它只處理每個編輯器都有的基本設定,不碰各家獨有的功能,範圍小,支援起來也簡單。
但這個前例有一個地方對不上。EditorConfig 寫的是設定值,「縮排兩格」就是兩格,每個編輯器套用出來的結果都一樣。AGENTS.md 寫的是給模型讀的自然語言,沒有固定的格式可以檢查,同一句話交給不同工具背後的不同模型,理解和遵守的程度都可能不同。它統一的是檔案放在哪裡,沒辦法保證每個工具讀完之後做出一樣的事。
Claude Code 從 v2.1.277 起能直接讀 AGENTS.md,預設的規則是二選一:工作目錄和它的上層目錄裡,只要有 CLAUDE.md、.claude/CLAUDE.md 或 CLAUDE.local.md 其中一個,就只讀這些,不讀 AGENTS.md;一個都沒有時,才讀 AGENTS.md。家目錄裡的 ~/.claude/CLAUDE.md、.claude/rules/ 底下的規則則不影響這個判斷,會照常一起載入。子目錄裡的 AGENTS.md 也照同樣的規則,等 Claude 讀到那個目錄的檔案時才載入。
這個規則有兩個容易踩到的地方。一個是上層目錄也算數:如果在家目錄直接放了一份 ~/CLAUDE.md,注意不是 ~/.claude/CLAUDE.md,那麼家目錄底下每個專案的 AGENTS.md 都不會被讀;專案不在家目錄底下就不受影響。另一個是 CLAUDE.local.md 也算數:一個靠 AGENTS.md 運作的專案,只要有人為了放個人偏好加了一份 CLAUDE.local.md,Claude Code 在他的電腦上就會改成不讀 AGENTS.md,而他本人可能完全沒發現。
想讓兩份都讀,可以在 /config 裡把 Project instructions 設成 claude-md-and-agents-md。但這是個人層級的設定,寫在專案的設定檔裡會被忽略,沒辦法透過 repo 讓整個團隊一起套用,只有組織統一下發的設定能替所有人打開。
團隊要共用的話,比較可靠的做法是在 CLAUDE.md 裡寫上 @AGENTS.md,把它整份匯入。共用的規則只寫一次,放在 AGENTS.md;CLAUDE.md 匯入它,再補上只有 Claude Code 需要的部分。只寫一句「請參考 AGENTS.md」是不夠的,那要等 Claude 自己決定去開檔才會讀到。舊版本、某些剛升級完的 session,或關掉了內建讀取功能等情況,也可能讀不到 AGENTS.md,用匯入的方式就不受這些影響。
AGENTS.md 能統一的,是那些大家都看得懂的文字指令,例如怎麼跑測試、命名慣例。Claude Code 專屬的機制,像是擋下危險指令的權限規則、在特定動作前後執行的 hooks,都不在它的範圍裡,還是得寫在 Claude Code 自己的設定。
也因為它只是指示,模型不一定每次都照做。官方文件說得很清楚,真正要擋下的動作,要交給權限規則或 hooks 這類強制機制。
共用格式本身,也開始出現各家的延伸。Codex 有一個用來覆蓋指示的 AGENTS.override.md,社群也有人提議加上只給本機用的版本。Claude Code 的官方文件則寫明,這些延伸的檔案它都不讀。
xkcd 那則漫畫的笑點,是想統一的人最後只多加了一個標準。現實裡,有時候第十五個標準真的會留下來,EditorConfig 就是一個例子,而它靠的是管得夠少。
AGENTS.md 目前看起來走的是同一條路,只統一大家都有的那部分,其餘的留給各自的工具。只是它要統一的東西,比縮排幾格難得多:同一份說明,交給不同的模型,能不能讀出同一個意思,這件事沒有任何格式能保證。
延伸閱讀