先分清名称:客户端、内核与项目沿革
讨论 Clash 原版、Clash.Meta 和 mihomo 之前,先把“客户端”与“内核”拆开。内核负责读取 YAML 配置、建立代理连接、执行规则匹配、处理 DNS,并向图形界面提供控制接口。桌面客户端则负责订阅管理、配置切换、系统代理开关、日志查看和升级操作。用户看到的应用名称不一定等于它实际调用的内核名称,同一个图形客户端也可能在不同版本中更换内核。
通常所说的 Clash 原版,指 Dreamacro 维护的经典 Clash 开源内核及其配置体系。它确立了代理节点、策略组、规则、外部控制器等核心结构,许多订阅转换服务和图形客户端都以这套格式为基础。历史上还存在功能范围不同的 Premium 构建,因此只看到“Clash”字样时,不能仅凭名称断定具体支持哪些字段。
Clash.Meta 最初是兼容 Clash 配置思路的扩展内核,增加了更多代理协议、DNS 选项、规则能力和透明代理相关功能。后来项目正式使用 mihomo 作为名称。可以把 Clash.Meta 与 mihomo 理解为同一条项目演进路线中的前后称呼,而不是两个完全独立、需要二选一的新内核。旧教程里的 Meta 配置、旧客户端里的 Meta Core,很多时候对应的就是今天的 mihomo 系列。
原版 Clash 项目停止活跃维护后,生态并没有随名称一起停止。订阅格式、规则语法和控制接口仍被大量软件沿用,而持续更新的客户端逐渐转向 mihomo。现在进行新安装或长期部署时,重点不应是寻找名称最早的版本,而应确认维护状态、平台适配、所需协议和配置字段是否匹配。
功能覆盖:共同基础与 mihomo 扩展
两类内核的共同基础包括 YAML 配置、代理节点、策略组、域名与 IP 规则、DIRECT 与 REJECT 动作、HTTP/SOCKS 混合端口以及外部控制接口。对于仅包含常见节点、简单策略组和基础规则的配置,用户可能感受不到明显差异。差异通常在订阅包含新协议、启用复杂 DNS、使用 TUN 模式或加载远程规则集时出现。
代理协议与传输参数
原版 Clash 支持其维护时期覆盖的主流协议,但后续出现的新协议、加密方式和传输扩展不会自动获得支持。mihomo 在兼容传统配置的基础上持续增加协议实现和参数选项。若订阅中的节点被标记为“不支持的类型”,或日志提示代理字段无法解析,首先需要核对内核,而不是反复重新导入同一条订阅。
协议数量并不是唯一判断标准。即使节点类型相同,不同内核对 TLS 指纹、UDP、复用、传输层和证书相关参数的支持范围也可能不同。选型时应按实际订阅生成的字段检查,而不是只看节点名称是否显示在列表里。节点能够出现在界面中,也不等于连接参数已经被完整识别。
DNS 与规则系统
经典 Clash 配置已经具备域名规则、IP 规则、GEOIP、规则提供器等常用结构。mihomo 在此基础上提供更丰富的 DNS 处理方式、规则集合能力和匹配选项,适合需要区分国内外解析、处理 Fake IP 例外、加载大型规则集或精细控制流量的配置。具体字段会随内核版本调整,因此应以当前内核文档和启动日志为准。
规则能力增加后,配置错误也更容易被隐藏在长文件里。例如规则集名称已经声明,但引用路径不可访问;DNS nameserver 可以连接,却被当前路由规则再次送入代理形成循环;规则顺序正确,却因前面的广泛匹配而永远到不了后面的细分项。内核升级不能替代规则审查,日志中的匹配结果仍是主要依据。
TUN 与透明代理
系统代理主要影响主动读取操作系统代理设置的应用。TUN 模式则通过虚拟网络接口接管更广范围的 IP 流量,适合不遵循系统代理、需要 UDP 或希望统一处理应用流量的场景。原版不同构建的 TUN 能力并不完全一致,而 mihomo 持续维护 TUN 栈、路由、DNS 劫持及平台相关选项,因此现代桌面客户端和网关部署通常更倾向使用 mihomo。
TUN 并不等于安装后自动更快。它会引入权限、路由表、虚拟网卡、防火墙和 DNS 链路等额外变量。只浏览网页且应用遵循系统代理时,系统代理往往更容易维护;游戏、命令行程序、沙盒应用或无法单独设置代理的软件需要接管时,再启用 TUN 更合适。
配置兼容:基础配置常可读取,扩展字段不能反向保证
mihomo 的设计目标之一是承接 Clash 配置生态,因此传统的端口、节点、策略组和规则结构通常可以直接读取。兼容关系更接近“新内核读取旧格式”,而不是任意方向完全等价。配置一旦使用 mihomo 专属协议、规则类型、DNS 字段或 TUN 参数,再交给原版内核时,可能出现启动失败、未知字段被忽略、节点缺失或行为改变。
下面是一段偏基础的结构示例。它展示节点、策略组与规则之间的引用关系,不代表可直接投入生产;服务器地址和认证信息需要由实际订阅提供。
mixed-port: 7890
mode: rule
log-level: info
proxies:
- name: example-node
type: socks5
server: 192.0.2.10
port: 1080
username: demo
password: demo
proxy-groups:
- name: PROXY
type: select
proxies:
- example-node
- DIRECT
rules:
- DOMAIN-SUFFIX,example.org,PROXY
- GEOIP,CN,DIRECT
- MATCH,PROXY
迁移此类配置时,最先检查的不是缩进以外的视觉差别,而是引用链:策略组中的节点名称必须与节点定义完全一致,规则末尾的策略名必须真实存在,远程提供器的名称也要与策略组或规则引用对应。YAML 对缩进敏感,Tab 与空格混用、冒号后缺少空格、同级字段缩进不齐都会导致载入失败。
订阅链接不等于固定内核格式
订阅服务可能根据客户端请求头、链接参数或转换模板返回不同内容。同一条订阅地址,在一个客户端中可能得到 Clash 基础格式,在另一个客户端中可能得到包含 mihomo 扩展字段的配置。迁移客户端后出现节点数量变化,不能直接认定订阅失效,应先导出配置并比较节点类型、代理提供器、策略组和规则集字段。
部分客户端只保存订阅入口,更新时会覆盖本地编辑。若需要添加规则,应确认客户端是否提供覆写、扩展脚本或合并配置功能。直接修改缓存文件通常只能维持到下一次订阅更新。内核负责解释最终配置,客户端则决定订阅如何下载、转换和合并,这两个环节要分别排查。
控制接口通常相似,管理界面仍需匹配
许多 Clash 管理面板通过外部控制器读取代理、连接、规则和日志。mihomo 延续了大量常用接口,所以旧面板可能继续工作,但新增功能未必能在旧界面中完整展示。若内核正常运行而界面看不到某类设置,可能是客户端或面板尚未实现对应控制项,并非内核配置无效。
场景选型:桌面、服务器与旧配置分别判断
新装桌面客户端
Windows、macOS 或 Linux 桌面环境进行全新安装时,优先选择仍在维护并明确采用 mihomo 内核的客户端。这样更容易获得新协议支持、近期系统适配和持续修复。选择安装包时还要核对操作系统版本与 CPU 架构,例如 x64、ARM64 不能仅凭文件大小判断。
桌面用户若只需要导入订阅、选择策略组并开启系统代理,不必为了“功能更多”立即修改高级配置。先使用客户端生成的默认端口和 DNS 设置,确认浏览器访问、规则切换与断开恢复正常,再按需要开启 TUN。减少首次配置变量,故障定位会更直接。
服务器、路由器与容器部署
服务器或旁路网关通常没有完整图形界面,内核本身的架构构建、启动参数、配置路径和服务管理方式更重要。mihomo 适合需要规则集、透明代理、远程控制和持续更新的部署,但必须同时处理运行权限、转发规则、DNS 入口与日志轮转。容器中启用 TUN 时,还需要向容器提供相应设备与网络权限。
网关场景应避免直接照抄桌面配置。桌面上的监听地址可能只绑定本机,放到局域网后需要明确允许的接口与访问控制;外部控制器也不应在缺少认证和网络限制的情况下暴露。规则数量较大时,还要关注启动时间、内存使用和远程规则更新失败后的行为。
仍在稳定运行的原版配置
一套原版 Clash 配置如果功能简单、运行环境固定且当前连接稳定,不需要仅因名称变化立刻重写。更稳妥的做法是在隔离目录中准备 mihomo,复制配置进行语法检查与并行验证,确认节点、策略组、DNS 结果和规则命中一致后再切换服务。
继续使用旧内核的主要限制是后续协议与系统变化无法得到持续适配。订阅提供方一旦更换节点类型,旧内核可能突然无法解析;操作系统升级后,旧客户端也可能出现权限、托盘、虚拟网卡或签名兼容问题。因此可以保留可用配置,但应同时准备迁移路径。
必须依赖旧字段或旧客户端
某些自动化脚本、控制面板或嵌入式设备只针对固定 Clash API 与文件布局开发。此时应先确认依赖点:是配置语法、控制接口、二进制名称,还是启动参数。mihomo 可以通过适当参数和路径安排兼容不少流程,但不能假设所有外围工具都无需调整。先在测试端口运行,避免与现有控制器和监听端口冲突。
从 Clash 原版迁移到 mihomo:逐项检查
- 记录现状。保存原配置、订阅地址、客户端版本、内核版本、监听端口和当前启用的代理模式。若问题出现,可以准确回退并比较。
- 选择匹配构建。核对操作系统和 CPU 架构。桌面客户端应确认其内置内核类型;命令行部署则确认下载的是对应平台的 mihomo 可执行文件。
- 先做配置验证。不要第一步就替换正在运行的服务。使用新内核检查 YAML,处理未知代理类型、重复端口、缺失策略组和无法读取的提供器。
- 查看启动日志。重点关注配置解析、规则集下载、DNS 监听、外部控制器、TUN 设备和端口占用。日志到达“已启动”不代表所有远程资源都加载成功。
- 验证策略组。逐个检查手动选择、自动测速、故障转移等策略组是否包含预期节点。订阅转换后,节点名称变化可能使旧引用失效。
- 验证 DNS。分别检查国内域名、代理目标域名和纯 IP 连接。若浏览器可打开而命令行失败,或域名失败但 IP 可通,应优先检查 DNS 监听与劫持链路。
- 最后启用 TUN。确认系统代理模式工作正常后,再测试虚拟网卡接管。出现全局断网时,检查管理员权限、默认路由、DNS 劫持、其他 VPN 软件和防火墙规则。
常见迁移错误
- 客户端升级了,但实际内核仍停留在旧版本,界面版本号与内核版本号被混为一谈。
- 把 Meta 和 mihomo 当作两套互不相关的格式,重复转换订阅,导致策略组或规则被二次加工。
- 直接把 mihomo 专属字段复制回原版 Clash,配置载入时才发现类型或参数不受支持。
- 只测试首页能否打开,没有检查规则命中、UDP、DNS、局域网访问和断开后的网络恢复。
- 在系统代理与 TUN 同时开启后发生异常,却未分别测试两条接管路径。
若新内核启动后完全没有网络,先把模式切回规则模式下的基础配置,并暂时关闭 TUN。确认混合端口监听、节点握手和策略组选择无误,再逐项恢复 DNS 增强与规则集。分层启用比一次导入全部高级选项更容易定位问题。
结论:新部署优先 mihomo,旧配置按需求迁移
Clash 原版建立了今天仍广泛使用的配置与规则基础;Clash.Meta 是扩展路线的旧称,mihomo 是这条路线当前使用的项目名称。三者之间不是简单的版本号高低关系,而是维护阶段、功能范围与生态承接关系。
新装桌面客户端、需要现代协议、复杂 DNS、规则集或 TUN 的用户,通常应选择明确采用 mihomo 且持续维护的客户端。已有原版配置若长期稳定,可以先保留,再通过测试环境完成迁移。判断是否适合的可靠标准不是名称,而是当前内核能否完整解析订阅、正确执行规则、适配操作系统,并提供可持续的更新路径。
安装完成后,先核对内核信息,再导入订阅;先验证系统代理,再按场景启用 TUN;先读启动日志,再修改高级字段。按这个顺序操作,原版、Meta 与 mihomo 的名称差异就不会成为排障障碍。