TL;DR:Mihomo core 版本不匹配时,不要只看客户端有没有最新版。先记下 UI 版本、core 版本、配置更新时间和日志里的第一个报错字段。第一个字段通常就是线索,后面的错误很多是连带反应。

Mihomo 生态里有一个容易忽略的事实:客户端 UI 和 core 经常不是同一个版本节奏。Clash Verge Rev、FlClash、Linux service、OpenWrt 插件、手机端客户端,都可能把 Mihomo core 打包在不同位置。UI 更新成功,不代表 core 已经支持你的配置。

最典型的表现是:界面能打开,订阅也能拉取,但配置一应用就失败。

常见症状

症状更像哪类问题先看哪里
unknown field配置字段比 core 新报错字段与官方配置文档
unsupported rule type规则写法不被当前 core 支持rules / rule-providers
TUN 打不开core、权限或系统接口问题core 版本和 TUN 日志
DNS 行为异常DNS 字段语义变化或写法错误dns 段完整日志
UI 显示成功但没有连接UI 缓存和 core 状态不同步core 日志,不看按钮状态

先抓第一个错误。日志滚得很快时,后面的 DNS、route、provider 报错可能只是因为前面解析失败。

先确认到底跑的是哪个 core

很多客户端会在设置页显示 core 版本,也可以在日志开头看到类似信息。命令行环境可以直接查:

mihomo -v

如果你用的是客户端内置 core,不要假设系统 PATH 里的 mihomo 就是客户端正在使用的那个。客户端可能放在自己的应用目录、数据目录或插件目录里。

建议记录四个值:

  • 客户端名称和 UI 版本。
  • Mihomo core 版本号或 commit 信息。
  • 配置文件更新时间。
  • 失败时日志里的第一条解析错误。

这四个值能避免反复问「我明明升级了为什么还不行」。

哪些字段最容易撞版本

Mihomo 配置变化集中在 DNS、TUN、rule-provider、sniffer、geodata、profile 这些区域。下面是排查时最常见的几类:

配置区域典型问题处理建议
dns新字段旧 core 不认识按当前 core 文档重写 DNS 段
tun字段存在但系统不支持先关 TUN 验证普通代理
rule-providersprovider 类型或行为变化用最小 provider 测试
rules新规则类型旧 core 不支持临时改成 DOMAIN / DOMAIN-SUFFIX / MATCH
geox-url / geodata下载失败或格式不匹配清缓存后重新拉取官方数据源
sniffer字段名或开关位置不一致对照官方配置文档,不照搬旧模板

不要一次改整份 YAML。每次只改一个区域,能启动后再继续。

安全回滚顺序

回滚不是把旧 exe 覆盖上去就完事。配置和缓存也要考虑。

  1. 退出客户端,确认后台 core 已停止。
  2. 备份配置目录,包括 profiles、覆写文件、provider 缓存和本地规则。
  3. 记录当前 core 版本,下载上一版官方 release。
  4. 只替换 core 或客户端,不先删配置。
  5. 用一个最小配置启动。
  6. 最小配置成功后,再导入原配置。

如果原配置在旧 core 下也失败,就不是版本回滚能解决的问题,回头查 YAML 语法和字段。

配置要兼容多端时,别追最新字段

桌面端已经支持的新字段,手机端或路由器插件可能还没跟上。多人共用同一份订阅配置时,保守写法更省事:少用刚加入的字段,DNS 和规则尽量用文档里长期存在的结构。

需要一份配置同时给 Clash、Singbox、V2Ray 生态客户端测试时,可以用配套订阅线路做导入验证。但 core 版本仍要逐端确认,订阅可用不代表每个客户端都支持同一套高级字段。

回滚后还失败,检查缓存

有些客户端会缓存远程 provider、规则集和 profile。回滚 core 后,如果仍然加载旧缓存,错误会继续出现。

可检查:

  • 远程订阅是否重新拉取。
  • rule-provider 缓存是否清掉。
  • 覆写脚本是否仍在注入新字段。
  • UI 里的当前 profile 是否真的切到你刚改的那份。

最后检查表

  • 已确认客户端实际使用的 Mihomo core 版本。
  • 已保存失败日志里的第一条报错。
  • 已查明报错字段属于 DNS、TUN、rules 还是 provider。
  • 回滚前已备份配置目录。
  • 回滚后先用最小配置测试。
  • 多端共用配置时已去掉新 core 专属字段。

相关阅读