YAML是什么意思?
一句话结论
YAML 是以缩进表示层级的纯文本配置格式,Clash、Mihomo 等客户端的配置文件都使用它。
它对空格和缩进格外敏感:少一格、多一格,或者混入制表符,整份配置都可能读取失败。改配置前先弄清它的几条基本写法,能省下大量排查时间。
打开 Clash 一类客户端的配置文件,你看到的是缩进整齐的几十到几百行文字,这就是 YAML。它不是编程语言,只是一种让人和程序都读得懂的数据书写格式。
它是什么
YAML 用三种基本元素描述数据:
- 键值对:写成 “键: 值”,冒号后面必须有空格。
- 列表:每一项以 “- ” 开头,横杠后同样有空格。
- 层级:靠行首空格的数量表示,同一层的缩进必须一致。
以 Clash 系配置为例,结构大致是若干顶层键,其中放节点的是 proxies,放策略组的是 proxy-groups,放规则的是 rules。各字段的含义,请看Clash 配置文件怎么看。
#示意:不是可用配置
port: 7890
proxies:
- name: 示例节点
type: trojan
server: example.com
以井号开头的内容是注释,不会被读取。
为什么它容易出错
| 常见错误 | 现象 |
|---|---|
| 缩进用了制表符 | 解析直接失败,通常提示 tab 或 mapping |
| 冒号后漏了空格 | 整行被当成字符串,字段不生效 |
| 同层缩进不一致 | 某一项被错误地挂到上一层 |
| 值里含冒号、井号等特殊字符没加引号 | 被截断或当成注释 |
| 复制粘贴带入全角符号 | 肉眼难发现,却读不出来 |
节点名称里有冒号、方括号或逗号时,建议加上引号。
常见误解
“YAML 和 JSON 完全是两回事。” 它们能表达的结构很接近,很多 YAML 解析器也能读一部分 JSON 写法,但手写习惯完全不同。sing-box 的配置主要是 JSON,别把两种格式混着贴。
“改完保存就行,不用校验。” 保存不等于有效。多数客户端提供配置校验或日志,出错时先看日志指出的行号。
“中文名称会导致错误。” 通常不会,真正的问题多半在符号或缩进上。
怎么检查自己改过的配置
- 用带显示空白字符功能的编辑器打开,确认没有制表符。
- 逐层折叠,看层级是否符合预期。
- 用站内的Clash 配置生成工具对照一份结构正确的样例。
- 启动失败时,先读客户端日志里的第一条报错,再改,别一次改很多处。
下一步
想学规则怎么写,读Clash 规则怎么写;想了解策略组字段,读策略组一条。