Clash 开源生态梳理:原版内核、mihomo 与各图形客户端的关系与选择

从原版 Clash 内核到 mihomo 的演进,再到 Clash Verge Rev、FlClash 等图形客户端各自的定位,一张脉络图讲清项目之间的继承关系与当前的选型建议。

A-01项目脉络的起点:原版 Clash 内核

要看懂今天市面上五花八门的 Clash 类客户端,得先回到脉络的起点。最早的 Clash 是一个用 Go 语言编写的规则化代理内核,只提供命令行程序与一份 YAML 配置文件,负责解析订阅、匹配分流规则、管理代理节点,本身不带任何图形界面。这个内核奠定了整套生态的基础语法:proxies 声明节点、proxy-groups 组织策略组、rules 定义分流顺序,后续几乎所有分支与客户端都延续了这套配置结构,这也是为什么不同来源的订阅链接大多能在不同客户端之间通用。

原版内核的开发在 2023 年年中之后陷入停滞,仓库长期没有新版本发布,一些较新的协议特性与规则写法也没有跟进。这不代表原版内核"不能用",很多历史配置文件仍然能正常工作,但意味着它已经不再是社区维护的主线,新特性、协议支持与安全修复都不会再落到这个版本上。

注意 NOTE 原版 Clash 内核已停止更新,如果客户端说明页仍标注基于"原版内核",建议优先确认是否有替代的活跃分支,长期看这类客户端的协议兼容范围会逐渐落后。

A-02分支演进:Clash Meta 与 mihomo 的关系

原版内核维护放缓之后,社区里出现了多个分支项目,其中影响最大的是 Clash Meta。这个分支在原版基础上补充了 TUN 模式的稳定实现、更完整的规则语法(如 RULE-SET、进程级规则)、更多协议支持(如 Hysteria、TUIC 等新型代理协议),迅速成为大多数图形客户端底层默认调用的内核。

Clash Meta 后来正式改名为 mihomo,这不是另起炉灶重写一个新项目,而是同一条开发脉络的延续与品牌重新命名。目前主流的图形客户端底层普遍捆绑的是 mihomo 内核,而不是原版 Clash 内核,这也是为什么很多客户端设置页里能看到"内核版本"一栏显示的其实是 mihomo 的版本号而非"Clash"字样。理解这一层关系,能帮助你看懂客户端更新日志里出现的"升级内核到 mihomo x.x.x"这类描述,它指的正是底层引擎的迭代,而不是客户端界面本身的改动。

换个角度说,mihomo 相当于整套生态目前实际在跳动的"心脏",各个图形客户端则是包裹在这颗心脏外面的"外壳",负责把内核的能力转化成用户可以点按、可以查看的界面操作。搞清楚这一点后再去看后面的客户端对比,会容易理解得多。

A-03图形客户端盘点:界面各异,内核趋同

图形客户端解决的是配置文件编辑门槛高的问题,把订阅导入、节点切换、规则查看这些操作做成可视化界面。不同客户端在界面框架、操作习惯、附加功能上差异很大,但底层调用的内核基本都指向 mihomo 或其早期形态。以下按几类典型客户端说明各自定位。

客户端类型典型代表底层内核定位说明
跨平台桌面客户端Clash Verge Revmihomo基于 Tauri 框架构建,界面轻量,配置项暴露较完整,适合需要精细调参的用户
移动端客户端FlClashmihomo跨 Android/桌面的 Flutter 客户端,界面风格统一,移动端操作习惯友好
macOS 原生客户端ClashX Meta 系列Clash Meta / mihomo贴合 macOS 菜单栏交互习惯,操作路径简短
已停止维护的历史客户端Clash for Windows原版 Clash 内核曾长期是 Windows 端主流选择,项目已停止更新,不建议继续作为长期选择

需要特别提醒的是最后一类。Clash for Windows 在很长一段时间里几乎是 Windows 平台的代名词,但这个项目已经停止维护,仓库不再合并新的提交,底层内核也停留在较早版本。继续使用它并不会立刻"坏掉",但会逐渐遇到新协议节点无法识别、部分规则语法不支持等问题,而且缺乏安全维护也是长期风险。目前 Windows 平台上活跃维护、社区反馈较多的替代选择集中在基于 mihomo 内核的新一代客户端上。

说明 客户端项目更迭速度较快,是否"活跃维护"最直接的判断方式是查看项目仓库最近一次发布版本的时间与更新日志内容,而不是只看软件名称是否熟悉。

为什么界面不同,配置文件却能互通

这背后正是前面提到的继承关系起作用:大多数客户端调用的都是同一套 mihomo 内核解析逻辑,配置文件遵循的是同一套 YAML 语法规范。所以同一份订阅链接,理论上可以在 Clash Verge Rev、FlClash 等不同客户端之间切换使用,不需要重新生成订阅,只是界面呈现方式、可调节的参数选项数量有所差异。也正因为如此,选择客户端时更多是在权衡界面风格与平台适配,而不需要过度担心"配置能不能用"的问题。

A-04当前选型建议:按平台与需求划分

结合前面的脉络梳理,给出几条实际选型的参考方向:

  1. Windows 与 macOS 桌面端优先考虑基于 mihomo 内核、仍在活跃更新的客户端,界面偏轻量、配置项暴露完整的选项更适合需要手动调整规则的用户。
  2. Android 平台优先选择明确标注支持 VpnService 且持续维护的客户端,安装后留意系统省电策略是否会影响后台连接稳定性。
  3. iOS 平台由于系统限制,客户端形态与桌面/Android 有所不同,选择时以官方渠道分发、更新记录清晰的版本为准。
  4. 如果手上的客户端说明页仍标注"基于原版 Clash 内核"且已经很久没有更新,建议评估迁移到基于 mihomo 的替代客户端,迁移过程通常只需要重新导入现有订阅链接。
  5. 不必纠结"客户端越新越好",稳定性、社区反馈量、更新频率三者综合判断比单看版本号更可靠。

迁移时的注意事项

从一个客户端切换到另一个客户端时,大部分情况下只需要重新添加订阅链接即可完成迁移,不需要手动重写规则。但如果原有配置里包含了自定义的策略组、脚本规则或特殊参数,迁移后建议先打开客户端的配置查看界面,核对规则条数与策略组数量是否与迁移前一致,避免因为语法解析差异导致个别规则被静默忽略。

curl -x http://127.0.0.1:7890 https://www.gstatic.com/generate_204 -I

迁移完成后,可以用上面这条命令验证本地代理端口是否正常响应,返回 HTTP/1.1 204 No Content 即说明新客户端的代理服务已经正常接管流量,再逐一检查策略组切换与规则匹配是否符合预期。

A-05常见疑问补充

mihomo 和 Clash Meta 是同一个东西吗?

是同一条开发脉络。Clash Meta 是早期分支名称,后来正式改名为 mihomo,并延续了原有的版本迭代,不是重新起步的新项目。

原版 Clash 内核还能不能继续用?

能运行,但已不再有新版本更新,协议支持与规则语法会逐渐落后于活跃维护的分支,长期使用建议迁移到基于 mihomo 内核的客户端。

换客户端需要重新配置规则吗?

大多数情况下只需重新导入订阅链接,底层配置语法基本通用。如果原配置里有自定义规则或脚本,迁移后建议核对一遍规则条数是否一致。

如何判断一个客户端是否还在活跃维护?

查看项目仓库最近一次发布版本的时间与更新日志内容,是比软件知名度更直接可靠的判断依据。

按图施工:下载 Clash 客户端

理清内核脉络后,前往下载页选择基于 mihomo 活跃维护的对应平台客户端。

下载客户端