3つの名前、1本の系譜:Clash 内核の変遷
Clash エコシステムに初めて触れたとき、最初につまずくのは設定ではなく「名前」だ。チュートリアルには Clash、ダウンロードページには Clash Meta、最新クライアントの画面には mihomo という表記が出てくる。この3つは競合する別プロジェクトではなく、同じ内核が段階ごとに呼び方を変えたものにすぎない。まず時系列を整理すれば、その後の選択は自然と見えてくる。
| 時期 | 名称 | メンテナー | 状態 |
|---|---|---|---|
| 2018 – 2023 | Clash(元祖) | Dreamacro | 開発終了済み |
| 2022 – 2024 | Clash Meta | MetaCubeX チーム | 改名済み |
| 2024年〜現在 | mihomo | MetaCubeX チーム | 開発継続中 |
一言でまとめると、元祖 Clash が共通のルーツ、Clash Meta が後継者、そしてmihomo は Meta の新しい名前だ。今新規インストールするクライアントの内核は、ほぼすべて mihomo になっている。
元祖 Clash:ルールベース通信振り分けの礎、開発は終了
元祖 Clash は Dreamacro によって Go 言語で書かれ、2018年に公開された。今も使われている基本の仕組みを確立したのがこのバージョンだ:YAML 設定ファイルにノード・ポリシーグループ・振り分けルールを記述し、受信した通信はルールに従って直接接続・プロキシ経由・拒否のいずれかに送られる。混合ポート、外部コントローラー API、ドメインや IP による振り分けといった設計は、いずれも元祖 Clash が定めた土台だ。
元祖版は2系統に分かれていた。オープンソースのコア部分と、クローズドソースの Clash Premium だ。Premium は TUN モードとスクリプト機能を独占しており、Clash for Windows や ClashX といった初期クライアントが組み込んでいたのはこの Premium だった。
2023年11月、開発者がリポジトリをアーカイブし、リリースページを削除。元祖 Clash は正式に開発終了となった。これは、新しいプロトコルが追加されないこと、既存実装のバグも修正されないことを意味し、これに依存するクライアントも次々と更新を止めていった。今でも元祖内核ベースのクライアントは多くの場面で動作するが、対応プロトコルは2023年時点のまま固定されており、今後の更新は見込めない。
Clash Meta:後継として開発を引き継いだ強化版
元祖版の開発終了より前から、MetaCubeX チームは元祖版をフォークして Clash Meta の開発を進めていた。元祖版が終了したことで、Meta は事実上の主流内核となった。元祖版との差分は大きく4つに整理できる。
- プロトコル面:VLESS(XTLS Vision、Reality 含む)、Hysteria/Hysteria2、TUIC、WireGuard、ShadowTLS、AnyTLS を追加。元祖版以降に登場した主要プロトコルをほぼ網羅している。
- TUN モード:標準搭載かつ無料。クローズドソースの Premium に依存せず、システム全体の通信を横取りできる。
- ルール面:
rule-providersとproxy-providersが全ユーザーに開放され、ドメインスニッフィング(sniffer)と GEOSITE ルールセットに対応。 - 使用感の面:
unified-delayによる測定基準の統一、tcp-concurrentによる同時接続、find-process-modeによるプロセス単位の振り分けに対応。
設定ファイルの観点では、Meta は元祖版の上位互換にほぼ近い。元祖版向けの設定はそのまま動くことが多い一方、Meta 専用フィールドを含む設定を元祖内核に渡すと、起動時にエラーになる。
mihomo:Clash Meta の現在の名称
2024年、Clash Meta は mihomo に改名し、リポジトリも MetaCubeX/mihomo に移転した。バージョン番号は従来の系列をそのまま引き継いでいる。名前が変わっただけでコードは変わらない。メンテナーも同じ、設定ファイルの文法も同じ、リリースのペースも同じで、ドキュメントサイト wiki.metacubex.one では新旧両方の名前をカバーしている。
実際に使っていると、名称の混在に出会うことがある。古いバージョンのログには Clash Meta、新しいバージョンには Mihomo と表示される。クライアントによっては画面上に「Meta 内核」と書かれていたり「mihomo 内核」と書かれていたりするが、どちらも同じプログラムを指している。mihomo v1.18、v1.19 のようなバージョン表記を見かけたら、この系列の現行版だと判断してよい。
クライアントと内核の対応表
クライアントは外側の器であり、実際に通信を処理するのは内核プロセスだ。主なクライアントが採用している内核は以下の通り。
| クライアント | 搭載内核 | メンテナンス状況 |
|---|---|---|
| Clash Verge Rev | mihomo(旧 Clash Meta) | 開発継続中 |
| FlClash | mihomo | 開発継続中 |
| mihomo party | mihomo | 開発継続中 |
| Clash for Windows | Clash Premium(元祖) | 開発終了 |
| ClashX 系列 | 元祖または Meta | 開発終了 |
| Clash Meta for Android | Clash Meta | 開発終了 |
新規インストールするクライアントを選ぶ基準は、まず内核を見ること。mihomo ベースのクライアントならプロトコルの進化に追従できるが、元祖内核ベースのクライアントは開発終了時点の機能で止まっている。詳細なクライアント比較は本サイトのクライアント比較ページを参照してほしい。
現在動いている内核バージョンを確認する方法
Clash Verge Rev を例にすると、確認方法は3つある。
- 設定ページ:「設定」内の「Clash 内核」セクションで、現在の内核タイプとバージョン番号を確認でき、正式版と Alpha チャンネルの切り替えもここで行える。
- ログページ:内核起動時、名前とバージョンがログの先頭行に出力される。ログレベルを Info に設定すれば確認できる。
- 外部コントローラー:内核が動作している間、バージョン確認用の API を直接呼び出す。
$ curl http://127.0.0.1:9097/version
{"premium":true,"version":"Mihomo Meta v1.18.7"}
9097 は Clash Verge Rev のデフォルトの外部コントローラーポート。設定でポート番号を変更している場合は、実際の値を使うこと。返ってくる version フィールドが Mihomo で始まっていれば、mihomo 系列で動作していることが確認できる。
内核を切り替える前の設定ファイル互換性チェック
古い設定ファイルを元祖内核から mihomo へ移行する際は、次の3点を確認すればよい。
- 元祖版のフィールドは mihomo でほぼすべて互換性がある:
port、mixed-port、proxies、proxy-groups、rulesはそのまま使える。 - mihomo 専用フィールドは元祖版向けの設定に書かないこと:
unified-delay、tcp-concurrent、sniffer、tun設定ブロック、geodata-modeなど。元祖版はこれらの未知のフィールドを検出するとそのまま終了してしまう。 - ルールセットの記法は mihomo のドキュメントに準拠すること:
RULE-SET、GEOSITEは rule-providers と geodata に依存しており、元祖版のオープンソースコアでは対応していない。
サブスクリプションと内核の対応関係
現在配布されているサブスクリプションの多くは mihomo の文法で記述されている。これを元祖内核のクライアントに渡すと、起動時エラーやノードが全て使用不可になるといった問題が起きやすい。新規インストールするクライアントは mihomo 内核を選べば問題ない。フィールドの詳細は本サイトの設定リファレンスページで一つずつ確認できる。
まとめると、元祖 Clash は歴史、Clash Meta は旧称、mihomo が現在進行形の存在だ。クライアントを選ぶ際は mihomo 内核を基準にすればよく、設定の書き方・対応プロトコル・ドキュメントのサンプルもすべてこれを前提に作られている。