配置参考 · CONFIG REFERENCE

Clash 配置文件参考大全

config.yaml 查阅手册:结构总览、通用字段、DNS、代理节点、策略组、规则语法、覆写合并,逐段配 YAML 示例。字段以 mihomo 内核(原 Clash Meta)为准,与原版 Clash 有差异处单独标注。

  • 内核 · MIHOMO
  • 性质 · 查阅手册
  • 配套 · SETUP.HTML 教程

先分清两页分工。教程页是快速上手主线:装客户端、导订阅、选模式、连通验证,跟着做就能跑通。本页是查阅手册,不讲操作顺序,只讲 config.yaml 每个字段的含义、取值与写法。订阅下发的配置大多已经写好,手册的用途是读懂它、改对它。文中客户端与下载页清单一致:各平台首推 Clash Plus,与 Clash Verge Rev、FlClash 同属 mihomo 内核生态,本手册对这些客户端同样适用。

01YAML 结构总览

config.yaml 是内核的唯一输入。Clash Verge Rev、Clash Plus、FlClash 这些图形客户端,本质上都做同一件事:管理这份文件,交给 mihomo 内核执行。界面上的每次点击——换节点、切模式、改端口——最终都落回 YAML 文本。读懂这份文件,等于读懂客户端的全部行为;改对这份文件,等于改对全部客户端。

文件定位不用记路径。Clash Verge Rev 配置页任意订阅卡片右键,「打开文件」直达当前配置原文,同一菜单里还有更新、编辑等入口。内核直跑的场景(服务器、软路由)没有 GUI,文件位置由启动参数 -f(指定文件)或 -d(指定目录)给出,与客户端无关。

顶层结构按职责分五区,书写顺序不强制,社区惯例固定如下:

# ① 通用字段:端口、模式、日志、外部控制
mixed-port: 7897
mode: rule
log-level: info

# ② DNS:内核接管域名解析
dns:
  enable: true

# ③ 代理节点:出站清单
proxies: []

# ④ 策略组:节点的组织方式
proxy-groups: []

# ⑤ 规则:分流判定,自上而下
rules:
  - MATCH,DIRECT

五区之外是扩展区:proxy-providers 聚合订阅节点、rule-providers 引入外部规则集、tun 接管系统流量、hosts 静态域名表、listeners 额外监听。用到哪个查哪个,在对应章节展开。

YAML 语法六条硬规则,违反任意一条都会激活失败:

  • 缩进只用空格,禁用 Tab;同层缩进必须等宽,惯例两个空格。
  • key: value 冒号后必须有一个空格,key:value 是非法写法。
  • 列表项以 - 开头,短横后同样带空格;- 与父键同列或再缩进均可,全文件统一即可。
  • 字符串含 #: ,或以 @&* 开头,或长得像数字、布尔值时,必须加引号。密码字段几乎总是需要。
  • # 起注释,行尾注释与内容之间留空格,否则 # 会被吞进前面的字符串。
  • 锚点 &name 与引用 *name 可复用重复片段,内核按标准 YAML 解析,支持该特性。

最小可用配置。二十行,已能完成「本地混合端口 + 单节点 + 国内直连、其余走代理」的完整分流:

mixed-port: 7897
allow-lan: false
mode: rule
log-level: info
dns:
  enable: true
  nameserver:
    - 223.5.5.5
    - 119.29.29.29
proxies:
  - name: 节点A
    type: ss
    server: ss.example.com
    port: 8388
    cipher: aes-128-gcm
    password: "your-password"
proxy-groups:
  - name: 默认代理
    type: select
    proxies:
      - 节点A
      - DIRECT
rules:
  - GEOSITE,cn,DIRECT
  - GEOIP,CN,DIRECT,no-resolve
  - MATCH,默认代理

修改与生效分两步:改文件,再让内核重新加载。Clash Verge Rev 里重新激活配置即触发热重载;GUI 上的系统代理、TUN、开机自启属于客户端设置,不写进订阅文件,两类设置不要混为一谈。

