Clash Verge Rev 配置文件增强完全指南:Merge 与 Script 的正确用法

博客资讯 104 2026-5-28

导入订阅之后,大多数用户会遇到一个瓶颈:订阅自带的规则和策略组是服务商预设的,你想添加自己的分流规则、调整 DNS 设置、或者对节点做批量转换,却发现无从下手。直接改订阅文件会被下次更新覆盖,而「编辑规则」只能处理规则,覆盖不了 DNS、端口、代理组等其他配置项。

Clash Verge Rev 为此设计了一套名为 配置文件增强(Profile Enhancement) 的系统。它在订阅文件和最终生效的配置之间插入了一层可编程的转换管道,允许你在不改动原始订阅的前提下,追加规则、覆写字段、甚至用 JavaScript 动态生成配置。本文讲解这套系统的核心机制和实际用法。


01. 增强系统的工作原理

理解增强系统的第一步,是明白它在什么阶段介入

当你选择了一个订阅作为主配置(Main Profile),Clash Verge Rev 并不会把这个订阅文件直接交给 Mihomo 内核。它会先加载订阅内容作为基础配置,然后依次应用你启用的所有增强项,最终产出一份完整的配置再交给内核使用。这个过程在每次配置刷新时都会重新执行,所以增强项的效果是持久的,不会因为订阅更新而丢失。

增强项以「链」的形式串联。如果你同时启用了 Merge 和 Script,处理顺序是先 Merge 后 Script——Merge 的输出会成为 Script 的输入,Script 的返回值才是最终配置。

系统支持四种增强类型:Merge(合并)Script(脚本)Rules(规则)Proxies(代理)。其中 Rules 和 Proxies 是较新版本引入的专用增强项,目前最常用的仍然是 Merge 和 Script。


02. Merge 增强:声明式追加与覆写

Merge 增强的定位是声明式的字段追加和覆写。你编写一个 YAML 文件,声明想对基础配置做什么改动,系统会按规则将其合并进去。

核心操作类型

Merge 文件支持六种精确的追加操作:

prepend-rules:
  - DOMAIN-SUFFIX,example.com,DIRECT
append-rules:
  - DOMAIN-KEYWORD,ads,REJECT
prepend-proxies: []
append-proxies: []
prepend-proxy-groups: []
append-proxy-groups: []
  • prepend-rules:将规则插入到规则列表最前面,优先级最高
  • append-rules:将规则追加到规则列表末尾,优先级最低
  • prepend-proxies / append-proxies:对节点列表做同样操作
  • prepend-proxy-groups / append-proxy-groups:对代理组列表做同样操作

除了这六种追加操作,Merge 还支持直接覆写任何 Clash 字段。如果你在 Merge 文件中写了一个与基础配置同名的顶级字段,它会直接覆盖基础配置中的值。例如覆写 DNS:

dns:
  enable: true
  enhanced-mode: fake-ip
  fake-ip-range: 198.18.0.1/16
  nameserver:
    - 119.29.29.29
    - 223.5.5.5

这段配置会将最终生效的 DNS 设置完全替换为你指定的值,不受订阅中 DNS 配置的影响。

Merge 的适用场景

Merge 最适合结构化的、静态的配置调整。比如给所有订阅统一添加几条广告拦截规则、覆写 DNS 服务器、调整日志级别、或者补充代理组。它的优势是声明清晰、可读性好,不需要编程思维。

但 Merge 有一个明显的局限:它不能做条件判断。你无法根据某个字段的值来决定是否应用另一项改动。需要这种逻辑时,就必须用 Script 增强。


03. Script 增强:用 JavaScript 处理配置

Script 增强的定位是命令式的配置转换。你编写一个 JavaScript 文件,系统会将当前的配置对象传入你的 main 函数,你修改这个对象后返回,系统将返回值作为新的配置。

基本结构

脚本必须导出一个名为 main 的函数,签名如下:

function main(config) {
    // config 是当前的 Clash 配置对象
    // 在这里修改 config
    return config;
}

如果脚本抛出错误,本次修改会被跳过,对应的增强项会标记为红色并显示错误信息。

运行环境限制

Script 增强的 JavaScript 运行环境基于 QuickJS,这是一个轻量级的嵌入式引擎。它支持标准 JavaScript 语法(ES2020 级别),但不支持文件系统访问、网络请求或 Node.js API。你只能操作传入的 config 对象,不能做任何 I/O 操作。

实用示例:批量处理 WebSocket 配置

以下脚本将所有使用旧版 ws-path / ws-headers 字段的节点转换为新版 ws-opts 结构:

