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

怎样为 Clash 自定义配置写有用注释

怎样为 Clash 自定义配置写有用注释。了解适用条件、操作步骤与常见问题的排查方法。

编辑部 · 更新 2026-10-04

注释在 YAML 中起什么作用

Clash 自定义配置以 YAML 书写。YAML 1.2.2 把注释规定为呈现层面的文字:注释以井号开始,出现在字符流里,方便人阅读。解析呈现流时会丢弃注释;把表示图画成原生数据结构时,也不得引用注释、节点样式、缩进风格等呈现细节。因此,为配置写注释的适用条件是:你要给后续的人(包括很久之后的自己)留下意图,而不是给加载过程增加分支。注释再长,也不会变成映射键或序列项。

规范把容易被人类阅读列为首要设计目标,并说明 YAML 常用于配置文件。有用的注释服务于这一目标:补充键名无法表达的约束、适用范围和取舍理由。若某一段对任何读者都已经能从键值看懂,也可以不写。不要指望注释在加载后仍被程序读取。

具体写法与是否有用的判断

规范示例把注释放在值的同一行末尾,或单独成行。映射示例中在数值后写明该统计项的业务含义,而不是把键名再抄一遍。Clash 配置同样由块映射与块序列组成:键值用冒号分隔,序列项以短横线开头。注释应紧贴它所解释的那个节点,阅读顺序才与缩进范围一致。

可按下列步骤写。先只在允许出现空白与注释的位置写下井号,避免把井号插进未加引号、且需要保留字面内容的标量中间,否则后半行会从结构中消失。再在该节点旁写清目的:为何选择该出站、该条规则覆盖哪类请求、何时应当删除或改写。接着用连续注释行写多句说明;规范把空行与注释都视为呈现的一部分。最后检查:真正要生效的条件必须写在键或序列项里,因为构造阶段看不到注释。锚点、别名、标签属于节点属性,不要用注释去模拟它们。

判断依据有两条,且必须同时成立。第一,去掉全部注释后,文档仍应解析为同一表示,行为不应依赖那些井号后面的字。第二,只读注释就能知道该节点存在的理由,而不是只看到与键名相同的词。符合规范示例风格的注释解释的是含义与目的。若加载失败,优先当语法错误处理,而不是当注释不够有用处理。

失败时下一步

配置不能加载时,按规范把问题视为可能的格式失败:缩进决定块集合范围,井号可能截断了纯量。先去掉新增注释,确认节点本身可解析,再逐段加回。配置能加载但别人仍无法维护时,把重复键名的句子改成目的、边界条件和失效条件。若有人用注释当作开关,那在加载模型里不会生效,必须改成真正的键值。重新转储后注释消失,符合呈现细节由处理器决定、构造不引用注释的模型,应继续维护带注释的源文本,而不是从加载后再写出的流里寻找说明。

https://yaml.org/spec/1.2.2/