静默忽略 字段名拼错不会报错——内核静默忽略不认识的字段。配置「改了没反应」时,先逐字母核对字段名,再查缩进。

内核差异要留心。原版 Clash 已停止更新,Clash Meta 更名 mihomo 继续维护,三代内核字段并不通用:mihomo 新增的 vless、hysteria2、tuic、wireguard 节点类型与逻辑规则,旧内核无法识别。各客户端内置内核的对应关系见博客《Clash 内核版本区别梳理》。本页字段一律以 mihomo 为准。

02通用字段:端口、模式与行为基线

通用字段位于顶层,管内核的监听、模式与行为基线。它们与具体节点无关,改任何一项都影响全局。订阅配置通常已带合理默认值,需要动的主要是端口、模式与日志三处。

端口族。port 是 HTTP 代理端口,socks-port 是 SOCKS5 端口,mixed-port 把两种协议合并到同一端口——系统代理与多数应用只认其中一种,混合端口免去二选一,Clash Verge Rev 默认使用 7897 混合端口。redir-porttproxy-port 只服务 Linux 透明代理,桌面用户留空。

局域网。allow-lan: true 开放局域网接入,bind-address 决定监听网卡,* 表示全部网卡。手机、电视共用电脑代理的完整配法见博客《混合端口与局域网共享代理设置》。开放即暴露:只在可信网络开启,公共 Wi-Fi 下保持 false

模式。mode 三选一:rule 按规则分流,日常常驻;global 全部流量走选定代理组;direct 全部直连。GUI 的模式切换就是改写这个字段。规则排错的标准二分法:先切 global 验证代理链路本身可用,再切回 rule 逐段查规则。

日志与外部控制。log-level 五档,从 silent 到 debug;日常 info,排错临时调 debug,用完调回——debug 日志量大,且包含访问过的域名。external-controller 是内核 RESTful API 的监听地址,GUI 与第三方面板都经它控制内核;监听地址改成非回环时必须同时设置 secret,否则等于把代理控制权交给同网段的任何人。

行为微调。unified-delay: true 统一测速口径,剔除协议握手差异,节点间延迟才可比。tcp-concurrent: true 对候选地址并发建连、取最快者。find-process-mode 控制进程匹配,PROCESS-NAME 规则依赖它。profile.store-selected: true 让内核记住手动选过的节点,重启不丢。ipv6: false 是 IPv6 异常网络里「能连但打不开」的常见解法。

字段典型取值说明
port7890HTTP 代理端口
socks-port7891SOCKS5 代理端口
mixed-port7897混合端口,HTTP 与 SOCKS 同口,推荐
redir-port / tproxy-port7892 / 7893Linux 透明代理专用,桌面留空
allow-lanfalse是否允许局域网设备接入
bind-address*allow-lan 开启时的监听地址
moderulerule / global / direct 三选一
log-levelinfosilent / error / warning / info / debug
ipv6false是否允许 AAAA 解析与 IPv6 出站
external-controller127.0.0.1:9090内核 API 监听地址
secretAPI 访问密钥,非回环监听必填
profile.store-selectedtrue记住手动选择的节点
port: 7890
socks-port: 7891
mixed-port: 7897
allow-lan: false
bind-address: "*"
mode: rule
log-level: info
ipv6: false
unified-delay: true
tcp-concurrent: true
find-process-mode: strict
external-controller: 127.0.0.1:9090
secret: "your-secret"
profile:
  store-selected: true
  store-fake-ip: false
端口占用 激活时报 bind: address already in use,即端口被占:换 mixed-port,或找出占用进程。Windows 下用 netstat -ano | findstr :7897 定位,macOS 与 Linux 用 lsof -i :7897

03DNS 字段:解析路径与 fake-ip

DNS 单列一章,因为分流正确性一半系于它。规则里的 GEOIP、IP-CIDR 都要先拿到解析结果;解析被污染,分流跟着错。dns.enable: true 是前提——false 时整段失效,内核退回系统解析,假地址、策略解析全部不工作。

