Clash、mihomo、Verge 到底什么关系:开源生态项目脉络梳理

从原始 Clash 内核到 mihomo 延续维护,再到 Verge、ClashX 等图形客户端,梳理各项目的定位、维护状态与相互依赖关系,帮你在选择客户端前看清整个生态。

先分清三层:内核、图形客户端与配置

理解 Clash 生态最有效的方法,不是记住一串相似名称,而是先把软件拆成三层。最底层是代理内核,负责读取 YAML 配置、建立代理连接、匹配规则、执行 DNS 查询以及接管系统流量。中间层是图形客户端,负责订阅管理、托盘菜单、系统代理开关、日志展示和更新操作。最上层则是配置与订阅,其中包含节点、策略组、规则和 DNS 参数。

原始 Clash 与 mihomo 属于内核层。Clash Verge、Clash Verge Rev、ClashX、FlClash 等名称通常指图形客户端。订阅链接则是配置来源,既不是内核,也不是某个固定客户端的组成部分。同一份基础配置可能被多个客户端载入,但能否完整运行,取决于底层内核是否支持其中使用的字段。

代理内核
解析配置并转发流量。常见名称包括原始 Clash、Clash.Meta 与后续的 mihomo。
图形客户端
为内核提供窗口、托盘、订阅管理、系统代理和 TUN 开关,本身不等同于代理协议实现。
订阅与配置
以 YAML 或订阅响应形式提供节点、策略组、规则、DNS 与流量接管参数。

从原始 Clash 到 mihomo 的项目脉络

原始 Clash:配置语法与规则模型的起点

由 Dreamacro 开发的原始 Clash 奠定了今天仍被广泛使用的配置结构:以 proxies 定义节点,以 proxy-groups 组织选择与自动测试,再由 rules 按顺序决定流量去向。常见的 DOMAIN-SUFFIXIP-CIDRGEOIP 和末尾兜底规则,都来自这套模型。

原始开源 Clash 的常见最终版本标识为 v1.18.0。另有曾经单独发布的 Clash Premium 构建,公开版本可见 2023.08.17。原项目在 2023 年停止持续维护后,它仍然具有重要的配置兼容意义,但已不适合作为观察新协议、新规则能力和新平台修复的唯一依据。

Clash.Meta:兼容基础上的功能扩展

Clash.Meta 最初可以理解为兼容 Clash 配置体系的扩展内核。它保留常见的策略组与规则写法,同时持续加入更完整的 TUN、DNS、规则集和协议支持。很多配置中的 rule-providersfake-ip-filter、进程匹配以及更细的网络栈选项,在 Meta 系内核上有更积极的维护。

这里的“兼容”不代表所有方向都能互换。基础 Clash 配置通常可以被 mihomo 读取,但使用 mihomo 扩展字段的配置,放回旧版原始 Clash 时可能出现“字段无法识别”“代理类型不支持”或配置载入失败。迁移时应把兼容关系理解为从旧语法向新内核较顺畅,而不是双向完全一致。

mihomo:Clash.Meta 的后续名称

Clash.Meta 后续更名为 mihomo,项目由 MetaCubeX 社区继续维护。名称变化没有把它变成另一套完全不同的配置体系:不少客户端、配置转换工具和日志页面仍会保留 Meta、Clash Meta 或 Meta Core 等旧称。看到这些词时,通常需要结合具体版本号判断,而不是把它们当作三个互不相关的内核。

因此,当前常见链路可以概括为:原始 Clash 提供基础配置模型,Clash.Meta 在兼容基础上扩展能力,mihomo 延续 Clash.Meta 的开发。客户端若标注“mihomo 内核”,通常意味着它面向这条仍在更新的分支。

Verge、ClashX 与 Clash for Windows 分别是什么

项目 所在层级 典型平台 核心关系 选择时关注点
Clash 内核 命令行、多平台构建 原始项目 已停止持续维护,主要用于理解基础兼容
Clash.Meta / mihomo 内核 Windows、macOS、Linux、移动端 Meta 后续更名为 mihomo 版本更新、配置扩展、TUN 与 DNS 能力
Clash Verge 桌面图形客户端 Windows、macOS、Linux 通过内核执行代理功能 原项目维护状态与后续分支需要分开判断
Clash Verge Rev 桌面图形客户端 Windows、macOS、Linux 通常配合 mihomo 内核版本、服务模式、TUN 权限与系统兼容性
ClashX macOS 图形客户端 macOS 封装 Clash 系内核 系统版本、内核年代与配置字段兼容性
Clash for Windows 桌面图形客户端 Windows、macOS、Linux 历史上集成 Clash 系内核 最终常见版本为 0.20.39,项目已停止更新

