寫於 2026 年 8 月 26 日,9 月才上線(部落格的發佈額度在 8 月中用完了,稿子積壓了三週)。文中對兩份設定檔標準的描述以 8 月 26 日的官方文件為準,你讀到時文件可能已經改版。

2025 年 8 月 19 日下午 5 點 22 分(UTC),GitHub 上多了一個 repo,名字叫 agents.md。四個多小時後第一個 commit 進來,訊息兩個字:Initial commit。

今天你把 github.com/openai/agents.md 貼進網址列,它會把你丟到 github.com/agentsmd/agents.md

GitHub 只在一種情況下做這種轉址:那個 repo 曾經真的住在舊網址,後來被搬走了。所以這一行轉址本身就是證據,這份格式從某一家公司的組織底下,搬到了一個以它自己命名的中立組織底下。

而在同一年裡,我電腦上那份 CLAUDE.md 沒有因為這件事改過一個字。

兩件事都是真的。要看懂這個局面,讀兩邊的文件沒有用,文件只告訴你現在長什麼樣,不告訴你它為什麼長成這樣。照時間順序走一遍才會清楚。

轉址之前:每個工具在你的 repo 根目錄各插一支旗

那時候的做法是這樣:你想跟 AI 講「這個專案怎麼建置、測試怎麼跑、不要動 legacy/ 底下的東西」,你得先問清楚,跟哪一個 AI 講?Cursor 有 Cursor 的檔案,Cline 有 Cline 的,Copilot 有 Copilot 的。每家都是專有檔名,內容幾乎一樣,格式都是 markdown。

這種狀態有多荒謬,其實不用我描述。Zed 的官方文件今天還留著一份現成的化石標本,它列出 Zed 在專案層會依序尋找的指示檔:

Project instruction files apply to the current project. Zed uses the first matching file in this list: .rules / .cursorrules / .windsurfrules / .clinerules / .github/copilot-instructions.md / AGENT.md / AGENTS.md / CLAUDE.md / GEMINI.md

這串東西你可以當地層讀。由上往下,一層一層都是某個工具在某個時間點自己刻的旗子:Cursor 的、Windsurf 的、Cline 的、GitHub Copilot 的,然後才輪到 AGENT.md(單數)、AGENTS.md(複數),最後是 CLAUDE.mdGEMINI.md

九個檔名,同一件事。一個編輯器為了不漏掉使用者可能寫過的任何一份,必須全部認得。分開放沒有錯,錯的是分成九份。

這些旗子插下去的時間可以查。我查得到最早的同類檔案是 Aider 的 CONVENTIONS.md,2024 年 2 月 23 日從 INSTRUCTIONS.md 改名而來;Cline 的 .clinerules 隨 2024 年 12 月 18 日的 v3.0.0 發布;GitHub 的 .github/copilot-instructions.md 2025 年 1 月 21 日在 GitHub.com 上開放公開預覽(那篇公告的措辭暗示 VS Code 端更早,但我沒查到更早的可考日期)。日期取自官方 changelog 與 git commit,但那是「最早可考」,不保證是檔名誕生的那天。

2025 年 8 月:五家一起端出一個檔名

回到那個 repo 建立的日子。agents.md 官網的 About 段落把當初的組成寫得很清楚:

AGENTS.md emerged from collaborative efforts across the AI software development ecosystem, including OpenAI Codex, Amp, Jules from Google, Cursor, and Factory.

五家:OpenAI 的 Codex、Amp、Google 的 Jules、Cursor、Factory。

同一頁還有一句,我認為是整份文件裡最關鍵的:

Rather than introducing another proprietary file, we chose a name and format that could work for anyone.

「與其再生一個專有檔案」,他們自己知道問題在哪。前面那九層地層就是這句話的註腳。

那份名單裡沒有 Anthropic。這不是我推論的,就是名單上沒有這五個字。

到這裡故事還算單純:一群工具廠商受夠了同一份內容複製九次,坐下來講好一個檔名。開始有趣的是接下來那一年,「支援」這兩個字慢慢變得不太可靠。

「支援」這個字是怎麼鬆掉的

agents.md 首頁有一區叫「One AGENTS.md works across many agents」,底下擺了 23 個工具的名字跟 logo。

問題是每個 logo 底下的連結指到哪裡?我把整份 HTML 抓下來撈出所有 <a> 的 href,結果一半一半。十一個指得到文件裡的具體段落,opencode、Warp、GitHub Copilot、Aider 都是;另外十二個是 factory.aicursor.comdevin.aijules.googlewindsurf.comampcode.com 這種,直接丟你去首頁。

