CClash 下载中心下载入口

配置笔记

Clash 怎样维护候选顺序与测试地址记录

Clash 怎样维护候选顺序与测试地址记录。了解适用条件、操作步骤与常见问题的排查方法。

更新于 2026/10/4 · Clash 编辑组

Clash 要维护候选顺序与测试地址记录,依据是代理组通用字段,而不是另外一份隐藏账本。适用条件是:配置里已经存在 proxy-groups 条目,该组具备必须的 name 与 type,并且通过 proxies、use 或各类 include-all 引入了出站。名字含特殊符号时应当使用引号包裹。下面按具体场景说明如何排名单、如何记下测试地址、以及失败时下一步查什么。

候选名单从哪来,顺序由哪条规则决定

先分清引入通道,再谈顺序。proxies 引入出站代理或其他策略组,名单顺序就是列表书写顺序。use 引入代理集合。include-all 引入所有出站代理以及代理集合,顺序将按照名称排序,引入不包含策略组;若还需要其他策略组,应写在 proxies。include-all-proxies 引入所有出站代理,同样按名称排序。include-all-providers 引入所有代理集合并按名称排序,同时会使引入代理集合的既有写法失效。

判断依据:只要启用了按名称排序的 include 类字段,就不能再用“谁写在文件前面谁就是第一候选”来推断。default-selected 指定默认选择的节点;该项为空或者设置的节点名不存在时,默认选择组中第一个节点。因此,在手工 proxies 列表里,第一项是空配置或写错名时的实际回退对象;在 include 且按名称排序时,第一项是排序后的第一个名字。

filter 筛选满足关键词或正则表达式的节点,多个正则可用反引号区分,仅作用于引入代理集合以及引入所有出站代理。exclude-filter 做排除,规则类似。exclude-type 不支持正则,通过竖线分割,根据节点类型排除,仅排除引入的出站代理,无视大小写。这三项会改变最终集合,从而改变“第一个节点”是谁。维护顺序时必须把筛选条件与 include 开关记在一起。

测试地址记录应包含覆盖范围,而不是只抄 url

url 是健康检查测试地址。记录时必须同时写下覆盖范围:官方说明只会检查代理组 proxies 字段的代理,不会检查通过 use 引入的代理集合节点。只抄地址、不记候选是否主要来自 use,会出现改了地址却看不到对应节点状态变化的情况。

与地址绑定的判定参数也要一并记下:interval 为健康检查间隔,如不为 0 则启用定时测试,单位为秒;lazy 默认为 true,未选择到当前策略组时不进行测试;timeout 为超时,单位毫秒;max-failed-times 为最大失败次数,超过则触发一次强制健康检查,默认 5;expected-status 为期望的 HTTP 响应状态码,配置后只有状态码一致才认为可用,默认星号表示不做要求。expected-status 可用斜线匹配多个状态码,用短横匹配范围,可混合书写,例如同时匹配 200 与 302,或匹配 400 到 503,或把两者写在同一项里。

场景步骤:先确认该组会被选中(否则 lazy 为 true 时可能根本不测),再确认 interval 非 0,再确认被测对象写在 proxies。这三项有一项不成立,测试地址记录就不能用来解释节点状态。

改完后如何验收,失败时下一步

验收顺序:未使用 include 按名排序时,核对 proxies 列表与 default-selected;使用了 include 时,按名称排序后看第一项是否仍是你想作为默认的节点。验收测试地址:以“组已被选中、interval 非 0、对象在 proxies 中”为前提,再看 expected-status 是否与探测响应一致。

失败时下一步:默认节点不对,先查 default-selected 是否为空或名字不存在,再查 filter 是否去掉了原第一项,再查 include 是否改为按名排序。健康检查无动作,先查 interval 与 lazy。检查有动作但全员失败,先查 timeout 与 expected-status,并核对测试是否覆盖不到 use 的节点。组为空时看 empty-fallback,默认 COMPATIBLE,且只支持填写 proxy 名称,不支持填写代理组。代理组上的 interface-name 与 routing-mark 已弃用,应改到代理节点上,优先级为代理节点大于代理策略大于全局。

参考资料:https://wiki.metacubex.one/config/proxy-groups/

← 返回全部文章