Mihomo 配置文件更新后节点不见了怎么办?
简答:先不要删除旧配置或修改 DNS、TUN。先备份当前 Profile,确认更新后实际启用的配置,再检查订阅响应、proxies、proxy-providers、过滤条件和代理组引用;节点仍在但列表不显示时,问题可能只是过滤或代理组未引用。
定义:Mihomo 配置更新后节点消失,是指更新动作完成后,当前运行配置中的节点数量变为 0、部分节点被隐藏,或节点仍存在但没有出现在代理组和客户端列表中。
先用三分钟判断:节点是消失、隐藏,还是没有被引用?
更新后不要先重装客户端,也不要立即开启 TUN、修改 DNS 或清空缓存。先保住仍可能可用的旧配置,再根据节点数量和显示位置判断故障层级。
| 现象 | 优先检查 | 判断标准 | 下一步 |
|---|---|---|---|
| 所有节点都不见了 | 当前 Profile、订阅响应、配置解析 | proxies 和 proxy-providers 都为空或未加载 | 恢复旧 Profile,重新核验订阅内容 |
| 只有部分节点消失 | 过滤、排除、重命名、Provider 更新结果 | Provider 有节点,但名称或类型被筛掉 | 暂时关闭 filter、exclude-filter 和 exclude-type |
| 节点仍在,但代理组为空 | proxy-groups 的 proxies、use 和引用关系 | 节点在 Provider 中,代理组成员列表没有它们 | 检查代理组是否引用了正确的 Provider |
| 节点在,但手动选择被重置 | 节点名称、策略组或当前 Profile | 更新后旧节点名不存在,或运行的是另一份配置 | 重新选择现有节点,并保存到独立覆写层 |
在 Mihomo 中,直接写入配置的节点通常位于 proxies;远程或本地节点集合则可能位于 proxy-providers。代理组可以通过 proxies 引用节点,也可以通过 use 引用 Provider,因此“Provider 有节点但代理组为空”是另一类问题,不能只看首页节点列表。Mihomo 节点配置文档、Mihomo Proxy Providers 文档、Mihomo 代理组文档
第一步:备份旧配置,并确认当前运行的是哪一份
- 保留旧 Profile。在客户端中找到当前使用的配置或 Profile,先复制一份并改名,例如增加“更新前”标记。不要直接覆盖唯一配置。
- 确认当前启用项。更新成功不代表客户端已经切换到新文件。检查当前带有运行标记、启用标记或正在使用状态的 Profile,避免你查看的是 A 文件、客户端运行的却是 B 文件。
- 记录节点数量。分别记录客户端列表、配置文本中的
proxies、Provider 列表中的节点数量。只记录数量和字段名,不要把订阅链接、访问令牌或完整节点内容发到公开论坛。 - 如果使用图形客户端。不同客户端的菜单名称可能不同,但通常需要同时区分“配置/Profile”和“Provider”。以 Clash Verge Rev 的公开文档为例,远程订阅和本地配置属于不同导入方式,本地配置导入时文件会被复制到其 Profile 目录;具体界面以当前客户端版本为准。Clash Verge Rev Profile 文档
成功判据:你能找到更新前的备份,并能明确说出“当前运行的 Profile 名称”和“节点来自配置本体还是 Provider”。如果这两点还不清楚,不要继续改 DNS、MTU 或 TUN。
第二步:检查订阅响应,而不是只看“更新成功”提示
如果节点全部消失,先检查订阅地址返回的内容是否仍是可解析的配置。更新失败不一定表现为明显弹窗,也可能是地址被重定向到登录页、错误页,或返回了空内容。
- 重新复制订阅地址,避免只复制了截断内容、带空格的文本或错误的转换地址。
- 在浏览器或命令行中请求订阅时,不要公开完整 URL;若 URL 含有令牌,应先脱敏。
- 检查响应开头是否像 YAML 配置、节点 URI 或 Provider 内容,而不是 HTML、登录页面、验证码页面或普通错误文本。
- 如果返回 HTTP 错误状态、超时或内容为空,先恢复旧 Profile,再向订阅提供方核实链接状态;不要把反复点击更新当作修复。
如果返回的是 YAML,至少应进一步确认是否存在 proxies: 或 proxy-providers:。Provider 的 HTTP 类型需要配置 URL,Provider 还可能有本地缓存路径;官方文档说明,Provider 的 path 用于保存文件,未指定时会按 URL 计算文件名。Proxy Providers 字段说明
成功判据:订阅响应不是 HTML 或登录页,内容可以被当前 Mihomo 内核解析,并且配置或 Provider 中能看到至少一个节点条目。若只能看到错误页面,先处理订阅地址问题,不要改代理端口。
第三步:按配置结构定位节点到底去了哪里
把更新后的配置复制一份,在本地编辑器中搜索下面几个字段。不要在公开网站粘贴包含服务器地址、密码、UUID、令牌或完整订阅链接的配置。
- 搜索
proxies::它表示直接写在当前配置中的节点数组。Mihomo 官方文档要求节点以数组形式书写,每个节点至少需要可识别的名称和类型,具体字段取决于协议。 - 搜索
proxy-providers::它表示节点集合的来源。检查 Provider 名称、类型、URL、缓存路径以及更新后的错误信息。 - 搜索
proxy-groups::代理组的proxies用于引用节点或其他代理组,use用于引用 Provider。如果节点存在于 Provider,但代理组没有正确使用该 Provider,首页可能看起来像“没有节点”。 - 搜索
filter、exclude-filter、exclude-type:这些条件可能让节点被筛选或排除。官方文档说明,代理组过滤主要作用于被纳入的 Provider 或全部节点;过滤表达式过严时,结果可能为空。 - 搜索节点名称:如果节点名称在更新后发生变化,旧的
default-selected或代理组引用可能失效。官方文档说明,如果默认选择的节点名称不存在,代理组会改为选择组内第一个节点。
可以用下面的最小判断表:
| 配置检查结果 | 含义 | 处理 |
|---|---|---|
没有 proxies,也没有 proxy-providers | 订阅内容不完整、格式不匹配或载入了错误文件 | 恢复旧配置并重新核验订阅响应 |
有 proxies,数量大于 0,但界面为空 | 当前 Profile、客户端载入或显示层可能不一致 | 重新载入当前 Profile,确认运行标记 |
| Provider 存在但节点数量为 0 | Provider URL、缓存或内容解析可能异常 | 查看 Provider 更新日志,必要时保留旧缓存 |
| Provider 有节点,代理组为空 | 代理组未引用 Provider,或过滤条件排除了节点 | 临时去掉过滤并检查 use、include-all-providers |
如果客户端提供 Mihomo API,可读取运行中的 /proxies 查看代理和代理组,也可读取 /providers/proxies 查看 Provider 及其节点列表;官方 API 文档列出了这些响应字段和接口用途。是否能访问 API 取决于客户端是否开放外部控制器以及当前权限设置。Mihomo API 文档
第四步:关闭隐藏条件,重新载入,再逐项恢复
- 复制一份待测试配置。不要直接修改唯一的远程订阅源。
- 暂时关闭过滤。在测试副本中移除或注释代理组、Provider 中的
filter、exclude-filter、exclude-type,同时检查客户端是否有节点关键字过滤、地区过滤或去重选项。 - 确认 Provider 被代理组使用。如果代理组通过
use引用 Provider,Provider 名称必须与定义处一致;如果使用自动包含选项,检查它是否被其他设置覆盖。 - 重新载入配置。先使用客户端提供的“重新载入配置”或“更新 Profile”操作。若客户端同时有“更新订阅”和“切换 Profile”,先更新,再确认当前 Profile 仍是目标文件。
- 观察日志。重点看 HTTP 状态、超时、YAML 解析错误、Provider 更新失败、未知字段和配置加载路径。不要只看“按钮操作成功”。
- 节点恢复后逐项加回设置。一次只恢复一个过滤条件或覆写项,重新载入并记录节点数量。这样能定位是哪一条规则把节点隐藏。
回滚方法:只要测试副本无法解析、节点数量再次变为 0,立即切回更新前 Profile,确认旧配置能正常加载后再继续分析。不要把“清空缓存、删除配置目录、重装客户端”作为第一选择,因为这些操作可能让证据和旧配置一起丢失。
第五步:避免更新后再次覆盖手动修改
订阅更新后节点列表变化,可能不是客户端删除了节点,而是远程内容替换了原来的节点集合。若你把手动改名、节点筛选或代理组内容直接写进远程订阅文件,下一次更新可能再次覆盖这些改动。
- 将长期自定义内容放在客户端支持的覆写、合并配置或独立 Provider 中,具体名称以当前客户端为准。
- 不要把账号密码、UUID、订阅令牌等敏感信息写入公开分享的配置。
- 如果使用 Provider 的节点重命名功能,记录原始名称和改名规则,避免代理组仍引用旧名称。
- 改动后先验证节点数量,再验证代理组成员,最后才测试代理端口、系统代理、TUN 和 DNS。
Mihomo 的 Provider 文档提供了节点加载时的覆写能力,例如增加前缀、后缀或替换节点名称;这类设置与直接改写远程订阅内容不同,但表达式和字段仍需以当前内核文档及客户端支持情况为准。Mihomo Provider 覆写字段
恢复后仍无法使用:把“节点消失”和“连接失败”分开
节点重新出现后,如果网页仍打不开,不要重新回到订阅排查。此时需要区分节点列表、代理组选择、代理端口、系统代理、TUN、DNS 和目标站点连通性。
- 节点列表有、代理组有:先手动选择一个现有节点,确认选择状态发生变化。
- 选择成功但本机应用不通:检查客户端监听的 HTTP、SOCKS 或 Mixed 端口,以及系统代理是否填写了相同端口;不要直接套用其他教程的固定端口。
- 普通代理能用、TUN 不通:先关闭 TUN 做最小验证,再根据日志检查路由、权限和 DNS 劫持;TUN 不是恢复节点列表的必要步骤。
- 只有部分域名失败:再单独排查 DNS、规则和目标站点,不要把 DNS 问题反推为订阅节点消失。
每次只改变一个变量,并记录原设置,验证失败后恢复。节点数量恢复、代理组出现、单节点连接成功和实际网页访问,是四个不同的成功判据。
推荐入口
如果你需要把跨境办公中的订阅导入、节点可见性和连接排查分开记录,可在完成旧配置备份后,再根据实际网络环境选择合适的服务方案。
常见问题
Mihomo 更新配置后节点全部消失,应该先改 DNS 吗?
不建议。节点列表为空首先应检查当前 Profile、订阅响应、YAML 或 Provider 内容,以及配置是否真正载入。DNS、TUN 和 MTU 属于后续连接层排查,通常不能恢复一个已经没有节点的配置。
配置里有 proxy-providers,但首页还是没有节点,是什么原因?
可能是 Provider 尚未成功更新、缓存内容为空、代理组没有通过 use 引用该 Provider,或 filter、exclude-filter、exclude-type 把节点全部筛掉。先查看 Provider 节点数量,再检查代理组引用和过滤条件。
为什么更新后节点还在,但之前选中的节点没了?
订阅更新可能改变节点名称、删除旧节点,或客户端切换到了另一份 Profile。检查当前运行配置和节点名称;如果 default-selected 指向不存在的名称,Mihomo 文档说明代理组会选择组内第一个节点。
直接编辑订阅配置后,下一次更新又恢复原样怎么办?
不要把长期自定义内容直接写入远程订阅文件。将改名、筛选或代理组调整放到客户端支持的覆写、合并配置或独立 Provider 中,并保留更新前备份。具体菜单和字段可能随客户端版本变化。
如何判断是节点消失还是代理组没有引用节点?
分别查看 proxies、proxy-providers 和 proxy-groups:节点在 proxies 或 Provider 中但代理组为空,通常是引用或过滤问题;三处都没有节点,则优先检查订阅内容、Profile 和配置解析。