教程 2026-04-30 · 约 16 分钟阅读

Clash Meta 自建节点怎样与订阅并存?YAML 合并与 mixin 逐项操作

很多读者已经买了机场订阅,又想把自己在 VPS 上架的 Vmess/VLESS/Trojan 等写进同一套配置,放在同一个 手动切换自动测速 策略组里。若直接把节点粘进「订阅下载下来的那份缓存 YAML」,下一次刷新往往会被覆盖;若在 mixin 里随便塞一段 proxies:,又可能撞上数组合并策略代理重名,表现为节点消失、组引用报错或缩进一整段失效。本文面向 Clash Meta(Mihomo) 与常见带 Merge 的图形客户端,把「机场与 VPS 并存」拆成可重复的操作顺序,并和「只用 Subconverter 转出单一订阅」、以及「mixin 只注规则不改节点」两条路径明确区分开。

为什么不要只在订阅文件里手改节点

远程订阅在用户眼里常是一条 URL,在客户端里却被实现成周期性拉取 + 本地缓存。你若有权限看到「订阅对应的 YAML 片段」,那通常是生成过程中的中间结果:刷新后机场下发的节点列表、策略组骨架与规则会按服务商版本重新展开。把 VPS 节点写进这段正文,等价于把长期资产放进「可能被整体重写」的分区里——今天保存成功,明天一次更新就可能静默丢失。

更隐蔽的风险是键级覆盖:部分合并实现里,如果覆写层与订阅层在顶层键上发生冲突,后写者可能整表替换而不是逐项追加,最终只剩一半 proxies 或一半 rules。所以要坚持一件事:机场维护的段落继续由订阅管道提供;VPS 与你想永久保留的手工定义放进覆写层,并用「prepend/append」等带语义的段落声明拼接位置。

和「转一份完整 YAML」不是同一道题

若你当前只有订阅链接、希望先得到带规则集的基线,可按 《只有订阅链接没有规则?用 Subconverter 转成 Clash 配置》 生成主配置;本文假设订阅已在客户端里正常工作,你要做的是在不破坏刷新语义的前提下追加第二来源节点

心智模型:谁在提供 proxies,谁在补 proxies

把最终跑起来的配置想成三层最清晰:① 订阅解析层产出机场节点(可能来自 proxy-providers 展开,也可能直接写在 proxies 数组里,依客户端展示而定);② 覆写层通过 Merge、mixin 或等价机制追加你的 VPS 定义;③ 策略组层里的 proxies: 列表用「名称字符串」引用前后两段里出现的代理名。合并是否成功,几乎总能在「最终生效配置」里用搜索验证:机场节点名仍在、VPS 节点名也出现了、策略组里两类名称并列且无 spelling 差异。

《Clash Meta mixin 覆写远程订阅》 一文相比:那边侧重 prepend-rulesappend-rules 与规则不被刷新冲掉;本文侧重 prepend-proxiesappend-proxiesprepend-proxy-groupsappend-proxy-groups,解决多来源节点列表本身如何拼进同一张图。两篇可以一起用:规则管「流量走哪」,节点段管「有哪些出口可用」。

命名建议

给 VPS 节点加稳定前缀,例如 vps-home-,避免与机场批量生成的短名碰撞。引用时代理名区分大小写,差一个字符就会在启动校验阶段报错。

图形客户端 Merge:六项拼接键各管什么

在支持 Mihomo 的图形客户端(如 Clash Verge Rev 一类)中,Merge 覆写通常暴露六类管道:prepend-rulesappend-rulesprepend-proxiesappend-proxiesprepend-proxy-groupsappend-proxy-groups。你要「机场与 VPS 并存」,核心先用后四项中的 proxies 两段 把手工节点声明进去,再用 proxy-groups 两段 之一去新增一个组补充引用,而不是去改订阅正文。

实操顺序可以记成「先实体,后引用」:

  1. append-proxies(或你希望出现在列表末尾时用 append;需要靠前则用 prepend)写入 VPS 的完整单个代理对象,类型字段与机场一致(vmessvlesstrojan 等)。
  2. 打开客户端「合并后的完整配置」搜索机场里你常用的策略组名,抄下其中 proxies: 下列出的节点名字符串。
  3. 若机场组不方便直接改:用 append-proxy-groups 新建 type: selecturl-test 组,在 proxies: 数组里按想要的顺序逐个写下「机场节点名 + 你的 VPS 名」。这是最能一目了然的并存方式。
  4. 若必须沿用机场已有组结构:部分客户端支持对同名组进行 append 合并,但行为因版本而异;更稳妥仍是新建独立组并在 prepend-rulesappend-rules 里让少数域名指向新组,避免与服务商默认组深度耦合。
# Merge snippet — append manual proxies (illustrative; fill server credentials)
append-proxies:
  - name: vps-tokyo-hy2
    type: hysteria2
    server: 203.0.113.10
    port: 443
    password: "replace-me"
    skip-cert-verify: false

append-proxy-groups:
  - name: "✈️机场+VPS"
    type: select
    proxies:
      - PROXY
      - vps-tokyo-hy2

