为什么是 YAML:配置在 Clash 里的位置
无论你是用桌面端一键导入订阅,还是在路由器上跑内核,真正能描述「谁在代理、怎么走、何时直连」的那份契约,几乎都是 YAML 文本。图形界面只是把同一份结构藏起来或做了读写封装;一旦你遇到端口冲突、策略组选了却不生效、或想把机场订阅与自用规则合在一起,终归要回到配置文件本身。
本文面向已经能跑通订阅、但读起来仍「只见树不见林」的用户:先建立对顶层字段的心智模型,再分别啃下 proxies、proxy-groups、rules 三块以及如何互相点名引用。分流规则单行语法与 RULE-SET 的深度说明,可参考本站已有的分流规则专文;这里把注意力放在「整张地图怎么拼起来」。
范围说明:下文示例以 Mihomo(Clash Meta)系内核与兼容客户端为主线,字段名与经典 Clash Premium 基本一致;个别实验特性以你所用内核的版本文档为准。若订阅来自机场,请先把它当作「自动生成的基础」,再局部覆盖自己的端口、DNS 与策略组。
YAML 入门:Clash 里最容易踩的三个坑
YAML 靠缩进表达层级,空格数量必须一致,混用 Tab 会让解析器直接拒绝或静默解析到错误节点。其次,# 开头是注释;多行文本若用引号包裹,注意转义与换行。第三,列表项以 - 开头,与键值对的 key: value 不要混在同一缩进深度里乱序堆叠——这也是很多「从论坛复制一段规则进去就报错」的根源。
# Minimal skeleton (structure only — values are illustrative)
port: 7890
mixed-port: 7893
proxies:
- name: hk-01
type: ss
server: example.com
port: 8443
cipher: aes-128-gcm
password: "your-password"
proxy-groups:
- name: Proxy
type: select
proxies:
- hk-01
rules:
- GEOIP,CN,DIRECT
- MATCH,Proxy
顶层常用字段:端口、局域网与运行模式
port、socks-port(若保留)、mixed-port 决定本机应用如何把流量交给 Clash。唯一性是硬约束:与系统代理、其它 VPN、本机开发的 mock 服务撞端口时,表现往往是「时而能连时而全红」——先 netstat 或系统网络面板扫一遍再定数字。
allow-lan 打开后,同一局域网的其他设备可把网关指向这台机器并使用其代理端口(具体还受防火墙与内核 tun 栈影响)。mode 常见取值为 rule、global、direct:日常应保持 rule,让下文 rules 发挥作用;只有你明确要做全局连通性排查时,才临时切到其它模式。log-level 建议在排错阶段提到 debug 或 info,稳定后再降回 warning 以减少磁盘写入。
proxies:单节点结构与命名纪律
每个 - name: 节点会在全文成为一个可被引用的标识符。type 决定所用协议栈与必填字段:Shadowsocks、VMess、Trojan、hysteria2 等都有固定字段集合;机场的文档若不写 Cipher、ALPN、sni,不要凭感觉猜——少一个 TLS 扩展就可能握手失败。udp、skip-cert-verify 一类开关要能说出「为什么关掉或打开」,否则后患多在游戏语音或企业证书场景里爆发。
维护建议:name 用短横线可读英文,避免 emoji 与控制字符;当你在策略组或规则里手写第三列策略名时,大小写必须与 name 完全一致。订阅合并工具若批量改名,记得连带更新自定义规则里出现的旧字符串。
proxy-providers:把订阅当作外部片段
手写十个节点很轻松,手写五百个不切实际。proxy-providers 段落声明远程 URL(或本地文件路径)、更新间隔与健康检查参数,内核会按间隔拉取并解析成一串节点。它们在逻辑上汇入「可用的代理名单」,随后在 proxy-groups 中用 use: 引用 provider 名,或按需过滤(视客户端支持与模板而定)。这与 rule-providers 常被搞混——前者产出「可走协议的节点」,后者产出「规则集合」。
proxy-groups:把节点组织成可选策略
策略组的 name 就是规则第三列要写的东西。没有这一层抽象,你只能把每条流量直接绑在某个固定节点;有了组,才能做到「桌面默认自动测速、手机热点下改用手动香港」这类场景切换。proxies: 列表里的每一项必须是已有节点名或已有子策略组名——拼写错误或引用尚未定义的组会在加载阶段报错,或静默回落到兜底行为。
常用类型之一:select 与 url-test
select 是最直白的手动选择:GUI 下拉框背后就是它。url-test 则周期性对列表中的候选测延迟,保留最低或满足阈值的一个;interval、tolerance(若配置)要避免设得过激导致无谓振荡。实战中很多人把订阅里「全部落地」与一个 url-test AUTO 组绑在一起:日常挂机用自动,追剧时切到单独的流媒体节点组。
proxy-groups:
- name: Proxy
type: select
proxies:
- AUTO
- hk-01
- DIRECT
- name: AUTO
type: url-test
proxies:
- hk-01
- sg-02
- jp-03
url: https://www.gstatic.com/generate_204
interval: 300
常用类型之二:fallback 与负载均衡
fallback 按顺序找第一个可用的成员,适合做「主备」而不是比谁延迟低:url 请求失败会自动尝试下一个,适合线路波动大时保住可用性。load-balance(若内核与协议组合支持)则把连接分散到多成员,注意并非所有协议与场景都适合会话级粘性;读官方文档确认你的版本如何哈希四元组或主机名。
组合技巧:外层 select 提供「AUTO / 手动 / DIRECT」档位,内层 url-test 只维护机器可读的候选集;规则里始终把流量丢给外层组名,这样你在 GUI 里切换一次外层,就不必改上百条规则。
rules 如何把流量交给策略组
规则列表自上而下匹配,命中即停。第三列写策略组 name、DIRECT 或 REJECT。因此「策略组叫 Proxy 却写成 proxy」这一类大小写失误,会与「规则永远不命中」表象高度相似。MATCH 行的唯一职责是接住所有剩余流量,必须放在末尾——这一点与专文强调的「MATCH 永不提前」完全一致。
若你希望国内流量直连、境外走默认代理组,骨架往往是:局域网与广告拦截/精确域名段落 → RULE-SET → GEOIP,CN,DIRECT → MATCH,Proxy。具体关键词与 GEOIP、provider 的配合,请参阅分流规则指南,避免本文重复冗长枚举。
DNS、tun-interface 与高阶栈(提要)
dns 段决定解析走谁、缓存多久、是否与 fake-ip 协同;它和规则是耦合关系而不是附属品——改完规则发现「仍然直连」,第一步常是核对 DNS 是否把域名解析到了意料之外的地址。
tun 相关字段(各客户端暴露程度不同)影响是否在内核层接管三层流量。开启后调试路径与纯 HTTP 代理模式不同,遇到「只有浏览器走代理」时,应同时检查系统路由与 tun 栈而不是只盯 YAML 里的 port。
自检清单:从报错到稳定运行
- 加载阶段:用客户端内置校验或命令行 dry-run,定位「某行缩进」「未知 type」「循环引用」类错误。
- 引用完整性:全文搜索策略名与节点名,确认 rules 第三列、proxy-groups 的 proxies 列表、use 的 provider 三者一致。
- 重载动作:保存文件不等于内核已读;移动端还要留意后台被杀引起的配置回档。
- 最小复现:临时删减到二三十行仍可复现问题的配置,比在两千行订阅里肉眼扫快一个量级。
常见问答(正文版)
机场的 YAML 该不该整份手改?
不建议在远程订阅本体上原地手改——下次更新会覆盖。更干净的做法是使用「补丁配置」或与 GUI 支持的 merge/prepend 段落,只对端口、DNS、个别策略组和追加规则做文章。
可以把 DIRECT 放进策略组吗?
可以。DIRECT 与 REJECT 常被当作列表里的特殊伪成员,让你在 GUI 里一键切回直连或黑名单模式,而无须重写规则。
多配置文件如何切换实验分支?
实践中维护 config-base.yaml 与个人 override.yaml,用可信工具合并或由客户端支持的多文件加载;无论如何,保持 git 或时间戳备份,能在一次错误嵌套后立即回滚。
为什么选择把策略写进可视化 YAML
一部分「开箱即用」型工具会用极简向导替代文本,但一旦你要把公司内网站点固定直连、给直播流量单独绑定低抖动节点,或想和 CI 一起做配置审计,黑盒向导往往拿不出稳定的 diff。另一类工具则把所有高级开关堆成千层菜单,升级一次客户端后路径全变,旧截图教程瞬间失效。
Clash 系模型把三件事分层得很清楚:proxies 描述链路能力,proxy-groups 定义如何在这些链路之间切换,rules 决定哪些流量有资格进入哪一种切换策略。这份结构天然适合放进版本库里做 code review,也适合与社区规则集渐进结合。再配合仍在演进的 Mihomo 协议支持与透明日志,你很少会陷入「界面说连上了但实际 half-open 丢包」的长期黑箱状态。
如果你希望自己的网络方案在可读性、可恢复性与持续升级之间更平衡,直接从一份维护得当的 YAML 上手,比在多个闭源小工具之间试错更省时间——本站提供的多平台客户端下载入口把安装包来源与说明书集中在一起,减少你在论坛镜像里甄别签名的摩擦成本。