mihomo 配置检查失败怎么办?按报错原文修复并安全回退
简答:mihomo 配置检查失败通常不是节点测速问题,而是 YAML 语法、字段兼容、名称引用、域名通配符或订阅响应异常。先备份当前可用 Profile,再用完整错误原文定位,修复后只替换候选配置。
定义:“mihomo 配置检查失败”是指内核在读取配置、合并订阅或初始化相关组件时未能完成解析与启动准备。
先做这一步:保住当前可用配置
如果客户端仍能使用,先不要重启内核、不要连续刷新订阅,也不要直接覆盖原来的配置文件。配置更新失败时,最容易丢失的是上一份还能工作的 Profile。
- 在客户端中记录当前配置名称、客户端版本、Mihomo 内核版本、系统版本和完整错误日志。
- 复制当前可用 Profile,文件名可使用
config-backup.yaml;订阅地址、节点密码、UUID、控制器 secret 和私人域名不要发到公开平台。 - 暂停自动更新或自动切换,单独保存本次下载的候选文件。
- 只对候选文件进行校验,确认通过后再导入或替换。
官方项目的配置文档将代理节点、代理组、规则和代理集合分别定义;因此,单独下载到的订阅内容不一定就是可以直接启动的完整配置。可先对照 mihomo Configuration 文档判断文件类型。
| 看到的现象 | 优先判断 | 下一步 |
|---|---|---|
yaml: unmarshal errors、mapping values | YAML 语法或缩进 | 检查 Tab、冒号、引号、重复键和列表层级 |
unsupported field、字段类型错误 | 字段不支持或版本兼容 | 对照当前内核文档,删除或改正该字段 |
proxy not found、group not found | 名称引用不存在 | 核对代理、代理组、Provider 或 Rule Provider 名称 |
invalid domain | 域名格式或通配符不符合要求 | 检查 fake-ip-filter、skip-domain 和相关规则 |
| 返回 401、403、HTML 或空文件 | 订阅下载层异常 | 先保存响应内容,不要把它当 YAML 强行导入 |
用命令行检查候选配置
命令行校验的目标是候选的完整 Mihomo 配置,而不是把节点分享链接或 Base64 文本改名成 YAML。Linux、macOS 和 Windows 都应先确认正在调用的二进制文件与配置路径。
Linux 或 macOS
mihomo -t -f /path/to/config.yaml如果配置依赖相对路径、代理集合、规则集合或缓存目录,应使用与实际启动相同的工作目录。例如:
mihomo -t -d /path/to/mihomo-data -f /path/to/mihomo-data/config.yaml-d 对应 Mihomo 的工作目录;代理集合的本地文件路径默认受该目录限制,官方 proxy-providers 配置文档也说明了路径和安全目录要求。若以专用 Linux 用户运行,确认该用户对配置、Provider 和 Rule Provider 文件具有读取权限。
Windows
mihomo.exe -t -d "C:\mihomo\data" -f "C:\mihomo\data\config.yaml"路径包含空格时必须使用引号。若客户端自行管理 Profile,不要直接修改其缓存文件;先从客户端的配置目录复制一份候选文件,再在独立目录校验。
校验通过只表示配置能够解析并完成初始化准备,不表示节点可用、DNS 正常、端口未占用或网页一定能打开。启动后还要查看内核日志中的策略命中,并对比出口 IP 或实际请求结果。
截至 2026-10-24,Releases 标记为 Latest 的是 v1.19.30;版本信息应以 mihomo Releases 页面为准。若问题只在升级后出现,可暂时用原来能工作的内核和配置进行对照,但不要把预发布构建当作稳定版本使用。
按错误原文分流修复
1. YAML 语法错误
重点检查缩进是否使用空格而不是 Tab,冒号后是否有空格,字符串中是否包含未转义的特殊字符,列表短横线是否与父级对齐,以及同一层是否出现重复键。不要一次修改多个区块;每次只改一处,然后重新运行校验。
proxy-groups:
- name: "自动选择"
type: select
proxies:
- DIRECT
- 节点A
rules:
- MATCH,自动选择上面的示例只用于说明层级关系,真实配置中的代理名称必须确实存在。YAML 可以解析,并不代表引用关系正确。
2. 字段不支持或类型不对
如果报错包含 unsupported field、布尔值类型错误或数组类型错误,先确认字段属于 Mihomo,而不是其他内核、仪表盘或客户端的扩展。以当前版本的 general 配置文档、proxies 配置文档和对应功能页为准。
常见误区包括把字符串写成数组、把单个端口写成带协议的地址、把策略组名称写到节点字段中,以及复制了旧模板中的已废弃字段。处理顺序应是:保留备份、定位字段所在行、查官方字段类型、删除无关扩展、再次校验。
3. 名称引用不存在
代理组的 proxies 引用代理节点或其他代理组,use 引用代理集合;规则的最后一列则必须指向实际存在的代理或策略组。官方 proxy-groups 文档明确说明了这些引用关系。
例如配置中写了 PROXY,但实际策略组叫“自动选择”,就会出现引用错误。修复时逐项核对名称、大小写、空格和引号,不要只改规则最后一列而忽略代理组本身是否声明。
4. invalid domain 与通配符错误
域名通配符不能随意放在字符串中。官方规则文档说明,DOMAIN-WILDCARD 支持 * 和 ?,但它与配置文件其他位置的通配符规则并不完全相同。
如果错误出现在 dns.fake-ip-filter、sniffer.skip-domain 或相近字段,优先检查类似 abc-*、host.*.example.com 的写法。官方项目的 Issue 升级后出现 invalid domain 的复现记录显示,某些不完整的通配符标签会触发该错误。按实际需求改成完整域名、合法后缀形式或符合字段规则的通配符后,再重新检查。
5. 订阅返回的不是完整 YAML
用浏览器或命令行查看候选文件的开头几行:如果是 HTML 登录页、JSON 错误信息、401/403 响应、空内容,或解码后是一批 vmess://、ss:// 等分享链接,就不能直接当成完整配置运行。
这类内容应交给客户端的订阅解析流程、proxy-providers 或订阅转换模板处理。官方 proxy-providers 文档说明,HTTP Provider 负责下载并解析代理集合;完整配置还需要在主配置中声明代理组、规则等引用。验证时应检查合并后的最终配置,而不是只检查远程原始响应。
不同客户端中的回退与复查
不同客户端的按钮名称会变化,但安全顺序相同:保留旧 Profile,停止自动更新,记录完整日志,单独校验新配置,确认通过后再应用。
- Clash Verge Rev:在 Profiles 或配置列表中找到当前使用的 Profile,先复制或导出旧文件,再对新文件做导入测试。若更新失败,重新选回旧 Profile,不要反复点击更新。
- Mihomo Party 或其他桌面客户端:优先查看内核日志和配置目录,区分“配置解析失败”和“内核启动后端口、DNS 或节点失败”。
- OpenClash:查看生成后的最终配置和内核日志,不能只看远程订阅下载是否成功;覆写、规则集合和代理集合都可能改变最终结果。
- 命令行环境:把配置、Provider、Rule Provider 和缓存放在同一工作目录或明确授权的路径中,并确认运行用户能够读取这些文件。
如果客户端已经把坏配置设为活动配置,先停止自动应用,再恢复备份文件。恢复后只修改一个变量,例如先删除最近新增的字段,重新校验并启动;不要同时更换内核、订阅转换模板、DNS 和 TUN 设置。
配置检查通过后仍然连不上怎么办
配置检查通过不等于网络连接通过。下一步应按层排查:
- 查看内核是否持续运行,日志中是否出现退出、端口占用或权限错误。
- 确认客户端监听端口。常见默认为 7897 或 7890,以设置页为准。
- 检查系统代理或 TUN 是否真正启用;Windows 的 TUN 服务模式、macOS 的隐私与安全性放行、Linux 的路由与专用用户权限都可能影响结果。
- 查看连接日志中是否命中预期策略组,再对比直连与代理时的出口 IP。
- 若只有域名失败,检查 DNS、
fake-ip、nameserver-policy和规则顺序;Mihomo 官方 DNS 配置文档列出了这些字段的作用。 - 若只有 TUN 失败,再检查系统权限、路由、DNS 劫持和 MTU,不要把 TUN 故障重新归因于 YAML 解析。
敏感信息保护清单
提交日志或寻求协助前,至少脱敏以下内容:
- 订阅 URL、访问令牌、用户名和密码;
- 节点服务器、端口、UUID、私钥和加密密钥;
- 控制器地址、API secret、Unix Socket 路径;
- 公司内网域名、办公网 IP、个人域名和本地文件路径。
可以保留错误类型、出错字段名、行号、客户端版本、内核版本和经过脱敏的最小配置片段。不要公开整份订阅文件,也不要把可直接访问的订阅地址粘贴到 Issue 或聊天窗口。
结论:先判断文件类型,再检查最终配置
遇到“mihomo 配置检查失败”,最快的路径不是重新下载节点,而是先确认候选内容到底是完整 YAML、代理集合、Base64 分享链接、HTML 错误页还是空响应;随后根据完整报错检查语法、字段、引用和域名格式。
保留旧 Profile、暂停自动更新、对合并后的最终配置执行校验,再恢复客户端运行,通常比直接覆盖配置更安全。
了解线路方案,以官网为准。
常见问题
mihomo 配置检查失败,是不是节点失效了?
不一定。配置检查发生在节点连接之前,常见原因是 YAML 语法、字段兼容、名称引用、域名格式或订阅返回异常。先看完整错误原文,不要先更换节点。
Base64 订阅能不能改名成 yaml 后用 mihomo -t 检查?
不能直接这样判断。Base64 解码后可能是 vmess://、ss:// 等分享链接,不是完整 Mihomo YAML,应交给客户端订阅解析、proxy-providers 或转换模板生成最终配置后再检查。
配置校验通过后为什么还是打不开网页?
校验通过只说明配置可以解析并完成初始化准备,不代表节点、DNS、系统代理、TUN、规则或出口网络正常。应查看连接日志中的策略命中,并对比出口 IP。
看到 invalid domain 应该先改哪里?
先看错误是否指向 dns.fake-ip-filter、sniffer.skip-domain 或规则中的域名字段,再检查通配符是否写成了不完整标签。不要一次修改 DNS、规则和节点,逐项改动后复测。
客户端更新订阅后配置坏了,怎样恢复?
停止继续刷新,保留旧 Profile,暂停自动更新,把新内容保存为候选文件并单独校验。校验失败就重新选回旧 Profile;确认最终配置通过后再应用新配置。