「mixin」在中文圈到底指什么

你在搜索引擎里输入 mixinprofile 覆写,结果里往往混着三类内容:内核文档里的 profile:、桌面客户端文档里的 Merge(覆写)、以及旧教程里把「订阅转换器输出 + 手工片段」统称为 mixin。先把名词对齐,后面步骤才不会改错文件。

Clash Meta / Mihomo 内核而言,profile: 下常见选项包括 store-selected(把你在面板里选中的策略组节点写回本地,下次启动复用)与 store-fake-ip(缓存 Fake-IP 映射)。它们解决的是运行时状态要不要落盘,不是「把第二份 YAML 合并进订阅」——后者通常由客户端在生成最终配置时完成。字段语义以 MetaCubeX Wiki · 全局配置 与你当前内核版本为准。

Clash Verge Rev 用户来说,界面里的 Merge 配置更接近大家口头说的 mixin:在订阅/配置源生成的主 YAML 之上,追加 prepend-rulesappend-rules,或直接写入与主配置同结构的字段来覆盖原文件中的块(例如整段 dns:)。官方说明见 Clash Verge Rev · Merge 配置。如果你还在选客户端,可先读 如何选择适合自己的 Clash 客户端,确认图形界面是否提供可控的覆写链与预览。

内核侧:profile: 与持久化(Mihomo)

当你抱怨「每次重启策略组又跳回默认节点」时,首先要看的是内核是否允许把选择写回磁盘,而不是急着加第二份 YAML。典型写法如下(示意,键名以你的版本为准):

YAML — profile persistence excerpt (kernel)
profile:
  store-selected: true
  store-fake-ip: true

store-selected 解决的是「人机在面板上点选」的延续;它不会自动帮你合并两份订阅,也不会替代规则里的 MATCHstore-fake-ip 则与 Fake-IP 体验相关:同一域名重复连接时复用映射,减少抖动。若你同时在使用 TUN 与复杂 DNS,可把本文与 TUN 模式深度解析Meta DNS 与 fake-ip-filter 对照着看——否则容易出现「覆写里改了 DNS,但 TUN 劫持路径仍指向旧习惯」的错位感。

客户端侧:Merge 覆写链在干什么

可以把 Merge 理解成流水线:上游先生成一份「主配置」(往往来自订阅转换或远程模板),客户端再按你启用的 Merge 卡片顺序,一份接一份地改写这份主配置。Clash Verge Rev 文档强调:多份 Merge 按启用顺序链式执行,且修改后往往需要重新启用(禁用再启用或触发刷新)才会让卡片状态与生效路径一致。

Merge 支持两类能力:一是 prepend-* / append-* 系列,把规则、代理、策略组、Provider 插到主配置的前或后;二是在 Merge 文件里直接写与主配置相同结构的字段,用于覆盖已有键。第二类产品经理式的限制是:客户端自身要接管的部分(文档示例包括 mixed-portlog-levelexternal-controller 等)通常不允许被覆写成功——这不是你 YAML 写错,而是程序要保留对入口与日志的控制权。需要调 API 端口与面板时,可走 external-controller 与 Web 面板 那篇的独立段落,而不是死磕 Merge。

实测步骤一:拆出「基础配置」与「环境差异」

假设你在家与公司共用同一套机场订阅,但公司内网有一段 10.0.0.0/8 必须直连、家里没有;或家里路由器管理域名要进 fake-ip-filter,公司笔记本不需要。推荐做法是:主配置只保留通用逻辑(订阅、规则集、策略组骨架),把环境差异放进单独的 Merge 文件,用客户端按场景启用不同组合。

在动手前,先确认主配置里规则的末尾结构:绝大多数模板以 MATCH 收束。你后面所有「想插队」的例外规则,都必须出现在 MATCH 之前——这正是 prepend-rules 存在的意义。规则顺序总原则仍建议对照 规则分流最佳实践,避免「一条过宽的 GEOIP 抢跑」让覆写永远进不了命中路径。

订阅本身的健康度决定你有没有资格谈覆写:远端拉不下来、proxy-providers 全空时,本地 Merge 再漂亮也无节点可用。维护习惯可参考 订阅管理与节点维护

实测步骤二:用 prepend-rules 做多环境分流补丁

官方文档特别提醒:自定义规则应优先使用 prepend-rules,而不是 append-rules——因为主配置常以 MATCH 结尾,追加在 MATCH 之后的规则永远不会被评估,表现为「我明明写了规则却完全不生效」。下面是一份示意 Merge(策略组名请换成你主配置里真实存在的名字):