监听与模式。listen 决定内核 DNS 服务的监听地址;TUN 模式下查询由内核内部接管,系统侧无需改动。enhanced-mode: fake-ip 是主流选择:域名查询立即返回 198.18.0.1/16 池中的假地址,连接真正建立时内核按域名匹配规则,省掉一次真实解析的等待,网页打开明显更快。旧的 redir-host 模式已从 mihomo 移除,老配置里见到应删除。

fake-ip 边界。fake-ip-range 默认 198.18.0.1/16,仅当与内网网段冲突时才需要改。fake-ip-filter 是不发假地址的白名单:局域网域、NTP 授时、系统连通性探测必须列入,否则打印机、路由器后台、时间同步会莫名失败。下方示例给出常用条目,照抄后再补自己的内网域。

解析器分组。nameserver 是默认组,支持多种写法(见下表),多个服务器并发查询、取最快应答。proxy-server-nameserver 专解节点域名:节点地址本身也是域名,用它指定可信解析器,避免「要先连上代理才能解析代理」的死循环。direct-nameserver 服务直连域名,通常填运营商或国内公共 DNS。

写法协议说明
223.5.5.5UDP 53明文查询,最快,可被窃听
tls://dns.alidns.comDoTTLS 加密通道
https://doh.pub/dns-queryDoHHTTPS 加密,可走 443
quic://dns.alidns.comDoQQUIC 传输,低延迟
dhcp://en0DHCP取网卡 DHCP 下发的 DNS

策略解析。nameserver-policy 按域名分派解析器,键可以是具体域名、geosite: 分类或 rule-set: 规则集——国内域名走运营商 DoH、其余走可信境外 DoH,都靠这一段表达。旧字段 fallback 已弃用,mihomo 中由 nameserver-policy 取代,迁移时按「哪类域名用哪组服务器」重写。

其余开关。respect-rules: true 让境外解析器本身也按规则出站,需配合 proxy-server-nameserver 使用。use-hostsuse-system-hosts 控制 hosts 表来源。prefer-h3 让 DoH 查询优先走 HTTP/3。

dns:
  enable: true
  listen: 0.0.0.0:53
  ipv6: false
  enhanced-mode: fake-ip
  fake-ip-range: 198.18.0.1/16
  fake-ip-filter:
    - "*.lan"
    - "*.local"
    - "time.*.com"
    - "ntp.*.com"
    - "+.msftconnecttest.com"
    - "+.msftncsi.com"
  use-hosts: true
  use-system-hosts: true
  prefer-h3: true
  nameserver:
    - https://doh.pub/dns-query
    - https://dns.alidns.com/dns-query
  proxy-server-nameserver:
    - https://doh.pub/dns-query
  direct-nameserver:
    - 223.5.5.5
    - 119.29.29.29
  nameserver-policy:
    "geosite:cn":
      - 223.5.5.5
      - https://doh.pub/dns-query
    "geosite:geolocation-!cn":
      - https://dns.cloudflare.com/dns-query
      - https://dns.google/dns-query
内网域名加两处 内网域名要同时进 fake-ip-filter 与 nameserver-policy(或 direct-nameserver)。只加一处,仍可能拿到假地址,表现为内网站点时开时不开。

排错线索。网页「能连但打不开」、打开极慢、解析到错误地区,先看 DNS:在日志里按域名查解析路径,确认它走进了哪一组解析器、拿到了什么结果,再回头改对应的字段。

04代理节点字段:proxies 数组

proxies 是数组,一个元素一个节点。所有节点共享四个基础字段:nametypeserverport;其余字段由 type 决定。写错 type 特有的字段名,内核不报错、直接忽略,节点表现为连不上。

name 是节点的身份证:策略组按名字引用它,重名时后者覆盖前者,改名会让所有引用失效。名字含空格、冒号、# 时加引号。server 可以是域名或 IP;填域名时由 proxy-server-nameserver 负责解析,见上一章。