上面示例里 PROXY 请替换为你机场订阅里真实的默认策略组名或某个具体节点名——演示意图是说明「组内可以同时引用订阅产出的名字与本地 append 的名字」。若你的机场顶层组叫 节点选择 或英文混排,必须与合并结果逐字一致。

纯内核/mixin.yaml 场景怎么写

不经过图形 Merge、而是手写 mixin.yaml 或主配置里启用 mixin 时,原则仍是:让订阅继续提供机场 proxies,覆写文件只追加不与订阅键冲突的片段。若你的发行版对 proxies 数组合并是「追加」语义,可在 mixin 顶层写:

# mixin.yaml fragment — verify merge semantics for your Mihomo build
proxies:
  - name: vps-tokyo-hy2
    type: hysteria2
    server: 203.0.113.10
    port: 443
    password: "replace-me"

proxy-groups:
  - name: "✈️机场+VPS"
    type: select
    proxies:
      - PROXY
      - vps-tokyo-hy2

若你发现启用 mixin 后订阅节点变短或策略组被覆盖,几乎可判定发生了字典合并下的同名键替换数组整表替换。此时应回到图形客户端的 append-proxies 管道,或把 VPS 单独放到 proxy-providers 本地文件再在组里用 use 引用 provider 名称(进阶路径,适合批量节点)。headless 部署可参考 《Clash Meta Linux systemd 指南》 的工作目录与重启习惯,每次改 mixin 后看 journal 是否仍有校验错误。

YAML 缩进与 !include:常见「写对了却无效」

Clash 系配置对缩进极其敏感:proxies 下列表的每一项应以两个空格缩进在短横线后;嵌套字段再递增两级。把从博客或聊天里复制的片段直接粘进编辑器时,常混进 Tab 或四空格与二空格混用,解析器会报行号错误或静默忽略某段。

若使用 !include 拆文件,记住被引用文件顶部通常不要再重复根键层级错误——例如被 include 的文件若直接以列表开头,则引用点要在父键里正确对齐。调试时优先在「最终合并结果」里搜索你的 vps- 前缀名:搜不到说明片段没进合并链;搜得到但 UI 灰掉,多半是类型字段或 TLS 相关键与服务端不匹配,与合并无关。

现象 优先检查
保存后启动失败,提示 proxy 不存在 策略组引用名与 proxies[].name 是否完全一致;组是否排在节点声明之后合并
订阅更新后 VPS 没了 VPS 是否误写在订阅缓存文件中;应迁到 Merge/mixin 的 append-proxies
两个节点同名,行为诡异 机场批量重名或你用了常见词;改用长且唯一的前缀名

订阅刷新后的验证清单

建议截图留存前后对比

  1. 在 UI 打开「运行时完整配置」或等价导出,搜索你的 VPS name 字段,确认只出现一次且字段完整。
  2. 在同文件中搜索你的并存策略组,确认 proxies: 列表里机场名仍在、VPS 名已插入。
  3. 手动执行一次「更新订阅」,重复前两步;VPS 段应保持稳定,仅机场段落变化。
  4. 在日志中分别选机场节点与 VPS 节点访问同一测试站,确认策略命中与延迟符合预期。
  5. 若使用 url-test 自动组,核对 toleration、lazy 与健康检查 URL 没有把 VPS 误踢出;可读 《url-test 与 fallback》 对照参数。

常见问题

机场里已经有一个和我 VPS 同名的节点

改掉你的 VPS name,不要赌后合并覆盖前合并。引用链里后出现的同名定义若被内核拒绝或合并去重,排错成本远高于一次性改名。

能不能让 VPS 也走 proxy-providers

可以:把 VPS 面板导出的 Clash 片段存成本地 YAML,用 type: file 的 provider 引用,再在组里 use: 该 provider。适合你有多台机器或脚本周期性改写;单台手动维护用 append-proxies 更直观。

路由器 OpenClash 上怎么做同类合并

思路相同:订阅归订阅,自定义节点与额外组放在不会被覆盖的覆写文件或插件提供的合并点。全屋场景可与 《OpenWrt OpenClash 订阅与全屋代理》 对照,注意路由器存储与定时更新的路径权限。

实操检查清单

  • VPS 节点定义已迁出订阅缓存,落在 Merge/mixin 的 proxies append/prepend 管道。
  • 所有 name 全局唯一,策略组引用与合并结果逐字一致。
  • YAML 无 Tab、缩进层级统一;大段粘贴后过一遍格式化校验。
  • 订阅刷新前后对「最终配置」做过 diff,确认 VPS 段未被冲掉。
  • 规则层若需指向新组,已用 prepend/append-rules 调整好相对顺序。

从可维护的客户端开始

当「机场列表会自动变、VPS 由你掌控」的两股数据流分开存放后,日常只需要给 VPS 换 IP 或端口时改覆写层一小段,而不用在几十个机场节点里翻找粘贴位置。选一个对「合并预览」支持好的 Clash Meta 系客户端,把这套流程固定下来即可。

立即免费下载 Clash,开启流畅上网新体验

机场订阅与 VPS 同一策略组

用 append-proxies 与 append-proxy-groups 明确拼接,订阅刷新只动机场段。

下载 Clash