首頁不是證據,首頁只證明這家公司有網站。而且連深連結也要看清楚它指到哪一段。Aider 那個連結是有錨點的,我把它指過去的那一頁抓下來數:CONVENTIONS.md 出現 8 次,AGENTS.md 出現 0 次

所以我派人逐一回各家的官方文件查,規則只有一條:只採信該工具自己的文件網域或官方 repo,agents.md 的清單不算數。被列上去跟自己說支援,是兩件事。

結果比我預期的好,也比預期的亂。

Warp 那邊最乾脆,官方文件直接寫:

Warp uses AGENTS.md as the default project rules file. Existing WARP.md files are still fully supported—if you have WARP.md, it will continue to work as expected.

共用標準升格成預設值,自家檔名留著相容。這是真的採用。不過同一段往下再讀一句:

If both WARP.md and AGENTS.md exist in the same directory, WARP.md takes priority.

連最乾脆的這家,兩份檔案擺在同一個目錄時贏的還是自家那份。這件事我原本沒查到,是查核的人回頭多讀一句抓出來的。

Cursor 保守很多,官方 rules 文件把它列為四種規則機制之一,措辭是「alternative」:

AGENTS.md is a simple markdown file for defining agent instructions. Place it in your project root as an alternative to .cursor/rules for straightforward use cases.

給簡單情況用的替代方案,不是主線。

然後是 Gemini CLI,這個最值得講。它掛在清單上,logo 底下標著「from Google」。但你點進 Google 自己的 repo 看 docs/cli/gemini-md.md

While GEMINI.md is the default filename, you can configure this in your settings.json file.

AGENTS.md 在那份文件裡只出現一次,在一段設定範例裡當示範值。「你可以自己設定成它」跟「我會讀它」差很遠。派去查的人不放心,又翻了原始碼:packages/core/src/tools/memoryTool.ts 裡寫著 export const DEFAULT_CONTEXT_FILENAME = 'GEMINI.md';

Aider 一樣,而且承認這件事的正是 agents.md 官網本人。它的 FAQ 有兩題叫「How do I configure Aider?」「How do I configure Gemini CLI?」,答案是要你去 .aider.conf.ymlread: AGENTS.md、去 .gemini/settings.json 指定檔名。同一頁的上半把它們列為支援,下半教你怎麼讓它們支援。

對照組是 Jules,也是 Google 的:

Jules now automatically looks for a file named AGENTS.md in the root of your repository.

同一家公司,兩個 coding agent,一個自動讀,一個要你自己設。連 Google 內部都沒統一,你就知道「某某家支援」的粒度有多粗。

Zed 是第三種鬆法。它確實讀 AGENTS.md,但回頭看前面那串地層,AGENTS.md 排第七位,.cursorrules.windsurfrules.clinerules 全排在它前面。你的 repo 裡只要還躺著一個八百年前的 .cursorrules,Zed 就永遠讀不到你新寫的 AGENTS.md

一張清單上的 23 個名字,至少有四種不同的「支援」:它是預設值但撞上自家檔名還是會輸、它是給簡單情況用的替代方案、它排在一堆舊檔名後面、你得自己去設定檔裡指定它才生效。清單不會告訴你是哪一種。

2025 年 12 月 9 日:搬家,還有一個沒人提的巧合

這是整條時間線上最硬的節點,因為它有正式新聞稿。

2025 年 12 月 9 日,Linux Foundation 宣布成立 Agentic AI Foundation(AAIF)。新聞稿電頭寫著「SAN FRANCISCO, Dec. 9, 2025」,頁面的 JSON-LD 標記寫的發布時間是同一天。成立時有三個創始捐贈專案:

Anthropic’s Model Context Protocol (MCP), Block’s goose, and OpenAI’s AGENTS.md.

再讀一次那三個名字。

Anthropic 捐了 MCP。OpenAI 捐了 AGENTS.md。兩件東西現在住在同一個基金會底下。而 Anthropic 不只是捐了東西,同一份新聞稿的會員名單:

Platinum members of the AAIF include Amazon Web Services, Anthropic, Block, Bloomberg, Cloudflare, Google, Microsoft and OpenAI.

Anthropic 跟 OpenAI 並列在同一行白金會員上。

我原本以為這篇會寫成一個標準之爭的故事,兩家各推各的檔名互不相讓。查到這裡整個立論垮掉,因為根本沒有在爭:一個是 agent 跟外部工具溝通的協定,一個是 agent 讀專案指示的檔案格式,同一個生態系的兩塊拼圖。