通用可选字段。udp: true 允许 UDP 转发,QUIC、游戏、语音通话需要它。skip-cert-verify: true 跳过证书校验,只作临时排查手段。tfo 开启 TCP Fast Open。interface-name 指定出网卡,多网卡机器用得上。

Shadowsocks

  - name: ss-node
    type: ss
    server: ss.example.com
    port: 8388
    cipher: aes-128-gcm
    password: "your-password"
    udp: true

cipher 常见取值:aes-128-gcm、aes-256-gcm、chacha20-ietf-poly1305、2022-blake3-aes-128-gcm。plugin 可挂 obfs 或 v2ray-plugin 做流量伪装,参数进 plugin-opts

VMess

  - name: vmess-ws
    type: vmess
    server: vmess.example.com
    port: 443
    uuid: 00000000-0000-0000-0000-000000000000
    alterId: 0
    cipher: auto
    tls: true
    servername: vmess.example.com
    network: ws
    ws-opts:
      path: /ray
      headers:
        Host: vmess.example.com
    udp: true

alterId 现代服务端一律为 0。network 支持 tcp、ws、grpc、h2、http;ws 传输时 ws-opts 里的 path 与 headers.Host 必须与服务端严格一致,错一个字符就是 400。

VLESS + Reality

  - name: vless-reality
    type: vless
    server: 192.0.2.10
    port: 443
    uuid: 00000000-0000-0000-0000-000000000000
    network: tcp
    tls: true
    udp: true
    flow: xtls-rprx-vision
    servername: www.microsoft.com
    client-fingerprint: chrome
    reality-opts:
      public-key: "your-public-key"
      short-id: "0123456789abcdef"

flow 只认 xtls-rprx-vision。Reality 的 public-keyshort-id 来自服务端配置,client-fingerprint 建议 chrome,servername 填服务端伪装的域名。

Trojan

  - name: trojan-node
    type: trojan
    server: trojan.example.com
    port: 443
    password: "your-password"
    sni: trojan.example.com
    alpn:
      - h2
      - http/1.1
    skip-cert-verify: false
    udp: true

sni 必须等于服务端证书域名,alpn 常见 h2 与 http/1.1。密码即认证凭据,泄露等于节点泄露。

Hysteria2

  - name: hy2-node
    type: hysteria2
    server: hy2.example.com
    port: 443
    password: "your-password"
    obfs: salamander
    obfs-password: "obfs-password"
    sni: hy2.example.com
    skip-cert-verify: false
    up: 50
    down: 200

基于 QUIC,强制 UDP,udp 字段不必写。obfs 目前仅 salamander,口令进 obfs-passwordupdown 单位 Mbps,虚标带宽会让拥塞控制起反效果,按实际填。运营商 QoS 严重时可用 ports 配置端口跳跃。

TUIC

  - name: tuic-node
    type: tuic
    server: tuic.example.com
    port: 443
    uuid: 00000000-0000-0000-0000-000000000000
    password: "your-password"
    alpn:
      - h3
    congestion-controller: bbr
    udp-relay-mode: native
    reduce-rtt: true
    sni: tuic.example.com

第五版协议。congestion-controller 可选 bbr、cubic、new_reno,高丢包链路 bbr 更稳。udp-relay-mode 默认 native;reduce-rtt: true 降低握手延迟。

WireGuard

  - name: wg-node
    type: wireguard
    server: 198.51.100.20
    port: 51820
    ip: 172.16.0.2
    private-key: "your-private-key"
    public-key: "peer-public-key"
    mtu: 1420
    udp: true

ip 是分配到的隧道地址;private-key 是本机私钥、public-key 是对端公钥,别填反。mtu 常见 1420;部分服务商要求 reserved 三段字节,照抄官方客户端导出的值。

订阅聚合:proxy-providers

订阅下发的节点由 proxy-providers 管理:内核定时拉取、按 health-check 健康检查,策略组用 use 引用整组节点。手写节点与 provider 节点可以混在同一配置里。

