月神云 - 全终端加速服务

Mihomo 配置文件怎么合并?

更新于 2026-11-02 · moontoday.store

简答:Mihomo 配置文件不要把两个完整 YAML 直接首尾拼接。多数多订阅场景应使用 proxy-providers 分别加载订阅,再在 proxy-groups 中通过 use 引用;已有订阅想加入 DNS、规则或策略组时,应以一份主配置为基底做最小修改,并在启动前用 mihomo -t 或客户端的最终配置检查验证。

定义:Mihomo 配置合并,是把多个代理来源或本地自定义字段组织到一份可被 Mihomo 解析的最终配置中,而不是简单复制粘贴两个完整 YAML 文件。

先试这一步:判断你到底要合并什么

本文是面向 Mihomo 配置文件的使用指南,不是任何客户端或服务商的官方页面。先不要打开两个 YAML 文件直接复制。Mihomo 官方配置文档将代理提供者、代理组和规则作为不同配置区块;其中规则按从上到下的顺序匹配,最终配置必须保持字段结构和引用关系一致。查看 Mihomo 官方配置总览

三种常见需求应该怎么选
你的需求推荐方法不要这样做
把多个订阅放在一个客户端里使用为每个订阅建立一个 proxy-provider,再在 proxy-groups 使用 use把两个完整 config.yaml 首尾拼接
已有一份订阅,想加入 DNS、规则或本地策略组保留订阅作为基础,在主配置或客户端覆写层做最小修改直接改远程订阅文件,等待更新后仍假设修改会保留
在 Clash Verge Rev 中保留订阅更新并追加字段使用该客户端的 Merge/扩展配置入口,并检查生成后的最终配置只检查编辑器里的覆写文件,不检查最终运行配置

最短决策规则是:合并来源用 proxy-providers,合并本地改动用主配置或覆写,合并后一定检查最终配置。

方法一:用 proxy-providers 合并多个订阅

这是多订阅场景的优先方案。Mihomo 官方文档显示,proxy-providers 支持 http、file 和 inline 类型;http 类型需要 URL,path 可用于保存本地缓存,health-check 可用于节点健康检查,override.additional-prefix 可以为节点名称添加固定前缀。查看 Mihomo 官方 proxy-providers 文档

下面的 URL 是无效占位符,只用于展示结构,请替换为你在本机确认过的订阅地址,不要把真实订阅链接发布到公开页面、群聊或在线解析器。

mixed-port: 7890 mode: rule proxy-providers: office: type: http url: "https://example.invalid/subscription-office" path: ./providers/office.yaml interval: 86400 health-check: enable: true url: "https://www.gstatic.com/generate_204" interval: 300 override: additional-prefix: "[office] " backup: type: http url: "https://example.invalid/subscription-backup" path: ./providers/backup.yaml interval: 86400 health-check: enable: true url: "https://www.gstatic.com/generate_204" interval: 300 override: additional-prefix: "[backup] " proxy-groups: - name: Proxy type: select use: - office - backup proxies: - DIRECT rules: - MATCH,Proxy

这里的关键不是“把节点写入 proxies”,而是让两个 provider 分别提供代理集合,再由 Proxy 策略组引用它们。官方文档还支持 filter、exclude-filter 和 exclude-type,可在 provider 层先筛选节点;如果只想保留特定地区或排除某类协议,应优先在 provider 中筛选,而不是手工复制节点。

节点名前缀会改变节点的显示名称。例如原节点名为“东京-01”,加载后可能显示为“[office] 东京-01”。如果其他策略组、脚本或外部配置依赖旧名称,重命名后要同步检查引用。

方法二:已有 config.yaml 加入本地设置

如果你只有一份主配置,想加入 DNS、一个策略组或少量规则,不需要复制第二份完整配置。建议先备份原文件,再只增加一个顶层字段,保存后校验。Mihomo 使用 YAML 配置格式,缩进错误、字段放错层级或策略组引用不存在的名称,都可能导致启动失败或运行结果与预期不符。查看 Mihomo 官方 YAML 语法说明

