使用 Clash Verge、Mihomo 或其他 Clash 客户端导入订阅、切换配置文件时,有些用户会突然遇到类似下面的报错:

Parse Config Error

proxy [DIRECT] not found

或者:

rules[0] [MATCH,DIRECT] error: proxy [DIRECT] not found

也可能看到:

proxy [direct] not found

could not switch to this profile

配置文件解析失败

遇到这种情况以后,节点列表可能无法加载,配置文件无法切换,甚至整个订阅都不能正常启用。

这类问题通常并不是节点全部失效,也不一定是订阅地址坏了。

真正的问题通常出现在 Clash 配置文件的 rules 规则部分。

特别是 DIRECT 大小写错误、规则格式异常、自定义规则覆盖、代理组名称写错,都可能导致 Mihomo 无法找到规则指定的目标,从而直接拒绝加载配置。

下面按照最常见的情况逐项排查。

👉获取稳定 Clash / Mihomo 订阅线路

一、Proxy [DIRECT] Not Found是什么意思?

这个报错可以直接理解为:

当前某条 Clash 规则要求流量交给一个叫 DIRECT 的策略处理,但内核无法正确识别这个策略。

正常情况下,DIRECT 是 Clash 和 Mihomo 内置的直连策略。

例如:

MATCH,DIRECT

意思是:

如果前面的规则都没有匹配到,那么剩余流量直接连接,不经过代理节点。

所以正常的 MATCH,DIRECT 本身并不是错误。

真正出现 Proxy Not Found 时,一般说明规则内容、大小写、格式或者配置生成过程出现了异常。

二、最常见原因是把DIRECT写成了direct

这是首先应该检查的地方。

Clash 配置中通常应该使用:

DIRECT

而不是:

direct

例如错误写法:

MATCH,direct

正确写法:

MATCH,DIRECT

如果内核没有把小写 direct 当成内置策略,而是把它理解成一个普通代理组名称,那么它就会尝试寻找:

direct

这个代理组。

如果配置中根本不存在这个代理组,就可能出现:

proxy [direct] not found

所以遇到这类错误,第一步就搜索整个配置文件中的:

direct

检查是不是应该改成:

DIRECT

三、MATCH,DIRECT是什么意思?

MATCH 通常是规则列表最后的兜底规则。

例如:

DOMAIN-SUFFIX,google.com,节点选择

GEOIP,CN,DIRECT

MATCH,节点选择

意思是:

Google 使用指定代理组。

中国大陆 IP 直接连接。

其他没有匹配到的流量最后进入节点选择。

如果写成:

MATCH,DIRECT

那么没有匹配其他规则的流量最终都会直连。

所以 MATCH,DIRECT 是正常规则。

如果它报错,重点应该检查格式,而不是直接删除所有 MATCH 规则。

四、正确的rules格式是什么?

典型配置结构应该类似:

rules:
– DOMAIN-SUFFIX,example.com,DIRECT
– GEOIP,CN,DIRECT
– MATCH,节点选择

或者:

rules:
– DOMAIN-SUFFIX,example.com,DIRECT
– MATCH,DIRECT

重点是:

rules 后面是规则列表。

每条规则通常单独占一行。

前面保持正确的 YAML 缩进。

策略名称必须和配置中的代理组或者内置策略对应。

五、为什么规则看起来是MATCH,DIRECT还是报错?

如果肉眼看到 MATCH,DIRECT 没问题,但仍然报错,需要继续检查一些隐藏问题。

例如:

DIRECT 前后存在异常空格。

使用了中文逗号。

规则中混入特殊字符。

复制时带入了中文引号。

YAML 缩进损坏。

自定义覆写重新生成了错误规则。

实际加载的配置和你看到的配置不是同一个。

所以不能只看一行文字是否“看起来正常”。

六、中文逗号会导致规则错误吗?

有可能。

正常应该使用英文半角逗号:

MATCH,DIRECT

不要写成:

MATCH,DIRECT

这两个逗号肉眼很像,但实际字符完全不同。

如果规则是从聊天软件、文档或者网页复制过来的,尤其要检查这个问题。

七、DIRECT后面多了引号怎么办?

例如配置经过某些工具转换以后,可能出现异常内容。

正常情况下可以是:

MATCH,DIRECT

或者某些 YAML 写法会把整条规则作为字符串保存。

但如果出现不配对的引号、中文引号或者意外字符,就可能导致解析异常。

比如:

MATCH,DIRECT”

或者:

“MATCH,DIRECT”

这种内容建议重新手动输入,不要直接复制带格式的文本。