proxy-providers:
  provider-01:
    type: http
    url: "https://example.com/subscribe?token=xxxx"
    path: ./providers/provider-01.yaml
    interval: 86400
    health-check:
      enable: true
      url: http://www.gstatic.com/generate_204
      interval: 300
skip-cert-verify 的代价 长期开启等于放弃 TLS 的身份校验,中间人可冒充节点。只在排查证书问题时临时打开,确认链路后立即关回 false。

字段核对方法:节点连不上时,按 type 找到对应小节的示例,逐字段比对——多写的字段被忽略,少写的字段用默认值,拼错的字段不报警。订阅节点的字段以服务商下发为准,内核字段名全网统一。

05策略组字段:proxy-groups

策略组决定「流量交给谁」。规则里只写策略名,策略名背后是组,组里是节点——三层解耦,换节点不动规则,改规则不动节点。

五种类型,行为各不相同:

type行为适用场景
select手动选择最外层入口组,GUI 点哪个用哪个
url-test周期测速选最低延迟同地区多节点自动择优
fallback按顺序取第一个可用主备切换,主恢复自动切回
load-balance连接分摊到多节点大流量下载、多线叠加
relay串联链路中转加速、特殊落地
  • select:手动选择,适合作为最外层入口组,其他组挂在它下面。
  • url-test:周期对组内节点测延迟、选最低;tolerance 设 50(毫秒)防止延迟抖动导致来回跳节点。
  • fallback:按 proxies 顺序取第一个通过健康检查的节点,主节点恢复后自动切回。
  • load-balance:strategy 三选一——consistent-hashing 同域名固定同节点、站点会话最稳;round-robin 轮询;sticky-sessions 同会话同节点。
  • relay:流量先进第一个节点、再从最后一个节点出,链路上每一跳都必须可用,任何一跳断了整链断。

通用字段。proxies 列节点名,use 列 proxy-providers 名,两者可混用。filter 用正则筛节点名(如 香港|HK),exclude-filter 反向排除,exclude-type 按协议类型排除。icon 供 GUI 显示图标,hidden: true 在 GUI 里隐藏该组,disable-udp: true 禁止该组转发 UDP。

测速字段。url 默认 http://www.gstatic.com/generate_204,返回 204 即判定可用;interval 单位秒,太短费电、太长迟钝,300 是常见折中;timeout 是单次测速超时;lazy: true(默认)表示组没人用就不测;max-failed-times 控制连续失败多少次判定节点不可用;expected-status 指定期望的 HTTP 状态码。

嵌套。组的 proxies 里可以再写组名,「默认代理 → 自动选择 → 各节点」的三层结构就是这么搭的;rules 里引用最外层组名即可。订阅下发的配置通常已带好几层组,手动加节点时往最外层组加,全链路生效。

proxy-groups:
  - name: 默认代理
    type: select
    proxies:
      - 自动选择
      - 故障转移
      - DIRECT
    use:
      - provider-01

  - name: 自动选择
    type: url-test
    use:
      - provider-01
    url: http://www.gstatic.com/generate_204
    interval: 300
    tolerance: 50
    lazy: true

  - name: 故障转移
    type: fallback
    proxies:
      - 香港节点
      - 日本节点
    url: http://www.gstatic.com/generate_204
    interval: 120

  - name: 负载均衡
    type: load-balance
    use:
      - provider-01
    strategy: consistent-hashing
    url: http://www.gstatic.com/generate_204
    interval: 300

  - name: 中继链
    type: relay
    proxies:
      - 入口节点
      - 落地节点

三种自动组的取舍细节——测速选优、故障转移、负载均衡各自适合什么场景——见博客《Clash 策略组类型怎么选》。组的设计原则就一条:少而精,每多一个组都是一份维护成本;组名会被规则引用,改名要连带改规则。

06规则语法:自上而下,首条命中

规则是分流的大脑,匹配模型只有一句话:自上而下,首条命中即停。顺序就是优先级;MATCH 无条件命中,必须放在最后一条,它之后的规则永远不会被执行。