例如,在已有 proxy-providers 的前提下,可以只增加一个策略组。以下示例假设 provider 名称已经存在,不能直接复制到没有 office provider 的空文件中。

proxy-groups: - name: Office type: select use: - office proxies: - DIRECT rules: - DOMAIN-SUFFIX,example.com,Office - MATCH,DIRECT

规则顺序需要单独检查。官方文档明确说明规则从上到下匹配,顶部规则优先;因此把新的规则写在 MATCH 后面,通常不会达到预期。修改后应确认最后仍有 MATCH 兜底,并检查新规则引用的策略组名称与实际名称完全一致。查看 Mihomo 官方规则顺序说明

方法三:在 Clash Verge Rev 中使用覆写文件

如果你使用的是 Clash Verge Rev,本文只说明与 Mihomo 配置合并有关的最小操作:先备份当前配置,在当前配置的操作菜单中识别包含“Merge”“扩展配置”或类似含义的入口,打开对应 YAML 文件,加入少量字段,然后重新生成并检查最终配置。菜单名称会随客户端版本和语言变化,不能把某个开发分支界面当成所有版本的固定路径。

Clash Verge Rev 当前仓库代码包含独立的 Merge 编辑入口,并在配置处理链中调用 merge 逻辑;其项目说明也将 Merge 和 Script 列为增强配置能力。这里的示例只表示“覆写层中加入字段”的写法,具体数组、映射和标量如何合并,仍需以当前客户端实现和生成结果核实。查看 Clash Verge Rev 的 Merge 编辑入口代码 查看其配置处理代码

下面是一个明确标注为 Clash Verge Rev Merge 的最小示例,使用无效的占位策略组名称仅展示结构:

# Clash Verge Rev Merge 示例 mixed-port: 7890 proxy-groups: - name: Local-Select type: select proxies: - DIRECT rules: - DOMAIN-SUFFIX,example.invalid,Local-Select

不要据此推断“所有数组都会自动追加”或“所有同名映射都会按预期覆盖”。数组字段如 rules、proxy-groups 可能出现追加、替换或客户端特定处理;映射字段如 dns、tun、profile 也可能被同名键覆盖;标量字段如 mixed-port 通常只应保留一个最终值。保存后要以客户端生成的最终配置或日志为准,而不是只看 Merge 文件本身。

为什么不能直接拼接两个完整 YAML

假设文件甲和文件乙都包含 mixed-port、proxy-providers、proxy-groups、rules,直接复制成一个文件后,常见结果有三类:第一,重复顶层键可能被解析器拒绝或发生覆盖;第二,两组 proxy-groups 中的同名策略组会产生不确定的最终结果;第三,rules 中的 MATCH 过早出现,后续规则即使写入也可能无法命中。

错误示例:

proxy-groups: - name: Proxy type: select proxies: [DIRECT] rules: - MATCH,DIRECT proxy-groups: - name: Proxy type: select proxies: [REJECT]

这个例子不是可靠的“合并配置”,因为同一顶层键被重复写入,且两个 Proxy 策略组同名。正确做法是选择一份主配置,逐项迁移需要保留的内容;多订阅则改用 provider,并给 provider 和节点加唯一名称。

合并后的验证、异常分流与回滚

  1. 先检查订阅返回格式。确认 provider 返回的是 Mihomo 能解析的代理集合,而不是登录页面、错误 JSON 或 HTML。订阅地址含有凭据时只在本机测试。
  2. 再检查 YAML 结构。重点看缩进、冒号、列表短横线、引号和重复顶层键。不要一次修改 DNS、规则、策略组和端口,避免无法判断是哪一项导致失败。
  3. 执行配置校验。在 Mihomo 可执行文件所在环境运行 mihomo -t -f ./config.yaml;如果当前版本的帮助信息对参数形式有差异,先运行 mihomo -h,以本机输出为准。MetaCubeXD 官方仓库的配置管理说明也将 mihomo -t 作为激活前的最终校验步骤。查看 MetaCubeXD 官方仓库中的配置校验说明
  4. 检查最终引用。确认每个 proxy-group 的 use 或 proxies 指向存在的 provider、节点或策略组,确认 rules 中的目标名称存在,并确认 MATCH 位于规则末尾或符合你的设计。
  5. 复测运行状态。重新加载配置后,观察日志是否出现 provider 下载失败、策略组为空、规则目标不存在、端口占用或 DNS 初始化错误。配置通过校验不等于网络一定正常,它只说明结构和字段基本可被当前内核接受。
  6. 失败立即回滚。关闭客户端或停止 Mihomo,恢复备份文件,确认旧配置能启动,再逐项重新加入改动。