八、规则后面多一个空格会出问题吗?

普通英文空格通常不一定会导致错误,但如果混入不可见字符、全角空格或者特殊空白字符,就可能影响解析。

如果某条规则一直报错,而肉眼又看不出问题,最简单的方法不是继续修这一行。

直接删除整行。

然后手动重新输入:

MATCH,DIRECT

通常更快。

九、Proxy [DIRECT] Not Found和Proxy Group Not Found一样吗?

不完全一样。

Proxy Group Not Found 通常表示:

规则引用了一个不存在的代理组。

例如:

DOMAIN-SUFFIX,google.com,美国节点

但是当前配置里根本没有叫“美国节点”的代理组。

这时候就会出现代理组不存在的问题。

而:

proxy [DIRECT] not found

如果确实指向 DIRECT,则更应该检查:

大小写。

规则语法。

配置转换。

自定义覆写。

异常字符。

十、代理组名称能叫DIRECT吗?

不建议自己创建和内置策略同名的代理组。

DIRECT 本身已经是 Clash 的特殊策略名称。

如果自己又创建一个叫:

DIRECT

的代理组,可能让配置变得非常难以判断。

正常情况下直接使用内置 DIRECT 即可。

十一、自定义规则最容易引发这个问题吗?

是的。

如果原始机场订阅一直可以正常使用,但修改自定义规则以后突然出现:

Parse Config Error

Proxy Not Found

无法切换配置文件

那么优先怀疑自定义规则。

尤其是近期添加过:

自定义 rules

覆写

Merge

Script

规则前置

规则后置

配置模板

建议先暂时关闭这些修改,再加载原始订阅测试。

十二、怎么判断是不是自定义规则导致的?

最简单的方法是:

保留原始订阅。

暂时关闭所有覆写规则。

重新更新订阅。

重新切换配置文件。

如果原始配置可以正常加载,而开启自定义规则后再次报错,基本可以确认问题就在自定义内容。

这样比直接重装 Clash Verge 更有效。

十三、为什么机场订阅本身正常,Clash还是报错?

因为 Clash Verge 实际加载的配置不一定只是机场服务器下发的原始 YAML。

中间可能还经过:

本地覆写。

规则追加。

配置合并。

订阅转换。

脚本修改。

客户端配置处理。

所以即使机场服务器提供的原始订阅完全正常,本地最终生成的配置仍然可能出错。

十四、怎么判断是订阅问题还是本地配置问题?

可以做一个对比测试。

重新添加一份完全新的订阅。

不要加载任何自定义规则。

不要使用旧的覆写配置。

直接加载原始配置。

如果新配置可以使用:

大概率是本地旧配置问题。

如果新配置仍然出现相同的 Proxy Not Found:

再考虑订阅生成内容本身有问题。

十五、配置文件无法切换怎么办?

如果出现:

Could Not Switch To This Profile

不要一直重复点击切换。

先查看具体错误日志。

如果日志已经明确写着:

proxy [direct] not found

或者:

rules error

那么继续点切换没有意义。

应该先修复规则内容。

规则修复以后重新加载配置,再切换。

十六、怎么找到到底是哪条rules出错?

错误日志通常会包含类似:

rules[0]

rules[12]

rules[58]

这样的编号。

这个编号代表规则列表中的某一项。

例如:

rules[0] [MATCH,direct] error

说明第一条规则附近存在问题。

如果显示:

rules[58]

则重点检查 rules 列表中的对应位置。

不过不同客户端显示编号方式可能略有差异,所以最好同时查看报错后面显示的具体规则内容。

十七、为什么MATCH规则会出现在rules[0]?

正常配置中 MATCH 一般放在规则列表最后。

如果日志却显示:

rules[0] [MATCH,DIRECT]

说明你的规则生成顺序可能已经异常。

例如自定义覆写把 MATCH 添加到了最前面。

这种情况下即使配置能加载,分流逻辑也可能不符合预期。

因为 MATCH 属于兜底规则。

通常应该放在 rules 列表靠后的位置。

十八、MATCH为什么一般要放最后?

因为 Clash 会按照规则顺序进行匹配。

如果一开始就写:

MATCH,DIRECT

那么大多数后面的规则可能根本没有机会执行。

例如你后面还有:

Google走代理。

YouTube走代理。

ChatGPT走代理。

但流量已经提前被 MATCH 捕获,后面的规则就失去了作用。

所以 MATCH 一般作为最后的兜底规则。

十九、规则顺序错误会导致Proxy Not Found吗?

单纯顺序错误不一定直接导致 Proxy Not Found。