GitHub 那邊的痕跡剛好對得上:agentsmd 這個 org 是 12 月 1 日建立的,比公告早八天;12 月 10 日官網 footer 第一次出現 AAIF 連結;12 月 11 日 About 段落補上「under the Linux Foundation」;12 月 16 日 footer 換成 LF 的制式版權字樣「a Series of LF Projects, LLC」。搬家的箱子是一箱一箱進門的,看 commit 日期就看得出來。

問題來了。既然兩家在同一張桌子上,為什麼 Claude Code 到今天還是不讀 AGENTS.md

另一條線:CLAUDE.md 這一年在忙別的

Anthropic 官方文件對這題的回答,短到沒有解釋空間:

Claude Code reads CLAUDE.md, not AGENTS.md.

主詞動詞受詞,連「目前」「暫時」這種留後路的副詞都沒有。

這句話很容易被讀成「Anthropic 不合作」。但你把 CLAUDE.md 這一年長出來的東西攤開看,會得到另一個解釋。同一份 memory 文件裡現在有四層作用域(使用者、專案、本機、還有企業 IT 派下來、個人設定改不掉的管理層),有 .claude/rules/ 底下用 paths: frontmatter 綁 glob 的條件式規則,有最多遞迴四層的 @path import,有讓你在 monorepo 裡跳過別團隊檔案的 claudeMdExcludes

這已經不是一個檔案格式了,是一套有作用域、有優先序、有企業管控、有條件載入的設定系統。

AGENTS.md 那邊的官網 FAQ 第一題是什麼?

Are there required fields? No. AGENTS.md is just standard Markdown.

刻意保持成一份沒有必填欄位的 markdown。這正是它能被 23 個工具接受的原因:門檻夠低,低到誰都能宣稱自己支援。

兩邊在解不一樣的題目。一邊要「同一份文字,很多工具都讀得懂」,另一邊要「一個工具,把所有來源的指示按規則疊起來」。前者必須簡單到沒有規格,後者必須複雜到能表達優先序。放在同一份檔案裡會打架。

真正讓我改觀的是 Claude Code 對別人家檔案的態度。它其實一直在讀,只是讀的時機不一樣。/init 預設就去讀 Cursor 的規則(.cursor/rules/.cursorrules)跟 Copilot 的 .github/copilot-instructions.md,把相關部分吸收進它生出來的 CLAUDE.md;把 CLAUDE_CODE_NEW_INIT=1 打開,它連 AGENTS.md.devin/rules/.windsurf/rules/.clinerules 一起讀。

回頭對一下 Zed 那串九個檔名:/init 收了其中五個,第六個 CLAUDE.md 本來就是它自己的,另外還收了 Zed 沒列的 .devin/rules/。沒收的只剩裸 .rules、單數的 AGENT.mdGEMINI.md

有個小地方特別好笑:Cursor 現行的官方 rules 文件裡,.cursorrules 這個字串已經一次都查不到了,而 Claude Code 的 /init 還在預設讀它。

差別在時機:那是搬進來一次,不是每次開 session 都去讀。讀完就變成 CLAUDE.md 的一部分,之後它只認 CLAUDE.md

查到一半才發現方向反了

寫到這裡我本來要收尾,結果各家文件的查證結果回來,裡面有一組東西我完全沒預期。

opencode 的官方文件寫著:

The first matching file wins in each category. For example, if you have both AGENTS.md and CLAUDE.md, only AGENTS.md is used.

這句話正著讀是「AGENTS.md 贏」,反過來讀是「沒有 AGENTS.md 的時候它讀 CLAUDE.md」。它文件裡甚至有一節就叫 Claude Code Compatibility。

Amp 寫得更直白:

If no AGENTS.md exists in a directory, but a file named AGENT.md (without an S) or CLAUDE.md does exist, that file will be included.

GitHub Copilot 講 agent instructions 的那一頁:

Alternatively, you can use a single CLAUDE.md or GEMINI.md file stored in the root of the repository.

Augment Code 最誇張。它官方文件列出找規則檔的優先序,第二順位是 CLAUDE.md,第三順位才是 AGENTS.mdCLAUDE.md 排在共用標準前面,這是我查的這一輪裡唯一明文這樣排的工具。

再加上 Zed 那串清單裡也有 CLAUDE.md

這幾條加起來,結論跟直覺相反:**CLAUDE.md 自己早就是一個跨工具格式了。** 至少五個工具的官方文件白紙黑字說它們會讀。

所以這一年真正的不對稱,不在「Anthropic 不加入標準」這件事上。是別人都在讀 Anthropic 的檔案,而 Anthropic 只讀自己的。

