Clash 文档中心中文使用手册

Clash 怎样在提交配置前检查重复键

Clash 怎样在提交配置前检查重复键。了解适用条件、操作步骤与常见问题的排查方法。

更新于 2026/10/4

提交 Clash 配置前检查重复键,检查的是每个映射节点在表示中的键是否唯一,而不是全文搜索某个单词出现次数。同名字符串可以合法出现在不同映射里,也可以出现在注释里(注释不进入表示)。真正要拦下的,是同一映射里相等的两个键。

适用条件

适用于改完配置、合并片段、或从块样式与 flow 样式混抄之后、准备交给加载程序之前。适用于至少能判断映射边界的场合。若流已经格式不良,应先修呈现,再谈键唯一。本文依据 YAML 1.2.2 的表示与加载过程,不假设某一检查器的界面。

检查范围与判断依据

  1. 按映射节点分段。块映射范围由缩进决定,flow 映射由花括号决定。序列中每个条目若是映射,要分别检查。嵌套映射各自独立:外层某个键与内层同名键不是同一键。
  2. 键相等看节点,不看源码是否逐字相同。解析会丢掉引号、样式等呈现细节。两个键加载后若为相等节点,即重复。未加标签时类型取决于应用,看起来像整数的键与加引号的字符串键可能并不相等,全文搜索会误报或漏报。问号引出的复杂键必须把整个键节点纳入比较。
  3. 若两个键通过别名指向同一锚点,它们在表示里是同一节点,也构成重复键。这与值位置上使用别名不同:后者合法,规范示例正是在值上引用已标识的节点。
  4. 注释、指令、文档前缀不参与键集合。多文档流要逐个文档检查;文档之间的同名键不属于同一映射的重复。
  5. 通过标准:组成后的每个映射键集合无重复,且解析未因格式不良失败。不能用 dump 后再看有没有两行相同来代替:合法 dump 针对已经唯一的键,并会自行选择键顺序,可能掩盖问题。

操作步骤

先确保流能解析,得到序列化树。再组成表示图,对每个映射列出键的种类、标签与内容,查找重复。发现重复则只留一项,修改该键的值而不是并存两份。块样式与花括号写法都要覆盖到。最后再次加载,确认构造基于单一键值。若只做人工对照,至少按缩进和括号画出映射边界后再比键,避免把不同层的同名键算作重复。

失败时下一步

解析失败则按格式不良修指示符、引号和缩进,不要把解析失败直接解释成有重复键。组成失败时保留失败文本,对照该映射的键列表。若某处理器接受重复键而另一边拒绝,以规范的键唯一为准修改,不要把可移植性建立在某一实现的容忍上。提交前保留用于检查的原始流副本。

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

返回文章索引使用教程