CClash 中文社区选择客户端 ↗
首页/博客
操作教程

Clash 嵌套策略组怎样画清选择关系

Clash 嵌套策略组怎样画清选择关系。了解适用条件、操作步骤与常见问题的排查方法。

编辑部 · 更新 2026-10-04

适用条件

当配置里出现“一个策略组的 proxies 里写了另一个策略组的 name”时,选择关系就是嵌套的,需要先画清谁引用谁,再谈最终出口。官方字段约定:proxies 可以引入出站代理或其他策略组;use 只引入代理集合;include-all、include-all-proxies 会引入出站代理(后者不含集合),顺序按名称排序,且引入结果都不包含策略组。若外层还要挂内层策略组,只能显式写在 proxies 里。include-all-providers 引入全部代理集合并同样按名称排序,同时会使“引入代理集合”失效。画关系时不要把集合、出站代理、策略组三类来源画成同一种箭头。

怎样把选择关系画清楚

第一层写规则引用的那个组名,这是整条链路的入口。第二层只展开该组自己的成员来源:proxies 中的每一项要么是出站代理名,要么是另一策略组名;use 展开为集合中的节点,而不是组。第三层对“成员是策略组”的项继续展开,直到叶子为出站代理。每一层都要单独标出 name:含特殊符号时必须加引号,否则图上的名字与配置里的名字会对不上。

筛选不要画到错误的边上。filter、exclude-filter 仅作用于引入代理集合以及引入所有出站代理;手写在 proxies 里的策略组名不会被这两项当成节点去匹配。exclude-type 不支持正则,用 | 分割,根据节点类型排除,并且只排除引入的出站代理。因此:内层组会不会出现在外层可选列表里,取决于你有没有把它写进 proxies,而不是取决于 include-all 有没有打开。

每一层的“当前选中谁”要分开标注。default-selected 只作用于它所在的那一层;为空或节点名不存在时,该层默认选自己成员里的第一个。外层选中一个内层组,并不等于外层直接选中了某个叶子节点——叶子由内层自己的默认规则决定。组为空时看该层的 empty-fallback,默认 COMPATIBLE;文档明确这里不支持填写代理组,只支持填写 proxy 名称,所以图上不要把空组回退画成指向另一个策略组。

健康检查也不要画成“整条嵌套链一起测”。url 只会检查该组 proxies 字段里的代理,不会检查通过 use 引入的集合成员。interval 不为 0 才定时测;lazy 默认 true,未选择到当前策略组时不测。把这些画成“仅当该层被选中且目标在 proxies 里才参与测试”,可以避免把集合节点的可用性误当成组嵌套关系的一部分。

判断依据与失败后的下一步

关系图画完后,用三条依据核对:入口组名是否就是规则引用的 name;每一层的策略组是否只出现在 proxies 而不是 include-all 的结果里;每一层的默认成员是否按 default-selected 否则“第一个节点”来理解。若图上出现环、或某层展开后没有叶子代理,下一步应检查是否把组名误写进 use 或 empty-fallback,是否因 filter/exclude-filter/exclude-type 把叶子筛空,以及 include-all-providers 是否让集合引入失效。interface-name、routing-mark 在代理组上已弃用,优先级为代理节点大于代理策略大于全局,画选择关系时不要把它们当成组与组之间的连线条件。hidden 与 icon 只影响 API 是否展示该组,不改变嵌套选择本身。

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