Clash Verge 与 Clash Verge Rev

Clash Verge 是采用桌面 Web 技术构建的跨平台图形客户端,负责订阅、策略选择、系统代理和配置编辑。原 Clash Verge 项目停止活跃后,Clash Verge Rev 作为后续维护分支延续了相近的操作方式。两者名称接近,但发布仓库、版本序列和维护状态并不相同,下载时不能只看应用图标。

在 Clash Verge Rev 中,用户通常可以从「设置」→「Clash 设置」查看端口、外部控制器和内核相关参数,从「设置」→「系统设置」管理开机启动或服务模式。不同版本的翻译可能略有调整,但“设置页中的内核版本”比安装包名称更能说明实际能力。启用 TUN 时,Windows 往往还需要安装并启动服务模式,macOS 则需要完成系统权限授权。

ClashX:面向 macOS 的菜单栏客户端

ClashX 的重点是 macOS 菜单栏体验。它把配置切换、策略组选择、系统代理与日志入口放进状态栏菜单,适合以系统代理为主要接管方式的使用场景。ClashX、ClashX Pro 以及社区延续版本不能只凭名称判断功能,需要分别确认其内核类型、最后更新时间和对当前 macOS 的支持情况。

旧版 ClashX 能读取许多经典 Clash 配置,但遇到仅由 mihomo 支持的协议、规则集行为或 DNS 字段时,可能无法完整载入。若订阅说明明确要求 Meta 或 mihomo 内核,应选择明确集成对应内核的客户端,而不是通过反复删字段让旧客户端勉强启动。

Clash for Windows:历史影响大,但不再更新

Clash for Windows 常缩写为 CFW,是很多用户最早接触的桌面客户端。它提供 Profiles、Proxies、Connections、Logs 和 Settings 等页面,并推广了“订阅导入后直接切换策略”的桌面操作方式。其最终常见发布版本为 0.20.39,项目已于 2023 年停止更新。

还需要澄清一点:Clash for Windows 并不是完整开源的图形客户端,不能因为名称里包含 Clash 就把它与原始开源内核视作同一个项目。如今继续使用旧安装包会面临新系统适配、内核能力和问题修复停滞等限制。新装环境更适合选择仍有维护记录、并明确说明所用内核的客户端。

一份订阅为何在不同客户端里表现不同

订阅能否导入只是第一关。客户端拿到订阅内容后,还要交给内核解析。即使两个界面都显示“Clash 配置”,底层内核版本、覆写逻辑、DNS 实现和流量接管方式不同,最终结果也可能不同。常见差异主要集中在以下四处。

配置字段与代理协议支持

  • 基础字段如 mixed-portproxiesproxy-groupsrules 兼容范围较广。
  • 新协议参数、规则集合行为和高级 DNS 选项通常要求较新的 mihomo 内核。
  • 客户端可能在订阅原文之外追加本地覆写,例如更换端口、启用局域网访问或插入 TUN 配置。
  • 同名策略组可以由订阅生成,也可能被客户端脚本修改,排查时要区分远程原文与最终运行配置。

系统代理与 TUN 接管范围不同

系统代理一般把 HTTP 与 SOCKS 代理地址写入操作系统设置。常见本地混合端口是 127.0.0.1:7890,应用必须读取系统代理或手动指定该端口,流量才会进入内核。游戏、部分命令行程序和自行实现网络栈的应用可能绕过系统代理。

TUN 模式则通过虚拟网络设备接管更多 IP 流量。它更依赖系统权限、路由表、DNS 劫持与网络栈设置。两个客户端即使使用相同 mihomo 版本,只要一个成功安装服务组件、另一个没有获得权限,TUN 表现就会不同。判断问题时应先看日志里是否出现 TUN 设备创建成功,再检查规则命中,不要把权限失败误判为节点失效。

mixed-port: 7890
external-controller: 127.0.0.1:9090
secret: "change-this-controller-secret"

tun:
  enable: true
  stack: mixed
  auto-route: true
  auto-detect-interface: true

rules:
  - DOMAIN-SUFFIX,example.com,DIRECT
  - GEOIP,CN,DIRECT
  - MATCH,PROXY

上面的 7890 是代理入口,9090 是外部控制接口,二者用途不同。外部控制接口用于客户端界面查询连接和切换策略,不应被浏览器当作 HTTP 代理端口。若客户端已经自动生成控制密钥,应保留其生成值,避免界面与内核失去连接。

DNS 策略会改变规则匹配结果

Clash 系内核可根据域名、IP 地址和规则顺序决定去向。在 fake-ip 模式下,内核先给应用返回保留地址,再维护域名映射以完成后续规则匹配。若客户端修改了 enhanced-modenameserverfake-ip-filter,相同规则也可能呈现不同结果。