但是如果规则是由覆写脚本错误生成的,顺序异常往往会和其他格式问题一起出现。

因此看到 MATCH 出现在不合理的位置时,应该一起检查整个 rules 部分。

二十、YAML缩进错误会导致什么问题?

YAML 对缩进非常敏感。

例如正常格式:

rules:
– MATCH,DIRECT

如果变成错误的层级,可能导致:

Parse Config Error

Cannot Unmarshal

Invalid Config

Rules Error

具体报错取决于出错位置。

所以不要使用 Tab 键随意混排缩进。

建议使用普通空格。

二十一、这个错误和Cannot Unmarshal有什么区别?

Cannot Unmarshal 更偏向 YAML 数据类型错误。

例如本来需要字符串,却读取到了数组。

本来需要对象,却读取到了错误的数据结构。

而 Proxy Not Found 更接近:

配置已经读取到某条规则,但该规则引用的策略目标不存在或者无法识别。

简单理解:

Cannot Unmarshal 是“配置结构读不懂”。

Proxy Not Found 是“规则目标找不到”。

二十二、这个错误和Unsupported Proxy Type有什么区别?

也完全不同。

Unsupported Proxy Type 常见于:

AnyTLS。

VLESS。

某些新协议。

客户端内核版本太旧,无法识别订阅中的节点协议。

而 Proxy DIRECT Not Found 主要是:

规则和策略引用异常。

所以看到 Proxy Not Found,不要直接去升级协议节点。

先检查 rules。

二十三、升级Mihomo内核能解决吗?

不一定。

如果错误只是:

MATCH,direct

那么升级再新的 Mihomo 内核也不一定能解决。

因为配置本身就存在问题。

升级内核更适合解决:

新协议不支持。

旧内核存在兼容问题。

特定规则格式版本不兼容。

如果日志已经明确指向规则名称,优先修规则。

二十四、重新下载订阅有用吗?

有可能。

如果本地缓存的配置文件损坏,重新拉取订阅可能恢复正常。

建议按照这个顺序:

先备份必要设置。

重新更新订阅。

重新加载配置。

如果仍然失败,再删除旧配置后重新添加订阅。

不要第一步就把整个 Clash Verge 卸载。

二十五、为什么订阅更新以后突然出现这个错误?

可能有几种原因。

机场调整了规则模板。

订阅转换服务修改了配置。

本地覆写和新订阅冲突。

旧的自定义规则不再兼容。

代理组名称发生变化。

例如以前的代理组叫:

节点选择

后来订阅改成:

手动选择

而你自己的规则还在引用旧名称。

这时候也可能出现 Proxy Not Found。

二十六、怎么检查代理组名称是否存在?

找到配置中的 proxy-groups 部分。

查看实际存在的代理组名称。

然后再检查 rules 中引用的策略名称。

例如规则写着:

DOMAIN-SUFFIX,google.com,节点选择

那么 proxy-groups 中应该存在:

节点选择

如果实际只有:

手动选择

那么规则引用就需要修改。

二十七、DIRECT需要出现在proxy-groups里面吗?

一般不需要。

DIRECT 是 Clash 和 Mihomo 内置策略。

所以正常使用:

MATCH,DIRECT

并不要求你额外创建一个叫 DIRECT 的代理组。

如果有人告诉你遇到这个错误就新建一个 DIRECT 代理组,一般不建议直接这样处理。

应该先找出为什么内置 DIRECT 没有被正确识别。

二十八、REJECT也有类似情况吗?

有可能。

REJECT 同样属于常见内置策略。

如果错误写成特殊格式或者引用异常,也可能出现相关问题。

所以如果配置里同时存在:

direct

reject

建议统一检查是不是大小写或者规则生成存在问题。

常见规范写法是:

DIRECT

REJECT

二十九、从网页复制规则为什么容易出错?

因为网页、Word、聊天软件可能自动替换:

英文引号。

逗号。

空格。

破折号。

特殊字符。

例如原本的英文半角逗号可能被替换成中文全角逗号。

所以规则最好复制到纯文本环境检查。

如果只是几条简单规则,直接手动输入反而更可靠。

三十、修复后为什么还是无法切换配置?

可能是客户端还在使用旧缓存。

修复以后建议:

保存配置。

重新加载。

返回配置页面。

重新选择目标配置。

必要时退出 Clash Verge 后重新打开。

如果错误仍然完全一样,再确认修改的是当前实际加载的配置,而不是另一份旧 YAML 文件。

三十一、为什么我改了一份YAML但报错完全没变化?

很可能改错文件了。

