Clash / Mihomo 的 provider 机制很适合把节点列表和主配置拆开,但它也让错误多了一层。主配置启动正常,不代表 provider 已经加载;provider 文件下载成功,也不代表分组真的用了它。
快速对照表
| 检查项 | 正常表现 | 异常表现 |
|---|---|---|
| URL | 返回 provider YAML | 返回 HTML、空文本、登录页 |
| path | 本地生成缓存文件 | 权限不足、目录不存在 |
| interval | 能按周期更新 | 过短导致频繁失败 |
| health-check | 只影响可用性检测 | URL 错或超时让节点灰掉 |
| filter | 只筛目标节点 | 正则过严导致列表为空 |
| group use | 分组引用 provider | 名称不一致,分组无节点 |
provider 为空最常见的是 URL 拿错。很多订阅地址返回完整配置,而 proxy-providers 期待 provider 片段;两者结构不同,不能互换。
URL 与 path
把 provider URL 单独打开,正文里应能看到节点列表。若返回 <html>、错误提示或完整 Clash 配置,都要回订阅后台换「provider」或「Clash 节点列表」格式。path 是本地缓存文件,OpenClash、Docker、NAS 上要确认目录存在且进程可写。
如果你还没有确定订阅格式,使用兼容 Clash / Singbox / V2Ray 的订阅时也要区分「完整 Clash YAML」和「proxy-provider 片段」,这两种不是同一个入口。
group use 不能写错
示例结构大致如下:
proxy-providers:
main-provider:
type: http
url: https://example.com/provider.yaml
path: ./providers/main.yaml
interval: 3600
health-check:
enable: true
url: https://www.gstatic.com/generate_204
interval: 600
proxy-groups:
- name: Auto
type: url-test
use:
- main-provider
use 里的 main-provider 必须和上方 key 完全一致。大小写、下划线、短横线不一致,Mihomo 不会猜你的意思。
排查清单
- provider URL 可直接下载,状态码不是 301 循环或 403。
- 文件正文不是完整配置里的
proxy-groups、rules大包。 -
path所在目录存在,客户端有写入权限。 -
filter先临时注释,排除正则筛空。 -
health-check.url使用轻量可访问地址。 - 分组里写的是
use,不是把 provider 名称塞进proxies。