Clash 文档中心中文使用手册

Clash 怎样检查新增规则是否放在正确层级

Clash 怎样检查新增规则是否放在正确层级。了解适用条件、操作步骤与常见问题的排查方法。

更新于 2026/10/4

在 Clash 配置里新增一条规则,正确层级意味着:新节点的父节点是目标序列,它是该序列的一条条目,而不是嵌进上一条规则的映射,也不是提前结束列表后写到外层映射里。YAML 用缩进确定块集合的范围,用短横线加空格标明序列条目。检查层级要看从属关系,不是看行号靠近谁。

适用条件

适用于刚插入一行或一段规则、需要确认它与既有规则是兄弟条目的场合。适用于规则写在某个键的值里,或列表项本身是映射、容易多缩进或少缩进的场合。不适用于规则是否命中某类流量。依据 YAML 1.2.2 的缩进、块序列和表示图。

检查步骤与判断依据

  1. 标出目标序列的缩进。找到作为该列表值的那个键(若列表是某映射的值),再找到已有条目的短横线所在列。新条目应使用「- 」,并与这些兄弟短横线对齐。
  2. 排除写进了上一条映射。规范允许键值对紧跟短横线开始;上一条若是映射,比该短横线更深且没有新短横线的键仍属于上一条。新规则如果只是多缩进、没有自己的短横线,会成为上一项的字段。判断:新内容的父节点若是上一项映射而不是目标序列,层级错误。
  3. 排除提前结束列表。缩进回到外层映射的键列,表示当前块集合结束。新行若与父映射的键对齐并带冒号,它是外层的新键,不是列表项。判断:目标序列的长度没有增加。
  4. 加载后根据表示检查,而不是根据空白好不好看。构造不得依赖缩进风格本身,但解析时缩进已经决定了结构。比较表示图中新节点的种类、父节点、以及它在序列中的下标。注释在解析时丢弃:只加井号既不会把规则放到另一层,也不会从列表中删掉一项。
  5. 若该列表用 flow 方括号书写,层级由括号与逗号决定。新增项应出现在同一对括号内,并用逗号与相邻项分开,不能靠对齐短横线来判断。

通过标准:加载成功,目标序列长度加一,新条目是该序列的直接子节点。

失败时下一步

层级不对时,先只改缩进以及是否保留短横线,不要同时改字段内容,以免把两种问题混在一起。仍无法加载则属于格式不良,回退到插入前的整份流。紧凑列表项里有多个键时,让这些键保持比短横线更深、彼此对齐,避免其中一个键意外对齐到外层。确认前不要覆盖原配置。

资料来源: https://yaml.org/spec/1.2.2/

返回文章索引使用教程