function main(config) {
    if (!config.proxies) return config;

    config.proxies.forEach((proxy) => {
        if (proxy.network === "ws" && (proxy["ws-path"] || proxy["ws-headers"])) {
            const opts = proxy["ws-opts"] || {};
            opts.path = proxy["ws-path"];
            opts.headers = proxy["ws-headers"];
            proxy["ws-opts"] = opts;
            delete proxy["ws-path"];
            delete proxy["ws-headers"];
        }
    });

    return config;
}

这段脚本遍历 proxies 数组,对每个节点检查 network 字段和旧的 ws-path / ws-headers 字段,如果存在则转换为 ws-opts 结构并删除旧字段。这是一种典型的兼容性转换,适合处理订阅中格式过旧的节点配置。

Script 的适用场景

Script 适合需要条件判断、循环处理或动态生成的配置修改。比如:

  • 根据节点名称批量添加前缀或后缀
  • 根据协议类型决定是否添加某个字段
  • 从规则列表中过滤掉特定关键词的规则
  • 动态生成代理组并关联节点

但 Script 的可读性不如 Merge。对于简单的追加规则或覆写字段,用 Merge 更直观,也更不容易出错。


04. 如何创建和启用增强项

增强项的创建入口在「订阅(Profiles)」页面。右键点击你正在使用的主配置卡片,可以看到以下选项:

  • 编辑规则(Edit Rule):创建一个 Rules 类型的增强项
  • 编辑文件(Edit File):打开 Merge 或 Script 文件的编辑界面
  • 扩展脚本(Extended Script):创建 Script 类型的增强项

创建后,增强项会以独立卡片的形式出现在订阅列表中,与主配置卡片并列。你需要右键点击增强项卡片,选择「启用(Enable)」,它才会生效。启用状态下的增强项卡片会显示为激活色。

修改增强项文件后,需要点击右上角的刷新按钮触发重新处理。如果 Merge 或 Script 中有语法错误,卡片会变为红色并显示具体的错误信息,此时增强项不会生效,配置会回退到未应用该增强项的状态。


05. 一个完整的组合示例

假设你有一个订阅,需要同时做三件事:添加自定义直连规则、覆写 DNS、以及批量处理节点名称。可以这样组合:

Merge 文件(处理静态规则和 DNS):

prepend-rules:
  - DOMAIN-SUFFIX,baidu.com,DIRECT
  - DOMAIN-SUFFIX,clashverge.dev,DIRECT
dns:
  enable: true
  enhanced-mode: fake-ip
  nameserver:
    - 119.29.29.29
    - 223.5.5.5

Script 文件(处理动态节点名称转换):

function main(config) {
    if (!config.proxies) return config;
    config.proxies.forEach((proxy) => {
        if (proxy.name && !proxy.name.includes(" | ")) {
            proxy.name = proxy.name + " | " + (proxy.type || "unknown");
        }
    });
    return config;
}

两个增强项都启用后,最终生效的配置会先经过 Merge 的规则追加和 DNS 覆写,再经过 Script 的节点名称转换。处理顺序是固定的:Merge 在前,Script 在后。


06. 注意事项

不要用增强项替代订阅更新。增强项是叠加在订阅之上的,如果你的订阅本身有严重问题(比如节点全部失效),增强项无法修复。增强项适合做“锦上添花”的定制,不适合作为配置管理的主要手段。

Merge 的覆写是全局的。如果你在 Merge 中覆写了 dns 字段,它会替换基础配置中整个 dns 对象,而不是逐字段合并。如果你只想修改 DNS 中的某一个字段,需要在 Merge 中写出完整的 dns 结构。

Script 的错误会导致整个增强项失效。QuickJS 对语法错误和运行时错误都比较严格,一个未捕获的异常就会让整个脚本的修改被跳过。建议在本地用 Node.js 测试脚本逻辑后再粘贴到 Clash Verge Rev 中。

增强项的执行顺序不可调整。Merge 始终在 Script 之前,Script 之间按启用顺序依次执行。如果你有多个 Script 需要特定的处理顺序,把它们合并到一个脚本文件中,用顺序逻辑处理,而不是依赖多个独立脚本的执行顺序。

Rules 和 Proxies 增强项是较新特性。它们分别对应 prepend-rules / append-rulesprepend-proxies / append-proxies 的专用封装,在 v2.x 版本中已可用,但文档和社区示例相对较少。对于大多数场景,用 Merge 的对应字段即可达到相同效果。

上一篇:Clash Verge Rev Linux 安装与配置完全指南:Ubuntu / Debian / Fedora / Arch 全平台

开始使用 Clash Verge Rev

下载最新版本 v2.5.2,体验更轻量、更快速的代理客户端。

立即下载