单条规则是三段式:类型,参数,策略,部分类型可追加第四段 no-resolve。策略可以是策略组名,也可以是内置策略:DIRECT 直连、REJECT 拒绝并返回错误、REJECT-DROP 静默丢弃、PASS 跳过当前分支继续匹配(主要配合 SUB-RULES)。

类型参数说明
DOMAIN完整域名精确匹配单个域名
DOMAIN-SUFFIX域名后缀匹配该域及其全部子域
DOMAIN-KEYWORD关键词域名包含即命中,慎用,误伤面大
GEOSITE分类名域名分类库,如 cn、category-games@cn
IP-CIDR / IP-CIDR6网段按目标 IP 匹配
IP-ASNASN 号按目标自治域匹配
GEOIP国家码按目标 IP 归属地匹配
SRC-IP-CIDR网段按来源 IP 匹配
SRC-PORT / DST-PORT端口按来源 / 目标端口匹配
PROCESS-NAME进程名按发起进程匹配
PROCESS-PATH完整路径按进程路径匹配
RULE-SET规则集名引用 rule-providers
AND / OR / NOT子规则逻辑组合,mihomo 特有
SUB-RULES子规则组名进入子规则分支
MATCH兜底,必须最后一条

域名类与 IP 类是分水岭。域名规则(DOMAIN、DOMAIN-SUFFIX、DOMAIN-KEYWORD、GEOSITE)直接拿连接里的域名比对,不需要解析。IP 类规则(IP-CIDR、GEOIP、IP-ASN)需要目标 IP——域名连接走到 IP 规则时,内核被迫先做一次 DNS 解析才能判断。第四段 no-resolve 禁止这次解析:域名连接直接跳过该规则,只有纯 IP 连接才参与匹配。所有 IP 类规则都应带 no-resolve,除非明确要按解析结果分流。

GEO 数据。GEOSITE 与 GEOIP 依赖 geosite.dat 与 geoip.dat(或 mmdb)数据文件,geodata-mode: true 切换为 dat 格式;文件随内核更新,缺失时对应规则静默匹配不到,表现为分流失效。

逻辑规则

mihomo 支持 AND、OR、NOT 组合子规则,子规则用双层括号包裹:

rules:
  - AND,((DOMAIN-SUFFIX,example.com),(PROCESS-NAME,chrome.exe)),默认代理
  - OR,((DOMAIN-KEYWORD,blog),(DOMAIN-SUFFIX,notes.io)),默认代理
  - NOT,((GEOSITE,cn)),默认代理

规则集:rule-providers

量大、更新频繁的规则交给 rule-providers 外部规则集,rules 里用 RULE-SET,名称,策略 引用;behavior 三选一:domain(域名后缀)、ipcidr(IP 段)、classical(经典三段式)。

rule-providers:
  ad-list:
    type: http
    behavior: domain
    format: yaml
    url: "https://example.com/rules/ad-list.yaml"
    path: ./ruleset/ad-list.yaml
    interval: 86400

rules:
  - RULE-SET,ad-list,REJECT
  - MATCH,默认代理

进程匹配。PROCESS-NAMEPROCESS-PATH 依赖 find-process-mode;Windows 下进程名带 .exe 后缀,macOS 与 Linux 用可执行文件名。

排序原则:

  • 精确在前,宽泛在后:DOMAIN 先于 DOMAIN-SUFFIX,后缀先于 GEOSITE。
  • 局域网与内网网段置顶直连,不进代理。
  • 国内直连收尾用 GEOSITE,cn 加 GEOIP,CN,别逐条列域名。
  • MATCH 永远最后,指向主代理组或 DIRECT。