排查时可以在客户端的「日志」页面把级别调整为 info,分别访问一个国内域名、一个需要代理的域名和一个纯 IP 地址。连续观察至少 30 秒,确认三类请求分别命中预期策略。若域名规则正常而纯 IP 流量绕过,优先检查 TUN 或系统代理接管范围;若全部进入兜底策略,再检查规则顺序与 DNS 映射。

如何判断一个项目当前是否值得使用

项目名称只能说明来源,不能直接代表当前状态。选择客户端时应同时检查发布记录、内核来源、系统适配和配置兼容。一个界面仍能打开,不等于它能妥善处理当前订阅中的所有字段。

  1. 查看最近发布记录。确认正式版本的发布日期、版本说明和支持系统,不要只看仓库是否还能访问。
  2. 确认内核名称与版本。优先选择能在「设置」→「关于」或「设置」→「Clash 设置」中明确展示 mihomo 版本的客户端。
  3. 核对操作系统架构。Windows 常见为 x64 与 ARM64,macOS 需要区分 Apple Silicon 与 Intel,Linux 还要确认 AppImage、deb、rpm 或命令行部署方式。
  4. 检查权限机制。需要 TUN 时,确认客户端是否提供服务模式、管理员权限说明或 macOS 网络扩展授权流程。
  5. 验证订阅要求。如果配置提供方注明需要 mihomo、Meta 或特定协议支持,就不要选用只集成旧版原始 Clash 的客户端。
  6. 保留可回退配置。更新客户端或内核前导出当前可用配置,记录系统代理端口、覆写项与 DNS 设置。

从旧客户端迁移到 mihomo 客户端

从 Clash for Windows、旧 ClashX 或早期 Verge 迁移时,最稳妥的方式是把订阅和本地设置分开处理。先在新客户端导入原始订阅,确认基础代理可用,再逐项恢复覆写、TUN、局域网访问和自定义规则。直接复制整个旧配置目录,容易把缓存、旧内核路径和已失效的控制器设置一起带过去。

迁移前记录五项参数

  • 当前订阅地址及更新时间,同时确认订阅仍可正常刷新。
  • 代理入口端口,常见为混合端口 7890,也可能分别使用 HTTP 7890 与 SOCKS 7891
  • 当前模式是 Rule、Global 还是 Direct,以及默认策略组选择。
  • 是否启用 TUN、局域网连接、IPv6 和自定义 DNS。
  • 本地增加的规则、脚本或配置覆写,这些内容通常不会包含在远程订阅中。

按三轮测试确认迁移结果

  1. 第一轮只开系统代理。关闭 TUN,选择 Rule 模式,分别打开国内站点与需要代理的站点,确认日志出现对应规则和策略组。
  2. 第二轮测试订阅刷新。手动更新一次配置,等待页面显示更新时间,再确认策略组选择没有被意外重置。
  3. 第三轮启用 TUN。启动服务模式或完成系统授权,测试一个不读取系统代理的命令行程序。可使用 curl --connect-timeout 10 https://example.com 限定 10 秒连接超时,并对照客户端连接列表。

若第一轮成功而第三轮失败,问题通常位于 TUN 权限、路由或 DNS,不必重新更换订阅。若配置导入阶段已经报错,则应查看首条解析错误,确认具体字段是否要求 mihomo。若只有个别节点失败,再对比协议参数与服务端状态。

用一张关系图记住整个生态

Clash 生态并不是“一个软件换了很多名字”,而是一组共享配置理念、又由不同团队维护的项目。原始 Clash 是基础内核;Clash.Meta 在其配置模型上扩展能力;Clash.Meta 后续以 mihomo 名称持续开发。Clash Verge Rev、ClashX 等项目位于图形客户端层,通过集成内核完成实际代理工作。订阅则位于配置层,可以在兼容客户端之间迁移。

订阅与 YAML 配置
        │
        ▼
图形客户端
Clash Verge Rev / ClashX / 其他客户端
        │
        ▼
代理内核
mihomo(原 Clash.Meta)
        │
        ▼
规则匹配 / DNS / 系统代理 / TUN / 连接转发

选择时可以把问题压缩成三个:客户端是否仍在维护,它集成什么内核,当前订阅是否依赖该内核的扩展能力。回答这三个问题后,名称相似带来的混乱会明显减少。对于新安装环境,优先关注仍有发布记录、明确集成 mihomo、并能适配当前操作系统权限机制的客户端;对于已有稳定环境,则应先记录配置与端口,再分阶段迁移。

下载 Clash 客户端 按平台查看可选版本