clashv

升级 mihomo 后提示字段已废弃怎么办

升级 mihomo 后日志提示字段已废弃:relay 代理组、interface-name、global-client-fingerprint、旧 sniffing 写法等。说明怎么按官方文档改成新写法。

适用:mihomoClash Verge RevFlClashClash PartyClash Meta for AndroidClashX MetaClash Mi

你看到的现象

客户端或内核更新后,日志里出现 Deprecated、removed、please use ... instead 之类的英文提示;有的配置还能用,有的直接加载失败。

先看日志的级别和内容:

  • 警告(warning)且配置能加载:旧写法暂时还能用,但以后的版本可能会删掉,建议趁现在改掉。
  • 错误(error):有的是“这个字段已经没有效果”,配置照样加载,只是你写的设置不起作用;有的会让整份配置加载失败。

下面每一条都用 mihomo v1.19.33 实测过,并对照了官方文档和源码。日志里的字段名就是你要在配置文件里找的位置;配置来自订阅的,把提示发给服务商更新即可。

可能的原因和解决办法

用了 relay 类型的代理组

怎么判断:加载失败,报错:

proxy group[0]: unsupported type: The group [组名] with relay type was removed, please using dialer-proxy instead

怎么解决:官方文档写明 relay 策略已被弃用,改用节点上的 dialer-proxy 实现链式代理。写法见 mihomo 官方文档:dialer-proxy(在新窗口打开)。

代理组里写了 interface-name、routing-mark 或 dialer-proxy

怎么判断:日志报错(配置仍能加载,但这些设置不起作用):

The group [组名] with interface-name configuration was removed, please set it directly on the proxy instead
The group [组名] with routing-mark configuration was removed, please set it directly on the proxy instead
The group [组名] with dialer-proxy configuration is not allowed, please set it directly on the proxy instead

怎么解决:把这些字段从代理组里删掉,写到具体的节点(proxies 下的各项)上。

用了全局的 global-client-fingerprint

怎么判断:日志报错(配置仍能加载,但设置不起作用):

The `global-client-fingerprint` configuration is removed, please set `client-fingerprint` directly on the proxy instead

怎么解决:删掉顶层的 global-client-fingerprint,在需要的节点上写 client-fingerprint。按官方文档,它只适用于 VMess、VLESS、Trojan、AnyTLS 节点。

域名嗅探用了旧的 sniffing 写法

怎么判断:日志警告 Deprecated: Use Sniff instead。配置里 sniffer 下面用的是 sniffing: 列表。

怎么解决:改成官方文档里的 sniff: 写法,按协议分别写端口:

sniffer:
  enable: true
  sniff:
    HTTP:
      ports: [80, 8080-8880]
    TLS:
      ports: [443, 8443]

DNS 的 fallback-filter 里用了 geosite

怎么判断:日志警告 replace fallback-filter.geosite with nameserver-policy, it will be removed in the future。

怎么解决:官方文档写明该字段已废弃,改用 dns 下的 nameserver-policy。见 mihomo 官方文档:DNS(在新窗口打开)。

TUN 用了 inet4-route-address 等旧字段

怎么判断:配置的 tun 下有 inet4-route-address、inet6-route-address、inet4-route-exclude-address、inet6-route-exclude-address。官方文档把它们列为“旧写法,即将废弃”。

怎么解决:改用 route-address 和 route-exclude-address。官方文档说明这两项一般无需配置。见 mihomo 官方文档:TUN(在新窗口打开)。

订阅导入成功了,但连不上?用配置文件检查器看看配置本身有没有问题,全程在浏览器本地完成。
打开配置文件检查器

常见问题

日志太多,找不到这些提示?

把配置粘贴到 配置文件检查器,它会检查已废弃字段并标出行号。直接运行 mihomo 的,也可以用 mihomo -t -f 配置文件路径 只检查配置,报错和警告会直接打印出来。

是不是降级内核就好了?

不建议。旧写法迟早要改,降级会错过新版本的修复。按上面改成新写法即可。

还是没解决?

把客户端名称、版本和完整的报错信息发给我们(不要包含订阅链接),我们会补充到这一页。提交反馈