rules:
  # 局域网与内网直连
  - DOMAIN-SUFFIX,local,DIRECT
  - IP-CIDR,10.0.0.0/8,DIRECT,no-resolve
  - IP-CIDR,172.16.0.0/12,DIRECT,no-resolve
  - IP-CIDR,192.168.0.0/16,DIRECT,no-resolve
  # 进程与应用
  - PROCESS-NAME,steam.exe,游戏加速
  # 域名规则,精确在前
  - DOMAIN,api.example.com,默认代理
  - DOMAIN-KEYWORD,telegram,默认代理
  # 分类库收尾
  - GEOSITE,category-games@cn,DIRECT
  - GEOSITE,cn,DIRECT
  - GEOIP,CN,DIRECT,no-resolve
  # 兜底
  - MATCH,默认代理

07覆写与合并:订阅更新不丢改动

手改订阅文件有个死结:订阅一更新,改动全部丢失。Clash Verge Rev 为此提供三层修改机制,按「改什么、留不留」分工。

第一层,编辑文件。配置页订阅卡片右键「编辑文件」,直接改 YAML 原文,保存即生效,但下次订阅更新就被覆盖。只用于临时调试与想法验证,验证完的改动要搬到下面两层。

第二层,订阅级编辑。右键「编辑规则」「编辑代理」「编辑代理组」,分别对订阅的规则、节点、策略组做前插或后插。它绑定当前订阅、不被更新覆盖,是最常用的一层——加一条内网直连规则、加一个自建节点,都在这里完成。

第三层,全局扩展配置。配置页右上角入口,两种形态:Merge 用 YAML 声明合并意图,Script 用 JavaScript 拿到整个配置对象自由改写。它作用于所有配置,切换订阅不丢,适合放与订阅无关的个人基线。

Merge:声明式合并

六个专用键控制数组合并方向,prepend 在前、append 在后;规则前插意味着比订阅自带规则更早命中。其余顶层键直接覆盖原值:mixed-portmode 这类标量写啥是啥;dns 这类嵌套段按整段替换,覆写时把整段写全,不要只写半段。

prepend-rules:
  - DOMAIN-SUFFIX,internal.example.com,DIRECT
append-rules:
  - DOMAIN-KEYWORD,download,下载分组
prepend-proxies:
  - name: 自建备用
    type: ss
    server: 203.0.113.10
    port: 8388
    cipher: aes-256-gcm
    password: "your-password"
append-proxy-groups:
  - name: 下载分组
    type: select
    proxies:
      - 自建备用
      - DIRECT
mixed-port: 7897

Script:编程式改写

需要条件逻辑时用脚本。入口固定为 main(config),参数是合并后的完整配置,返回值是交给内核的最终配置:

function main(config) {
  config["mixed-port"] = 7897;
  const extra = {
    name: "自建备用",
    type: "ss",
    server: "203.0.113.10",
    port: 8388,
    cipher: "aes-256-gcm",
    password: "your-password"
  };
  config.proxies = config.proxies || [];
  config.proxies.push(extra);
  (config["proxy-groups"] || []).forEach(function (group) {
    if (Array.isArray(group.proxies)) {
      group.proxies.push("自建备用");
    }
  });
  return config;
}

生效顺序固定:订阅原文 → 订阅级编辑(规则/代理/代理组)→ 全局 Merge → 全局 Script → 内核。排错沿链反向查:先看运行时最终生效的配置长什么样,再逐层定位问题出在哪一层。

高频覆写场景:

  • 内网域名直连:prepend-rules 加 DOMAIN-SUFFIX 规则,前插保证最先命中。
  • 自建节点注入所有组:Script 遍历 proxy-groups 统一追加。
  • 统一端口:Merge 里写一行 mixed-port。
  • fake-ip-filter 补内网域:覆写 dns 整段,把订阅的 filter 列表抄全再追加。

其他客户端与直跑。Clash Plus、FlClash 同样提供「订阅 + 本地修改」的机制,思路相同、入口不同;内核直跑没有覆写层,直接维护原文件,建议用 Git 管历史。多设备维护同一套配置的方案对比,见博客《Clash 配置多设备同步的三种方案》

分层排错 覆写层报错与源文件报错要分开看:激活失败时,错误提示会标明出问题的是哪一层的哪一段,先修那一层,不要动订阅原文。

