Clash配置文件怎么合并?订阅覆写与多订阅节点教程
简答:Clash配置文件不要直接拼接:保留订阅外的规则用Merge,多订阅节点用proxy-providers,两份完整YAML才手动整理;入口和语法需按客户端版本核对。
定义:Clash配置文件合并,是把订阅、本地覆写或多个节点提供器按客户端支持的结构组合,再生成一份可校验、可加载和可回滚的运行配置。
先判断:Clash配置文件要合并哪一种
如果你搜索“Clash配置文件怎么合并”,先不要把两份YAML直接上下拼接。实际需求通常分为三类:订阅更新后保留本地规则或DNS设置;把多个订阅源的节点放进同一个策略组;把两份完整配置手动整理为一份。三种场景的入口、字段和风险不同。
本文适用范围:重点覆盖Clash Verge Rev的Merge扩展配置,以及采用mihomo内核并支持proxy-providers的配置。Clash for Windows、ClashX、Android和其他客户端可能没有相同菜单或字段,不能直接照搬本文语法;这些客户端只能先核对当前版本是否支持Merge、覆写或代理提供器。
| 你的目标 | 优先方式 | 判断重点 |
|---|---|---|
| 订阅更新后保留自定义规则、节点或策略组 | Clash Verge Rev Merge | 扩展配置在主配置之上处理,部分客户端控制字段不能覆写 |
| 多个订阅源共同提供节点 | mihomo proxy-providers | 策略组用use引用提供器,提供器名称必须唯一 |
| 两份完整YAML合成一份 | 备份后手动整理 | 重复键、列表顺序、节点重名和引用关系都要重新检查 |
Clash Verge Rev文档将Remote、Local作为主要配置,将Script和Merge作为增强配置;Merge用于在主配置前后添加字段,或覆盖部分原有字段。查看Clash Verge Rev配置类型说明
最快判断口诀:Merge、proxy-providers还是手动合并
保留本地设置用Merge,多订阅节点用proxy-providers,两份完整文件才手动整理。不要为了“合并”而复制整份订阅内容,因为订阅更新后,直接改动下载文件通常会被新内容替换;分层配置更容易更新、验证和回滚。
| 场景 | 操作入口 | 不建议的做法 |
|---|---|---|
| 订阅加本地规则 | Clash Verge Rev中创建或编辑Merge配置,保存后重新启用并刷新 | 直接修改Remote订阅文件 |
| 多个订阅节点 | 在主配置写多个proxy-providers,策略组通过use引用 | 重复复制大量节点到proxies |
| 两份完整YAML | 合并同名键、整理列表、检查引用,再做语法校验 | 把两份顶层YAML直接拼接 |
如果你只是想让规则在订阅更新后继续存在,先选择Merge;如果你只是想集中管理多个节点来源,先选择代理提供器。只有当两个文件分别包含完整运行配置,而且你确实需要脱离原订阅独立运行时,才考虑手动合并。
Clash Verge Rev:订阅和本地设置怎么合并
Clash Verge Rev的官方说明显示,Merge配置支持prepend-rules、append-rules、prepend-proxies、append-proxies、prepend-proxy-groups和append-proxy-groups,其他支持的配置字段还可以按原配置语法覆盖。多个增强配置会按启用顺序连续处理;修改后需要重新启用或刷新才能观察结果。查看Merge配置语法与生效方式
- 复制当前可用配置,并单独保存原始订阅地址。
- 先确认订阅单独更新成功,能显示节点;订阅本身解析失败时,不要继续叠加Merge。
- 在Clash Verge Rev的配置管理区域创建或打开Merge配置。菜单名称和界面位置可能随版本变化,需按当前版本核对。
- 只写需要长期保留的字段,例如新增规则、追加节点或某个明确的DNS覆盖,不要再次粘贴整份订阅。
- 保存后重新启用Merge并刷新主配置,再查看最终运行配置、节点列表和日志。
合法的Merge结构示例,字段名称以当前文档和客户端版本为准:
prepend-rules:
- "DOMAIN-SUFFIX,example.org,DIRECT"
append-rules:
- "DOMAIN-SUFFIX,example.net,Proxy"
prepend-proxies: []
append-proxies: []
prepend-proxy-groups: []
append-proxy-groups: []
上例中的Proxy只是策略组名称示例,必须替换成当前主配置中真实存在的名称。每条规则应是一个完整字符串;不要写成[DOMAIN-SUFFIX,example.org,Proxy]这种会被解析为多个列表元素的形式。
官方说明建议自定义规则通常使用prepend-rules,因为原配置中的MATCH可能已经位于规则末尾;如果把新规则追加到MATCH之后,新规则可能不会被匹配。官方还提示,Clash Verge Rev自身控制的部分字段不能通过Merge成功覆盖,例如端口、日志级别或外部控制器等字段,具体限制需按当前版本核对。查看Merge覆盖限制与规则顺序
mihomo:多个订阅节点怎么合并
多个订阅节点不需要全部复制到proxies。在支持mihomo的配置中,可以为每个订阅建立一个proxy-providers条目,再让策略组通过use引用这些提供器。mihomo文档要求提供器名称唯一;HTTP类型提供器需要填写订阅URL,路径需要保持唯一。查看mihomo proxy-providers字段说明
完整结构示例,可复制后替换URL;不代表所有客户端的最终运行结果:
mixed-port: 7890
allow-lan: false
mode: rule
proxy-providers:
provider_a:
type: http
url: "https://example.com/subscription-a"
path: ./proxy_providers/provider_a.yaml
interval: 86400
provider_b:
type: http
url: "https://example.com/subscription-b"
path: ./proxy_providers/provider_b.yaml
interval: 86400
proxies:
- name: "DIRECT"
type: direct
udp: true
proxy-groups:
- name: "节点选择"
type: select
proxies:
- DIRECT
use:
- provider_a
- provider_b
rules:
- "DOMAIN-SUFFIX,example.org,节点选择"
- "MATCH,DIRECT"
这个示例中,provider_a和provider_b分别代表两个订阅源,策略组“节点选择”通过use引用它们。URL、缓存路径、策略组名称和规则目标都需要替换;示例中的域名和订阅地址不是可用服务地址。
mihomo的策略组文档说明,proxies用于引用代理或其他策略组,use用于引用代理集合;如果策略组只写proxies而没有use,提供器中的节点不会自动进入该组。使用include-all-providers等自动包含字段时,还要重新检查节点范围和排序。查看mihomo策略组use字段
第一次配置建议只保留一个提供器,确认它能更新并显示节点后,再加入第二个。若两个订阅中存在同名节点,可以使用提供器的名称前缀或其他当前版本支持的重命名字段;具体写法应以mihomo文档为准,无法确认时不要自行添加字段。
两份完整YAML手动合并:基础配置、订阅配置和结果对照
手动合并时,先把文件分成“基础配置”和“订阅节点来源”两类,而不是简单复制。下面示例用于展示合并思路,地址、节点和策略组均为占位内容;它不是任何具体订阅的最终结果。
合并前:基础配置,仅示意:
mixed-port: 7890
mode: rule
proxies:
- name: "本地直连"
type: direct
udp: true
proxy-groups:
- name: "默认选择"
type: select
proxies:
- "本地直连"
rules:
- "DOMAIN-SUFFIX,local,DIRECT"
- "MATCH,默认选择"
合并前:订阅配置,仅示意:
proxies:
- name: "示例节点A"
type: http
server: example.com
port: 443
username: "user"
password: "password"
proxy-groups:
- name: "订阅选择"
type: select
proxies:
- "示例节点A"
rules:
- "DOMAIN-SUFFIX,example.org,订阅选择"
- "MATCH,DIRECT"
合并后:仅示意,不能代表所有客户端的通用最终结果:
mixed-port: 7890
mode: rule
proxies:
- name: "本地直连"
type: direct
udp: true
- name: "示例节点A"
type: http
server: example.com
port: 443
username: "user"
password: "password"
proxy-groups:
- name: "默认选择"
type: select
proxies:
- "本地直连"
- "示例节点A"
- name: "订阅选择"
type: select
proxies:
- "示例节点A"
rules:
- "DOMAIN-SUFFIX,local,DIRECT"
- "DOMAIN-SUFFIX,example.org,订阅选择"
- "MATCH,默认选择"
这个对照只说明整理逻辑:顶层标量通常保留一个最终值;映射对象按键名整理;列表则需要逐项确认顺序、去重和引用。真实订阅的节点字段、认证字段和代理类型可能不同,不能把上述占位节点直接用于连接。
| 字段类型 | 手动处理方式 | 检查内容 |
|---|---|---|
标量,例如mode、mixed-port | 只保留一个最终值 | 确认该值由配置控制还是由客户端界面控制 |
映射,例如dns、proxy-providers | 按键名合并或整段替换 | 同名键是否覆盖,是否因此丢失原有子字段 |
列表,例如rules、proxies、proxy-groups | 逐项整理,必要时去重 | 节点名称、策略组名称和规则顺序是否一致 |
DNS、规则和策略组:最容易出错的合并点
DNS不要默认按子字段深度合并。如果你用一个新的dns对象覆盖原配置,可能只留下新对象中的字段,原来的nameserver、fake-ip-filter或其他设置可能不再存在。修改前先复制原段落;如果决定覆盖,就写出你确实需要保留的完整结构,再查看最终运行配置。
规则顺序决定匹配结果。规则通常从上到下检查,MATCH是常见兜底项。自定义规则放到MATCH之后,可能无法达到预期;策略组名称也必须与proxy-groups中的实际名称完全一致,包括空格、括号和特殊字符。
节点重名会影响排查。两个来源包含相同节点名时,列表中可能难以区分,也可能在某些处理方式下发生覆盖或引用混淆。优先使用提供器分组、名称前缀或客户端当前支持的重命名机制,并在最终节点列表中核对。
不要把“能保存”当成“已生效”。至少检查配置是否成功加载、提供器是否更新、节点是否显示、策略组是否出现,以及一条测试流量是否命中了预期规则。
合并后报错:备份、校验、加载和回滚顺序
排查时一次只改一层。推荐顺序是:备份原文件 → 单独验证订阅 → 验证Merge或提供器 → 加载主配置 → 查看日志和运行时结果 → 必要时回滚。
- YAML解析失败:检查Tab、缩进、引号、冒号和重复顶层键;把复杂的行内写法改成多行列表。
- 配置能打开但规则不生效:检查规则是否在
MATCH之前,目标策略组是否真实存在,规则字符串是否完整。 - 节点列表为空:先单独更新订阅或proxy-provider,再检查URL、缓存路径、提供器名称和客户端是否支持该字段。
- 策略组加载失败:检查
use中的提供器名称是否完全一致,proxies中的节点名是否真实存在。 - DNS、TUN或端口设置没有变化:确认该字段是否被客户端自身控制;Clash Verge Rev官方说明明确提示,部分由程序控制的配置项不能通过Merge覆盖。查看官方覆盖限制
- 无法判断哪一层出错:禁用Merge或移除第二个provider,恢复最近一次可用备份,再逐项恢复改动。
如果使用Clash Verge Rev,官方用户指南说明Merge修改后需要刷新,增强配置还会按启用顺序连续处理。对于mihomo,提供器和策略组字段应以当前配置文档为准;文档没有覆盖的客户端行为写“需核实”,不要按其他客户端经验推断。查看配置处理流程
Clash配置文件合并结论
最稳妥的做法不是把两份文件直接拼接,而是先明确配置来源和更新关系:订阅加本地设置用Clash Verge Rev的Merge,多订阅节点用mihomo的proxy-providers,两份完整YAML才进行备份后的手动整理。
完成后不要只看编辑器是否能保存,应继续检查YAML结构、规则顺序、节点与策略组引用、订阅更新结果和最终运行配置。不同客户端、内核和版本对字段的支持可能不同,本文示例只能作为结构参考,实际入口和语法请按当前版本核对。
常见问题
Clash配置文件怎么合并才不会被订阅更新覆盖?
不要直接修改订阅下载文件。需要长期保留的规则或设置,优先放进Clash Verge Rev的Merge配置;保存后重新启用并刷新,再查看最终运行配置。具体入口和可覆盖字段需按当前版本核对。
Clash订阅和本地配置可以直接拼接吗?
不建议。两份YAML可能出现重复顶层键,rules、proxies和proxy-groups还涉及列表顺序与名称引用。应先判断是订阅覆写、多订阅节点还是完整文件合并,再选择对应方式。
多个Clash订阅怎么合并节点?
在支持mihomo的配置中,为每个订阅建立独立的proxy-provider,再让同一个策略组通过use引用它们。提供器名称、缓存路径和策略组引用必须唯一且一致。
为什么Clash配置合并后规则不生效?
先检查规则是否位于MATCH之前,以及规则目标策略组是否真实存在。使用Clash Verge Rev时,自定义规则通常应放在prepend-rules中;官方说明将规则追加到原有MATCH之后可能导致规则无效。
DNS配置合并后为什么丢了原来的字段?
因为不能默认假设所有客户端都会对嵌套对象逐字段合并。覆盖dns前应保留原段落,写出需要保留的完整字段,再对照最终运行配置确认。
Clash Verge Rev、Clash for Windows和Android能通用这套配置吗?
不能直接保证通用。本文主要覆盖Clash Verge Rev Merge和mihomo proxy-providers;其他客户端的入口、内核和字段支持需按当前版本核对,无法确认的部分应标记为需核实。
相关阅读
参考资料
- Clash Verge Rev User Guide:配置类型与处理流程(clashvergerev.com)
- Clash Verge Rev Merge Configuration:Merge语法与覆盖限制(clashvergerev.com)
- mihomo:proxy-providers配置文档
- mihomo:proxy-groups配置文档
- Clash Verge Rev项目说明