常见现象与下一步
现象优先检查处理方式
配置直接启动失败YAML 缩进、重复键、字段层级回到备份,逐项加入修改并重新校验
策略组为空provider 名称、use 写法、订阅返回格式先单独确认 provider 是否成功加载,再检查名称
节点数量变少或同名filter、exclude-filter、additional-prefix暂时移除筛选规则,并给不同来源添加不同前缀
新增规则不生效规则顺序和 MATCH 位置把特定规则放到 MATCH 前,确认目标策略组存在
更新订阅后本地改动消失是否直接编辑了远程文件或错误的覆写层恢复主配置与覆写文件的分工,检查最终生成配置

一份可执行的最小检查清单

  • 已备份当前可用的 config.yaml。
  • 每个 provider 名称唯一,path 不重复,真实订阅地址未公开。
  • 多个来源的节点已使用不同前缀或后缀,策略组引用已同步更新。
  • proxy-groups 的 use、proxies 没有引用不存在的名称。
  • rules 从上到下检查,特定规则位于 MATCH 前。
  • 端口、DNS、TUN 等字段只保留一个明确的最终值。
  • 已用当前 Mihomo 二进制的 mihomo -h 和 mihomo -t 核对参数。
  • 客户端能启动、provider 能更新、策略组能显示节点,并完成一次实际连接复测。

截至 2026-11-02,本文依据 Mihomo 官方文档、相关官方仓库页面和 Clash Verge Rev 当前仓库代码页面整理。客户端菜单、内核版本和具体合并实现可能变化,遇到结果与示例不同,应优先查看当前界面、日志和最终生成配置。

常见问题

Mihomo 可以直接把两个 config.yaml 合并吗?

不建议直接首尾拼接。两个文件可能重复包含 proxy-groups、rules、端口和 DNS 等顶层字段,导致解析失败、字段覆盖或规则顺序异常。应选择一份主配置,再逐项迁移;多个订阅优先使用 proxy-providers。

多个 Mihomo 订阅怎么放进同一个策略组?

为每个订阅建立独立的 proxy-provider,在目标 proxy-group 中写 use,并给不同 provider 添加 additional-prefix。然后检查 provider 是否成功更新、策略组是否显示节点,以及重命名后的节点是否仍被其他配置引用。

为什么 provider 已加载,但策略组里没有节点?

先检查 provider 名称是否与 proxy-groups.use 完全一致,再确认订阅返回的是可解析的 Mihomo 代理集合;随后检查 filter、exclude-filter、exclude-type 是否把节点全部筛掉。最后查看日志和最终配置。

Clash Verge Rev 的 Merge 文件能不能写完整配置?

不建议把完整配置再次复制进去。Merge 更适合放少量需要追加或覆盖的字段,但数组、映射和标量的具体合并行为要按当前客户端实现核实。保存后必须检查最终生成配置,并保留可回滚的原文件。

修改后 Mihomo 启动失败,怎么恢复?

先停止客户端或内核,恢复备份的可用配置,确认旧配置能够启动;再只加入一个改动,并使用当前 Mihomo 二进制支持的校验命令检查。不要在启动失败的文件上继续叠加多个变量。

相关阅读

参考资料

  1. Mihomo 官方配置总览
  2. Mihomo 官方 proxy-providers 配置文档
  3. Mihomo 官方路由规则文档
  4. Mihomo 官方 YAML 语法说明
  5. Clash Verge Rev 官方仓库:Merge 编辑入口
  6. Clash Verge Rev 官方仓库:配置处理代码
  7. MetaCubeXD 官方仓库:配置激活与 mihomo -t 校验说明