08校验与排错:从报错到日志

激活失败先读报错。Clash Verge Rev 激活配置时内核做完整解析,报错信息带行号与原因;按行号回到文件,九成问题在这一步定位。报错被截断时,去日志页看完整输出。

YAML 高频错误,按出现率排序:

  • Tab 缩进:编辑器设置里把 Tab 转为空格,全文件统一两个空格。
  • 冒号后缺空格:port:7890 是非法写法。
  • 密码含 # 未加引号:# 之后的内容被当成注释,密码被截短。
  • 列表缩进错位:- 与父键从属关系错乱,节点跑到别的键下。
  • 节点重名:后者覆盖前者,策略组里引用的只剩一个。
  • 规则指向不存在的策略名:激活即报 proxy not found,检查组名拼写。

日志是第二现场。log-level 临时调到 debug,内核日志页能看到每条连接命中了哪条规则、走了哪个出站;界面各区块功能见博客《Clash Verge Rev 界面功能速览》。排查完调回 info。

「改了不生效」按序排查:

  1. 改了文件,但配置页没有重新激活,内核还在跑旧配置。
  2. 改的是订阅原文,覆写层又把它改了回去——看运行时最终配置确认。
  3. 配置对了,但 GUI 连着旧内核进程,重启内核或重连。
  4. 系统代理或 TUN 没开,流量根本没进内核,改什么都没用。

端口与局域网。报 bind: address already in use 是端口被占:换 mixed-port,或结束占用进程。allow-lan 已开但手机连不上:先查电脑防火墙是否放行端口,再确认两端在同一网段、填的是电脑内网 IP。

fake-ip 异常。个别应用(银行、政企、部分带反作弊的游戏)对假地址敏感:把域名加进 fake-ip-filter,配 direct-nameserver,必要时整条规则直连。加完重新激活配置生效。

TLS 与时间。证书类报错先校准系统时间,偏差几分钟握手必败;skip-cert-verify 只作临时排查手段,确认链路后关回 false。

DNS 泄漏与污染。怀疑泄漏时按序查:nameserver 是否全部走可信通道、proxy-server-nameserver 是否已配、respect-rules 是否符合预期、nameserver-policy 的 geosite 键分类名是否写对——分类名写错会静默落空,不报错。

多客户端互抢。同一台机器同时开两个代理客户端,后启动的会覆盖先启动的系统代理设置,表现为规则不生效、流量走错内核、端口反复被占。保证同一时间只运行一个客户端;退出旧客户端后先确认系统代理已复原,再启动新的,必要时重启系统清掉残留的代理注册项。上一次未正常退出的内核进程也会占住混合端口,新进程绑定失败即启动报错,先在任务管理器或活动监视器里结束残留的内核进程再启动;若改了端口号,系统代理与局域网设备里填写的端口要同步修改,否则会出现地址正确却连不上的假故障。

订阅更新失败。更新订阅时报超时或证书错误,先区分是订阅服务器不可达还是本地网络问题:关掉系统代理直连更新一次,再挂代理更新一次,哪条通走哪条,客户端里对应「使用系统代理更新」开关。更新成功但节点列表没变,多半是服务端缓存,间隔几分钟再试;订阅返回 404 或 401 则是链接失效,找服务商重新获取,不要反复重试。

性能与资源占用。节点全部可用但网速明显偏低,依次确认:延迟测试选中的节点是否真是当前策略组的出站(手动选择的组不会自动切换);url-test 组的测试间隔是否过短导致频繁切换;日志级别是否停留在 debug——高频写日志在低配机器上会拖慢转发。内存占用异常增长时,检查 rule-providers 是否引入了体积过大的规则集,精简后重新激活即可回落。

收尾。仍无头绪时,按常见问题页的分类清单过一遍;客户端下载与内核说明在下载页,选型对比在客户端对比页

先留副本 改配置前留一份能用的副本。任何一层改坏了,回退到副本重新激活,比重写一遍快。