YAML — Merge: corporate LAN direct (illustrative)
prepend-rules:
  - IP-CIDR,10.0.0.0/8,DIRECT,no-resolve
  - DOMAIN-SUFFIX,corp.example,DIRECT

prepend-rule-providers: {}
prepend-proxies: []
prepend-proxy-providers: {}
prepend-proxy-groups: []

append-rules: []
append-rule-providers: {}
append-proxies: []
append-proxy-providers: {}
append-proxy-groups: []

家里那份 Merge 可以删掉公司段、换成打印机网段或 NAS 域名;两份文件不要复制粘贴整份主配置,只保留差异,日后 diff 才读得懂。Windows 上若同时用图形客户端,首次搭环境可对照 Clash Verge Rev 与 Windows 11 实测,把「系统代理 / TUN / Merge」三者的生效范围一次理清。

实测步骤三:用整段 dns: 覆盖修正解析

Merge 允许你像写主配置一样覆盖 dns: 块,例如在公司网络关闭 IPv6、替换 nameserver、收紧 fake-ip-filter。这与「只在规则里改 DOMAIN」不同:解析路径变了,后面策略组看到的 IP 与命中也会变。更系统的 DNS 字段说明见 Clash Meta DNS 详细步骤

YAML — Merge: dns override excerpt (illustrative)
prepend-rules: []
prepend-rule-providers: {}
prepend-proxies: []
prepend-proxy-providers: {}
prepend-proxy-groups: []
append-rules: []
append-rule-providers: {}
append-proxies: []
append-proxy-providers: {}
append-proxy-groups: []

dns:
  enable: true
  ipv6: false
重复顶层键:若主配置已经有一份 dns:,Merge 的覆盖行为依赖客户端合并实现;若你同时在主文件手工维护大段 dns,又在外层订阅里再出现一次 dns,YAML 解析器往往只保留后者,表现为「某段突然消失」。合并后应用内置「预览最终配置」或在日志里确认实际加载结果,比凭记忆可靠。

多份 Merge 的链式顺序与重新启用

当你把「通用补丁」「公司补丁」「临时调试补丁」拆成多张 Merge 卡片时,要记住它们是有序流水线:前一张的输出是后一张的输入。常见踩坑是:A 卡片覆写了 dns,B 卡片又在末尾写回一份默认 dns,最后生效的是后者;或调试卡忘记禁用,把生产环境规则悄悄改掉。

文档建议修改后重新启用 Merge;实务上你也可以养成习惯:每次大改后重启内核或重载配置,并在连接日志里找一个可控探针域名验证命中(例如公司内网解析是否仍直连)。这与 从日志读懂 timeout 与 TLS 里强调的「分层归因」一致——先证明覆写真的进了运行中配置,再怀疑节点。

profile 覆写「不生效」对照清单

  1. append-rules 插在 MATCH 之后:规则永远不命中,换成 prepend-rules 或调整主模板结构。
  2. 试图覆写客户端锁定字段:mixed-portexternal-controller 等,应在客户端设置里改,而不是 Merge。
  3. Merge 卡片未真正启用 / 未重新启用:界面状态与运行中配置不一致时,优先做一次禁用→启用或全量重载。
  4. 主配置重复键静默覆盖:合并订阅后只保留一段 dns / tun,需要多段时用客户端支持的 Merge,而不是复制粘贴多份顶层块。
  5. 环境变量或系统代理与 TUN 抢路径:覆写只改了 YAML,但操作系统仍把流量送到别的栈;对照 TUN 深度文 做 A/B。
与纯内核玩家的关系:若你不使用带 Merge 的 GUI,而是手写单文件 config.yaml,「mixin」对你而言可能就是手工 !include 或构建脚本拼接——原理仍是控制合并顺序避免重复键,只是少了可视化卡片。

结语

Clash Meta 场景下的 mixin / 覆写,本质是把稳定的部分留在主配置,把随场景变化的部分放进可切换的补丁链;内核 profile: 则负责把你在面板上做出的选择与 Fake-IP 映射持久化。三者分工清楚后,「在家能用、公司就炸」或「改完 YAML 像没改」这类问题,多半能收敛到顺序、MATCH、重复键与客户端锁定字段这几类可验证原因上。

相比在一份巨型配置里来回注释,维护多环境 Merge 更像在写小型「配置单元」:可读、可回滚、可对比。把 规则顺序DNSTUN 三条线对齐后,覆写层才不会变成「玄学补丁堆」。

立即免费下载 Clash,开启流畅上网新体验,在图形客户端里用 Merge 与运行时预览把「最终生效配置」看清,再谈多环境与账号切换。