Clash Verge 中可能同时存在:

远程订阅。

本地配置。

缓存配置。

覆写后的配置。

多个同名配置。

所以不要只根据文件名判断。

需要确认当前正在切换和加载的到底是哪一份配置。

三十二、最简单的恢复办法是什么?

如果不想逐条检查规则,可以先进行最小化测试。

第一步,关闭自定义规则和覆写。

第二步,重新添加原始订阅。

第三步,更新订阅。

第四步,直接加载原始配置。

第五步,确认是否还出现 Proxy DIRECT Not Found。

如果这样恢复正常,说明节点和订阅本身大概率没问题。

然后再逐个恢复自定义功能,就可以找到具体是哪一项造成冲突。

三十三、不要直接删除所有DIRECT规则

有些用户看到 DIRECT 报错以后,会把配置中的 DIRECT 全部删除。

不建议这样做。

因为 DIRECT 本身是正常的 Clash 分流策略。

例如国内网站直连、局域网直连、国内 IP 直连都会使用 DIRECT。

真正需要修复的是:

错误的 DIRECT 写法。

错误的规则格式。

错误的策略引用。

而不是禁止所有直连。

三十四、正确修复思路是什么?

看到:

proxy [direct] not found

优先检查:

是否写成了小写 direct。

看到:

proxy [某代理组] not found

检查这个代理组是否真实存在。

看到:

Cannot Unmarshal

检查 YAML 数据结构。

看到:

Unsupported Proxy Type

检查 Mihomo 内核和节点协议。

不要把不同类型的错误混在一起处理。

三十五、Clash Proxy DIRECT Not Found最快排查顺序

第一步,打开错误日志。

第二步,确认完整报错里到底是 DIRECT 还是 direct。

第三步,检查报错对应的 rules 规则。

第四步,把 direct 改为 DIRECT。

第五步,确认使用的是英文逗号。

第六步,检查规则有没有异常引号、空格或者特殊字符。

第七步,确认 MATCH 位于合理位置。

第八步,检查自定义规则和覆写。

第九步,确认 rules 引用的普通代理组真实存在。

第十步,保存后重新加载配置。

如果仍然失败,再重新拉取一份没有任何自定义修改的原始订阅测试。

三十六、常见问题

Clash提示Proxy DIRECT Not Found是什么意思?

表示当前配置中的某条规则引用了无法正确识别的策略,常见原因是 DIRECT 大小写错误、规则格式异常或者自定义配置生成错误。

MATCH,DIRECT本身是错误规则吗?

不是。MATCH,DIRECT 本身属于正常 Clash 规则,表示其他规则都没有匹配时使用直连策略。

为什么MATCH,direct会报错?

部分情况下小写 direct 会被当成普通代理组名称,而配置中不存在这个组,所以出现 Proxy Not Found。

是不是机场节点坏了?

通常不是。这类错误更多发生在配置文件和规则层面,与节点是否 Timeout 并不是同一个问题。

需要重新安装Clash Verge吗?

一般不需要。先修复规则、自定义覆写或者重新导入原始订阅,比直接重装客户端更有效。

需要升级Mihomo内核吗?

如果只是规则引用错误,升级内核不是首要解决方案。只有涉及协议兼容或者内核版本问题时才优先升级。

删除DIRECT能解决吗?

不建议。DIRECT 是正常的内置直连策略,应该修复错误规则,而不是删除所有 DIRECT。

为什么原始订阅能用,加了自定义规则就报错?

说明问题很可能来自本地覆写、自定义 rules 或 Merge 配置。关闭自定义内容后重新测试即可进一步确认。

总结

Clash 提示 Proxy [DIRECT] Not Found、Parse Config Error 或 rules 中 MATCH,DIRECT 报错时,通常不是节点全部失效,也不是订阅地址一定坏了。

最需要优先检查的是:

DIRECT 是否被写成了小写 direct。

规则是否使用英文逗号。

rules 是否存在异常字符。

MATCH 是否位于合理位置。

自定义规则和覆写是否生成了错误内容。

普通代理组名称是否真实存在。

如果错误日志出现:

proxy [direct] not found

最简单的第一步就是检查对应规则,把错误的 direct 修正为标准的 DIRECT,然后重新加载配置。

如果原始订阅能够正常使用,而加入自定义规则以后才报错,则重点检查本地覆写和规则合并。

不要一看到 Parse Config Error 就反复换节点、重装 Clash Verge 或修改 TUN。

先按照报错信息定位到具体规则,通常能更快解决 Clash Proxy DIRECT Not Found 问题。

相关阅读