Mihomo 代理组怎么设置?从节点引入到规则生效
简答:Mihomo 代理组的核心是:先把节点或代理集合加入 proxy-groups,再让 rules 引用代理组名称。新手应先用 select 完成最小配置,确认节点可连接后再加入 url-test、fallback、筛选和嵌套组;如果使用 Mihomo Party,可按“导入订阅→启用配置→进入代理组→选择主组→开启系统代理或 TUN→查看连接和日志”的顺序操作。
定义:Mihomo 代理组是由节点、代理集合或其他代理组组成的策略集合,规则匹配请求后会把流量交给指定的代理组处理。
先完成最小可用配置:四步确认代理组能工作
本文是第三方使用指南,重点介绍 Mihomo 内核配置,Mihomo Party 图形界面操作作为辅助。不同客户端或版本的菜单名称可能略有变化;配置字段应以Mihomo proxy-groups 文档和当前客户端界面为准。
- 备份:复制当前 YAML 或配置文件,保存一份修改前副本。后续出现解析失败、代理组消失或流量异常时,先恢复这份副本。
- 建立手动组:优先使用
type: select,成员先放入一个明确存在的节点名、DIRECT或指定代理集合。 - 关联规则:在
rules中使用完全一致的代理组名称,例如MATCH,PROXY。 - 分层验证:分别确认配置能加载、代理组有成员、选中项发生变化、实际请求命中预期规则。页面显示节点不等于系统流量已经进入代理。
如果只是第一次设置,不要一开始就加入自动测速、地区正则、多个订阅和复杂规则。最小配置成功后,每次只增加一个变量,出现问题时更容易回滚和定位。
| 最小配置 | 完整分层配置 | 适用场景 |
|---|---|---|
select 加一个节点或一个 provider | select、url-test、fallback、筛选和规则 | 先验证配置链路,再扩展策略 |
| 只检查加载、成员和手动选择 | 还要检查订阅更新、健康检查、规则命中和流量接管 | 日常使用或多订阅场景 |
节点、订阅、代理组和规则有什么区别
| 对象 | 负责什么 | 常见位置 | 先检查什么 |
|---|---|---|---|
| 节点 | 单个实际出站连接 | proxies 或订阅内容 | 名称是否唯一,协议字段是否完整 |
| 代理集合 | 从 HTTP、文件或内嵌内容加载一批节点 | proxy-providers | 类型、地址、路径和更新结果 |
| 代理组 | 手动选择、自动测试、故障切换或负载分配 | proxy-groups | 组名、类型和成员来源 |
| 规则 | 决定请求交给哪个组或直连 | rules | 顺序和最后的兜底规则 |
当前 Mihomo 文档将 proxies 定义为引用出站节点或其他代理组,将 use 定义为引用代理集合。代理集合本身可使用 http、file 或 inline 类型;HTTP 类型需要配置 url,文件路径还受到工作目录和安全路径限制。具体字段可对照Mihomo proxy-providers 文档。
最小 YAML:先用 select 手动选择
下面是便于排错的最小示例。节点名称和订阅地址是占位内容,不能直接当作真实节点使用;请替换成你自己的配置,并保留缩进。
proxies:
- name: "节点A"
type: ss
server: example.com
port: 443
cipher: aes-128-gcm
password: "仅示意"
proxy-groups:
- name: "PROXY"
type: select
proxies:
- "节点A"
- DIRECT
rules:
- DOMAIN-SUFFIX,example.com,PROXY
- MATCH,PROXY
- 成功判据:配置可以加载;代理组
PROXY显示节点;选择节点后当前选中项发生变化。 - 失败分支:如果配置无法加载,先检查 YAML 缩进、冒号、引号和重复键;如果组为空,检查节点名称是否逐字一致;如果组有节点但无法连接,再单独检查节点、DNS 和本地网络。
- 回滚:恢复修改前的 YAML,重新加载后确认旧配置恢复,再逐段加入新内容。
规则引用的名称必须与代理组的 name 完全一致。组名改为“主代理”后,所有 rules 中的 PROXY 也要同步修改。
使用 proxy-providers、use 和筛选导入订阅节点
节点较少时可以直接写在 proxies 中;节点来自订阅时,通常先在 proxy-providers 中定义代理集合,再通过 use 放入代理组。示例中的 URL、测试地址和关键词仅作结构示意。
proxy-providers:
my-provider:
type: http
url: "https://example.com/subscription"
path: ./proxy-providers/my-provider.yaml
interval: 3600
health-check:
enable: true
url: "https://www.gstatic.com/generate_204"
interval: 300
timeout: 5000
proxy-groups:
- name: "PROXY"
type: select
use:
- my-provider
filter: "(?i)hk|hongkong"
exclude-filter: "测试|过期"
注意:https://www.gstatic.com/generate_204 只是 Mihomo 文档列出的健康检查地址之一。它是否能正常访问,会受到当前网络、DNS、路由和目标地址可达性的影响;测试成功只说明该测试请求得到预期结果,不代表所有目标网站、办公系统或应用都可用。也可以替换为自己能够稳定访问、并且适合当前网络环境的测试地址。
filter 和 exclude-filter 会影响被纳入的节点。代理组突然为空时,先暂时删除筛选条件做对照;如果删除后出现节点,再检查关键词、正则表达式和订阅返回的实际节点名称。当前 Mihomo 文档说明,include-all-proxies 会纳入所有出站代理,include-all-providers 会纳入所有代理集合,并且启用后会使 use 的引入方式失效;不要把这几个字段同时当成同一功能使用。
健康检查也要分清层级:按当前 Mihomo proxy-groups 文档,代理组的 url 检查只作用于该组的 proxies 字段,不检查通过 use 引入的代理集合节点;代理集合可以在自身的 health-check 中配置,也可以通过 API 对指定代理集合或其中节点触发检查。这个区别意味着“代理组页面有成员”和“订阅节点已有健康检查结果”不能混为一项。
select、url-test、fallback 和 load-balance 怎么选
| 类型 | 主要行为 | 适合场景 | 建议顺序 |
|---|---|---|---|
select | 手动选择节点或下级组 | 首次配置、对照测试、需要固定节点 | 第一步使用 |
url-test | 根据测试结果在成员中选择 | 希望按测试结果自动选取 | 手动组确认正常后加入 |
fallback | 成员不可用时按顺序切换 | 更关注连续性而非最低延迟 | 确认健康检查逻辑后加入 |
load-balance | 按策略在多个成员间分配连接 | 有明确分流或并发需求 | 不作为第一份配置 |
url-test 的测试延迟不是网页实际加载速度,也不等于跨境办公、视频或下载表现。测试地址、DNS、协议、目标站点和本地网络都会影响结果。因此建议先用 select 验证“节点能否连接”,再用 url-test 验证“自动选择逻辑是否运行”。
完整分层写法:主组、自动组和规则引用
确认订阅节点能够加载后,可以把自动组作为主组的成员,再让规则只引用主组。这样切换策略时不必频繁改规则。
proxy-groups:
- name: "自动测速"
type: url-test
use:
- my-provider
url: "https://www.gstatic.com/generate_204"
interval: 300
tolerance: 50
- name: "主代理"
type: select
proxies:
- "自动测速"
- DIRECT
use:
- my-provider
rules:
- DOMAIN-SUFFIX,example.com,主代理
- GEOIP,CN,DIRECT
- MATCH,主代理
这里的逻辑是“订阅节点→自动测速组→主选择组→规则”。如果想增加地区组,可以让地区组先用 filter 筛选订阅节点,再把地区组放进主组。每增加一层,都要检查组名是否唯一、引用是否一致、组内是否实际出现成员。
规则通常按从上到下的顺序匹配。前面已经命中的请求不会继续执行后面的规则;MATCH 可作为未匹配请求的兜底。若最后写成 MATCH,DIRECT,即使主代理组配置正确,未命中的请求也会走直连。规则语法可对照Mihomo Route Rules 文档。
Mihomo Party 图形界面怎么导入、选择和验证
Mihomo Party 的代码仓库说明其定位是 Mihomo 图形界面,并支持 Mihomo 常用配置、订阅管理、系统代理和 TUN 等功能;具体菜单名称可能因版本、语言和界面模式不同而变化,可先以当前界面显示为准。操作时按下面顺序,不要把“订阅已导入”和“系统流量已接管”当成同一件事。
- 导入订阅:打开配置文件或订阅管理页面,新增远程订阅地址,保存后执行更新。确认订阅条目出现,并等待节点或代理集合完成加载。
- 启用配置:在配置文件列表中选中需要使用的配置,使它成为当前运行配置。若界面提示解析失败,先不要进入代理组,回到配置内容和错误提示。
- 进入代理组:打开代理或代理组页面,找到规则实际引用的主组,例如
主代理,再展开下级的自动组、地区组或具体节点。 - 选择策略:第一次先手动选择一个明确节点或
DIRECT做对照。若选择后当前状态没有变化,检查是否点到了孤立组,而不是规则真正引用的主组。 - 选择运行模式:排查规则时优先使用
rule模式;Mihomo 文档将global定义为全局代理、direct定义为全局直连。全局代理和规则分流的结果不同,不能混用判断。 - 开启流量接管:只需要让支持系统代理的应用走代理时,可先开启系统代理;需要更多系统流量或应用不遵循系统代理时,再根据系统权限和客户端提示启用 TUN。系统代理与 TUN 是两种不同的接管方式。
- 查看连接和日志:发起一个明确的测试请求,观察连接页面或日志中的目标、命中规则、代理链和错误信息。Mihomo API 也提供代理组、节点延迟、规则和连接信息,用于进一步核对运行状态。
TUN 配置涉及系统路由、DNS 劫持、权限、防火墙和协议栈。Mihomo 文档建议普通用户优先使用顶层 TUN 配置,并说明 auto-route、dns-mode、strict-route 等字段会影响流量路径。若只是验证代理组逻辑,不要同时修改 DNS、MTU、TUN 协议栈和规则,否则失败时很难判断是哪一层造成的。
代理组为空、切换不生效和自动测速失败怎么排查
| 现象 | 先检查 | 成功判据 | 回滚或下一步 |
|---|---|---|---|
| 配置加载失败 | YAML 缩进、冒号、引号、重复键 | 配置状态恢复正常 | 恢复备份,再逐段加入 |
| 代理组为空 | use 名称、订阅状态、筛选条件 | 至少出现一个成员 | 删除筛选做对照 |
| 组有节点但无法连接 | 节点、DNS、协议、本地网络 | 单个测试请求建立连接 | 用 DIRECT 或其他节点对照 |
| 切换节点后网页无变化 | 运行模式、规则顺序、实际命中组 | 连接日志显示预期规则和代理链 | 恢复主组名称和规则引用 |
| 自动测速没有结果 | 测试地址、超时、间隔和成员来源 | 测速页面出现结果或历史记录 | 先退回 select 手动验证 |
| 开启 TUN 后异常 | 权限、防火墙、路由和 DNS 设置 | 关闭系统代理或 TUN 后能恢复对照 | 先关闭 TUN,恢复原配置再逐项启用 |
建议保存三类记录:一是配置加载错误截图或文本;二是代理组成员和当前选中项;三是连接日志中的目标地址、命中规则和代理链。不要只记录“网页打不开”,因为页面不可访问可能来自配置、节点、DNS、规则、系统代理或 TUN 中的任一层。
发布前自查:什么时候算设置完成
- 配置文件可以加载,没有解析错误。
- 代理集合能够更新,代理组至少显示一个有效成员。
select手动切换后,当前选中项确实变化。- 规则最后一列使用真实存在的代理组名称。
- 在
rule、global、direct三种模式下,能区分各自的预期行为。 - 系统代理或 TUN 只启用一种接管方式进行对照,日志和连接页面能看到实际请求。
- 修改前有备份,出现异常时可以恢复原配置。
完成最小配置后,再逐步加入自动测速、地区筛选、多个代理集合和复杂规则。任何一步出现异常,都先回滚到上一个成功状态,再检查新增字段,而不是一次更换所有节点或同时修改 DNS、TUN 和规则。
常见问题
Mihomo 代理组一定要写 proxies 吗?
不一定。<code>proxies</code> 用于引用节点或其他代理组,<code>use</code> 用于引用指定代理集合,也可以使用 <code>include-all-proxies</code> 或 <code>include-all-providers</code> 纳入成员。首次配置建议只选一种成员来源,避免组为空时难以判断问题来自节点、订阅还是筛选。
为什么写了 use,代理组还是空的?
先检查 <code>use</code> 中的名称是否与 <code>proxy-providers</code> 下的键完全一致,再检查代理集合是否更新成功、返回内容是否能被 Mihomo 解析。随后暂时删除 <code>filter</code> 和 <code>exclude-filter</code> 做对照。如果删除筛选后出现节点,问题通常在关键词、正则表达式或订阅节点名称。
代理组的健康检查会自动检查 use 引入的节点吗?
按当前 Mihomo proxy-groups 文档,代理组的 <code>url</code> 检查只检查该组的 <code>proxies</code> 字段,不检查通过 <code>use</code> 引入的代理集合节点。代理集合可以在自身的 <code>health-check</code> 中配置,也可以通过 API 单独触发代理集合或节点检查。不同前端的展示方式可能不同,应同时查看代理集合状态和代理组状态。
select 和 url-test 哪个更适合新手?
通常先用 <code>select</code>。它只负责手动选择,便于确认节点本身能否连接,也能把节点问题和自动测速问题分开。手动组正常后,再加入 <code>url-test</code>,单独检查测试地址、超时、间隔和成员来源。
Mihomo Party 里选中了节点,为什么网页还是直连?
先确认当前模式不是 <code>direct</code>,再检查规则是否真的引用了当前代理组,以及前面是否有更高优先级规则已经命中。随后查看连接或日志页面,确认实际请求的命中规则和代理链;代理组页面显示选中,不代表系统代理或 TUN 已经接管所有应用。
修改代理组后配置加载失败,如何恢复?
停用或切换回修改前的配置,恢复备份 YAML 并重新加载。确认恢复后,再一次只加入一个字段或一个代理组。建议先验证 <code>select</code>,再加入订阅、筛选、自动测速和规则,避免多个改动同时发生。