Clash 开源生态梳理:原版、Meta/mihomo 与各客户端的关系
在 Clash 的语境里,同一个名字往往同时指向一条已经冻结的原版内核、一支由社区接力的 mihomo 主线,以及十余个界面各异的客户端。本篇以词条笔法著录这条生态线:原版内核的归档始末、Clash Meta 到 mihomo 的继承关系、内核与客户端的分工架构,以及各平台客户端的维护现状,卷末附一份按平台选型的参考结论。
一、原版 Clash 的始末
原版 Clash 由开发者 Dreamacro 以 Go 语言编写,约于 2018 年公开,以 GPL-3.0 协议发布。它是一个纯粹的命令行内核:本身不带图形界面,启动后读取一份名为 config.yaml 的配置文件,在本机开放 HTTP 与 SOCKS 代理端口,并依据配置中的规则,把每一条连接分发给直连或某个代理出站。
就当时的环境而言,它的协议支持相当齐全:Shadowsocks、VMess、Trojan、Snell,以及标准的 HTTP 与 SOCKS5 出站;规则系统支持域名后缀、关键字、IP 段、GEOIP 等匹配方式。「规则自上而下、命中即停」的分流模型,加上「策略组」这一出站选择器,构成了后来整个生态沿用至今的通用范式。
除开源版本外,作者另发布过闭源的 Premium 内核,以预编译二进制形式提供 TUN 虚拟网卡、脚本规则等增强能力,供有需要的用户替换使用。
2023 年 11 月,作者清空并删除了托管在 GitHub 的 clash 仓库,项目主页自此无法访问;同一时期,Clash for Windows 等多个知名下游客户端相继宣布停更或撤下发布内容。原版内核的版本号就此冻结,协议支持与功能不再演进——这是理解今天整个生态格局的起点。
二、从 Clash Meta 到 mihomo
在原版停更之前,社区中已存在功能分支 Clash.Meta,由 MetaCubeX 组织维护,目标是在原版代码的基础上继续纳入新协议与新特性。原版删库之后,这一分支自然成为事实上的主线;2024 年初,项目更名为 mihomo,仓库迁至 MetaCubeX/mihomo,版本号在原有序列上延续,许可证保持 GPL-3.0 不变。
相对原版,mihomo 的主要增量可以按类别著录:
- 出站协议:新增 VLESS、Hysteria、Hysteria2、TUIC、WireGuard 等,覆盖原版冻结之后出现的多数主流协议。
- 规则系统:引入规则提供器(rule-providers)与二进制规则集格式,便于分发和加载大规模域名或 IP 列表。
- DNS 模块:支持按域名分派的解析策略、域名嗅探等能力,用于缓解解析污染与分流错位。
- TUN 模式:重写并增强虚拟网卡栈,提供 gVisor 与 system 两种实现,整机流量接管更为稳定。
- 控制接口:external-controller 与原版本保持兼容,旧有面板与客户端可以平滑迁移。
目前,几乎所有仍在维护的 Clash 系客户端,默认或推荐内核均为 mihomo;原版内核仅在少数旧设备与旧配置中继续服役。
三、内核与客户端的分工
Clash 生态的架构可以概括为「内核 + 外壳」两层。内核是后台进程,负责代理协议、规则匹配与 DNS 解析;客户端是图形外壳,负责界面展示、订阅的下载与更新、系统代理开关与开机自启,并通过内核暴露的 RESTful 控制接口下发指令、读取运行状态。该接口默认监听本机 127.0.0.1:9090:
# config.yaml(节选):内核对外控制接口
external-controller: 127.0.0.1:9090
secret: ""
由于配置文件格式在内核之间基本兼容,同一份 config.yaml 通常可以在不同客户端之间直接搬用;面板类工具(如 metacubexd、zashboard)也通过同一控制接口工作,可以挂接到任何一个 mihomo 实例上,与具体使用哪款客户端无关。
订阅链接的本质,是按 Clash 配置格式生成的一段 yaml 文本,客户端负责定时拉取并合并进本地配置。理解「内核、外壳、订阅」这三层之后,生态里任何新出现的客户端都可以快速对号入座:先看它内置哪条内核,再看它对订阅与系统代理做了哪些封装。
四、各平台客户端现状
下表按平台著录常见客户端的内核归属与维护状态(以各项目公开发布页为准):
| 客户端 | 平台 | 内置内核 | 维护状态 |
|---|---|---|---|
| Clash Verge Rev | Windows / macOS / Linux | mihomo | 活跃维护 |
| FlClash | Windows / macOS / Linux / Android | mihomo | 活跃维护 |
| mihomo party | Windows / macOS / Linux | mihomo | 活跃维护 |
| ClashX Meta | macOS | mihomo | 维护中 |
| ClashMetaForAndroid | Android | mihomo | 维护中 |
| OpenClash | OpenWrt | mihomo(可在设置中切换) | 活跃维护 |
| Clash for Windows | Windows / macOS / Linux | 原版 / Premium | 2023 年 11 月停更 |
| Clash for Android | Android | 原版 | 已停更 |
| ClashX | macOS | 原版 | 已停更 |
| Clash Verge(旧版) | Windows / macOS / Linux | 原版 / Meta | 停更,由 Rev 接替 |
几点补充著录:Clash Verge Rev 是已停更的 Clash Verge 的社区续作,基于 Tauri 构建,界面与旧版一脉相承;FlClash 以 Flutter 编写,桌面与移动平台共用一套界面逻辑;OpenClash 是 OpenWrt 上的 LuCI 应用,内核可在设置中切换;iOS 平台上常见的 Stash 为闭源付费软件,兼容 Clash 配置格式,与开源内核并无直接继承关系,此处仅作著录。
五、选型建议
综合上述谱系,选型可以归结为三条原则:
- 优先仍在维护的组合。代理软件需要跟随协议实现与操作系统的变化持续更新,停更版本只能应付旧环境,暴露的问题也不会再有修复。
- 内核认准 mihomo。新协议与新规则集格式只在 mihomo 一侧演进;除非旧配置强依赖原版的特定行为,没有理由回到已归档的内核。
- 客户端按平台习惯挑选。桌面三平台可在 Clash Verge Rev 与 FlClash 之间按界面偏好取舍;Android 平台可选 ClashMetaForAndroid 或 FlClash;OpenWrt 路由器则使用 OpenClash。
旧客户端导出的 config.yaml 多数可以直接导入基于 mihomo 的客户端;个别已被移除的旧字段或旧协议写法,需要对照 mihomo 官方文档逐项调整后再加载,避免启动报错。
各客户端的获取渠道、系统要求与安装步骤,本站安装包页有逐项著录;首次完成配置的流程,可参照入门指南逐步操作。
六、术语速查
实际执行代理与分流的后台进程,本身不带界面,如原版 Clash 与 mihomo。
内核的图形外壳,负责配置管理、订阅更新与系统代理开关。
按 Clash 配置格式分发节点与规则的链接,由客户端定时拉取。
出站的选择器,决定某条匹配最终交给哪个节点或分组。
以虚拟网卡接管整机流量的工作方式,可覆盖不服从系统代理的程序。
可复用的规则列表文件,mihomo 另提供体积更小的二进制格式。