這個局面怎麼形成的,我認為沒有陰謀,就是使用者數量的自然結果。你做一個 coding agent,發現一大票 repo 根目錄躺著現成的 CLAUDE.md,裡面寫滿建置指令跟專案慣例,那是免費的上下文,不撿白不撿。撿了之後它就變成事實上的第二個共用檔名,不管 Anthropic 有沒有這個打算。

2026 年 8 月:那個搬運動作變成一個正式指令

時間線走到現在。Claude Code 的指令清單裡多了一個 /import

1
/import [codex|gemini] [--dry-run] [--yes]

官方說明:

Bring configuration from other coding agents on your machine, currently OpenAI Codex and Google Gemini CLI, into Claude Code, including instruction files, MCP servers, commands, subagents, and skills.

需要 v2.1.213 以上,--dry-run 可以先看它會搬什麼、不寫任何檔案。

注意搬的東西已經不只是指示檔:MCP servers、commands、subagents、skills 全部一起搬。這個指令要處理的問題早就不在「你的規範寫在哪個檔名」那個層級了。

一年前的問題是同一份規範要複製九次。現在的問題是你已經在另一家投資了一整套設定,要怎麼搬過來。AGENTS.md 解決了前者的一半:檔名收斂了,雖然「支援」的定義還很鬆。後者它幫不上忙,因為 subagent 跟 skill 的格式各家根本不一樣。

接下來十二個月

實務上該怎麼放,8 月 8 日那篇拆過執行細節,這裡不重複。比細節更該記住的是這一年查下來的那個判準:當一份清單告訴你某個工具「支援」某個標準,那句話的資訊量比你以為的低很多。 Warp 說它是預設值(但下一句說撞到 WARP.md 還是自家贏),Cursor 說它是簡單情況的替代方案,Gemini CLI 要你自己去設定檔裡指定。這些都是官方原文,而它們在同一張清單上長得一模一樣。

往前看,有兩股力量在拉扯。

AGENTS.md 現在的全部力量來自它沒有規格。沒有必填欄位、沒有 schema、沒有優先序定義,所以誰都能宣稱支援,官網自己寫的數字是超過 60k 個開源專案在用。但也正因為沒有規格,「支援」才會鬆到需要你逐家查文件。要修這個問題它得長出規格,長出規格就會失去讓它長這麼快的那個東西。

另一邊,AAIF 底下現在同時放著 MCP 跟 AGENTS.md。一個是有版本、有 schema、有傳輸層定義的協定,一個是沒有必填欄位的 markdown。同一個基金會,兩種完全不同的嚴謹度。它們在同一個治理架構底下待久了會不會互相影響,我不知道,那是我接下來會盯著看的地方。

至於 github.com/openai/agents.md 那行轉址,它會一直在那裡。GitHub 的 repo 轉址是永久的,除非有人在舊網址上再建一個同名的 repo 把它蓋掉。


參考來源與查證方式(查詢日 2026-08-26)

  • agents.md 官方網站:About 段落的五家名單、FAQ 的 Aider 與 Gemini CLI 設定法、23 個工具的清單與其連結。取證方式是 curl 抓原始 HTML 後解析可見文字與所有 <a> 的 href,不是讀網頁摘要。
  • Linux Foundation 新聞稿:Agentic AI Foundation 成立:2025-12-09 的三個創始捐贈專案與白金會員名單。
  • GitHub API 一手資料:gh api repos/agentsmd/agents.mdcreated_at 為 2025-08-19T17:22:54Z)、gh api orgs/agentsmdcreated_at 為 2025-12-01T18:17:45Z),以及 agents.md repo 上 12 月那幾顆改 footer 與 About 的 commit 日期。
  • 各家工具的支援說法一律取自該工具自己的官方文件:WarpopencodeZedCursorGitHub CopilotAmpAugment CodeJulesGemini CLIAider(那頁 CONVENTIONS.md 8 次、AGENTS.md 0 次的計數是我自己 curl 下來 grep 的)。agents.md 自己的清單只用來當「要去查哪幾家」的起點,不當成支援的證據。
  • Claude Code 這一側:memory 文件CLAUDE.md 的作用域、AGENTS.md 那一節、/init 會讀哪些別家規則檔)、指令清單/import 的說明與版本需求)。

這篇沒有做的事:我沒有為了寫這篇實跑 /import,也沒有實測任何一家工具「是不是真的照文件說的那樣讀 AGENTS.md」。上面所有關於各家行為的敘述都是官方文件的說法,不是我的實測結果。另外 LF 新聞稿只寫 AGENTS.md「Released by OpenAI in August 2025」,沒有給到日;文中那個 8 月 19 日來自 GitHub API 的 repo created_at 與第一顆 commit 的時間,兩者是同一天,但它嚴格來說是「repo 建立日」而不是「規格公開發表日」。