Clash 客户端核心概念与配置文件结构全景解析:Proxies、Proxy Groups 与 Rules 编写指南

一、Clash 的设计哲学与工作流

与传统以图形界面为中心、配置高度写死的代理客户端不同,Clash 自诞生起就秉承着“规则驱动”与“配置即代码”的现代化设计理念。

整个 Clash 客户端的流量流转生命周期可以用一条极其清晰的管线来概括:

浏览器/系统请求 -> 监听端口 (Port/Mixed) -> 分流规则匹配 (Rules) -> 策略组调度 (Proxy Groups) -> 实体节点出站 (Proxies)

任何一份标准且合法的 Clash 配置文件(通常以 .yaml 结尾),其核心均由以下三大基石模块拼装而成。

二、三大核心支柱模块深度剖析

支柱 1:Proxies(实体节点资产池)

proxies: 字段是整个配置文件的“兵工厂”,它定义了所有真实存在的远端中继代理服务器。每个节点是一个独立的字典对象:

proxies:
  - name: "香港 01 节点"
    type: ss
    server: 1.2.3.4
    port: 8388
    cipher: aes-128-gcm
    password: my-strong-password

  - name: "美国 01 节点"
    type: vmess
    server: 5.6.7.8
    port: 443
    uuid: a1b2c3d4-e5f6-7890-1234-567890abcdef
    alterId: 0
    cipher: auto
    tls: true

  • 核心字段:name(节点的唯一身份证,后续策略组通过名称调用)、type(协议类型)、server(服务器地址)与鉴权凭证。

支柱 2:Proxy Groups(策略决策指挥部)

proxy-groups: 是 Clash 最精妙的设计所在。它不负责直接收发数据,而是将零散的 proxies 按照业务逻辑打包成不同性格的“虚拟队列”:

proxy-groups:
  # 1. 自动选择组:动态挑选延迟最低者
  - name: 🚀 自动选优
    type: url-test
    url: http://cp.cloudflare.com/generate_204
    interval: 300
    proxies:
      - "香港 01 节点"
      - "美国 01 节点"

  # 2. 手动选择组:允许用户在界面自由勾选
  - name: 🎯 节点选择
    type: select
    proxies:
      - 🚀 自动选优     # 策略组之间可以嵌套调用!
      - "香港 01 节点"
      - "美国 01 节点"
      - DIRECT         # 甚至可以直接放入系统保留直连动作

  • 常见策略组类型:
  • select:人手控制;
  • url-test:毫秒测速优选;
  • fallback:主备故障转移;
  • load-balance:多节点流量轮询分摊。

支柱 3:Rules(分流判决法典)

rules: 列表位于配置文件的底部。当一个网络数据包到达客户端时,内核会拿着该请求的域名或目标 IP,从第一行开始自上而下逐条比对。一旦命中任何一条,立即将数据包打发给指定的策略组或直连动作,并停止后续比对:

rules:
  # 1. 拦截流氓广告(优先级最高)
  - DOMAIN-SUFFIX,adservice.google.com,REJECT

  # 2. 国内服务强制直连
  - DOMAIN-SUFFIX,baidu.com,DIRECT
  - DOMAIN-SUFFIX,taobao.com,DIRECT
  - GEOIP,CN,DIRECT

  # 3. 跨国协作与代码服务走指定策略组
  - DOMAIN-SUFFIX,github.com,🎯 节点选择
  - DOMAIN-KEYWORD,google,🚀 自动选优

  # 4. 兜底匹配:未被上述规则收录的所有未知流量
  - MATCH,🎯 节点选择

三、手写与修改 YAML 配置的避坑戒律

初学者在编辑配置文件时,90% 的报错都源于违反了 YAML 严格的格式规范:

严格使用空格缩进,绝对禁止使用 Tab 制表符:缩进错位哪怕一个空格,整个解析器都会抛出 mapping values are not allowed here;

冒号与短横线后面必须保留一个半角空格:如 type: select(冒号后有空格),- name:(短横线后有空格);

名称引用必须严格大小写一致:如果在 proxies 里叫 "香港 01", 在 proxy-groups 里写成了 "香港01"(少了个空格),Clash 会因为找不到目标节点直接罢工报错。

掌握这套三元框架,无论是阅读复杂机场订阅,还是手写高度定制的私有网络分流,你都能随心所欲、游刃有余。