YAMLYAML Ain't Markup Language
也常被稱為:YML、YAML 格式
一句話解釋
用縮排表示階層、格式簡潔易讀的資料格式,常用來寫設定檔,AI 工具的設定幾乎都靠它。
定義
YAML 是一種用來表示結構化資料的純文字格式,全稱原本是「Yet Another Markup Language」,後來官方改稱「YAML Ain’t Markup Language」,強調它的重點不是標記語言,而是資料格式。它靠縮排的空白數量來表示資料的階層關係,不需要像 JSON 那樣大量使用大括號和逗號,讀起來更接近一份條列式的大綱。
為什麼在 AI 領域特別常見
AI 工具的設定檔幾乎都選 YAML,原因很單純:這些設定通常需要人工手動維護,而 YAML 對人眼最友善。常見的場景包括:
- MCP 伺服器設定:要開放哪些工具、傳入什麼參數,通常寫在 YAML 或類似格式的設定檔裡。
- CI/CD 流程定義:自動化測試、部署流程的每個步驟,大多數平台都用 YAML 描述。
- AI Agent 與工作流程設定:定義一個代理該用哪個模型、有哪些權限、遇到特定情況該怎麼做,也經常落在 YAML 檔案裡。
- 專案層級的固定指示:一些工具會讀取專案根目錄下的設定檔,記錄這個專案的慣例與規則。
這些設定的共同點是:內容會隨專案演進不斷手動調整,比起機器對機器傳輸資料的場景(更適合用 JSON),YAML 省去大量符號、階層一目了然,長期維護的成本明顯較低。
基本語法重點
- 縮排表示階層:用空白數量表示誰是誰的子項目,同一層的項目縮排必須完全一致。
- 絕對不能混用 Tab 和空白:這是最常見的出錯原因,多數解析器會直接報錯或誤判階層。
- 冒號分隔鍵與值:
key: value是最基本的寫法,冒號後面通常要留一個空白。 - 短橫線表示清單項目:同一階層下用
-開頭的多行,代表一份清單。 - 不需要引號包住大部分字串,但字串裡如果含有冒號、特殊符號,通常需要用引號包起來避免誤判。
和 JSON 的取捨
兩者能表達的資料結構其實一樣,差別在權衡點不同:
- JSON:符號明確、機器解析速度快、格式嚴格不容易產生歧義,適合程式對程式的資料交換。
- YAML:省略大量符號,人讀起來負擔小,適合需要長期手動編輯、版本控制裡常常要看差異(diff)的設定檔。
實務上很多工具兩者都支援,選哪一種常常只是團隊習慣問題,但只要是「主要由人維護」的設定,YAML 幾乎是預設選項。
常見問題
- YAML 和 JSON 有什麼不同?
- 兩者都能表達同一種資料結構,差別主要在寫法。JSON 靠大括號、中括號、逗號界定結構,機器解析速度快、格式嚴謹;YAML 靠縮排界定階層,省去大量符號,人讀起來更接近條列式大綱。設定檔常用 YAML 是因為要給人手動編輯,資料交換場景則更常見 JSON。
- 為什麼 AI 工具的設定檔幾乎都用 YAML?
- 因為這類設定檔通常需要人工手動維護與調整,例如 MCP 伺服器要開哪些權限、CI/CD 要跑哪些步驟。YAML 省略大量符號、階層一眼就能看出來,比起 JSON 更適合人長期手動編輯,出錯機率也相對低。
- YAML 檔案打不開或跑不動,最常見的原因是什麼?
- 九成以上是縮排問題。YAML 用空白數量表示階層,同一層的項目必須對齊,且不能混用 Tab 和空白。少一個空白、多一個空白,或不小心用了 Tab 鍵,都會讓解析器判斷錯階層關係,導致設定失效或直接報錯。
相關術語
更新於 .全部術語