机场博客JICHANGBOKE.ORG

代理内核是什么,和客户端、订阅什么关系

作者 塔台君发布 约 3 分钟读完

内核是客户端里负责处理连接的那个程序,没有界面。它读一份配置文件,按规则把流量交给节点。客户端负责下载订阅、生成配置、显示节点列表,再通过一个本地接口指挥内核。

装好一个代理客户端,翻到设置页往下拉,多半能看到一栏写着内核版本,后面跟着 v1.19.31 或者 1.14.1 这种号,和客户端自己的版本号对不上。有些客户端还在旁边放了一个更新按钮。

那一栏指的是客户端里替你干活的那个程序。

界面和内核是两个东西

你点开的那个窗口负责显示,它把订阅拉下来、把节点排成列表、画出流量曲线。建立连接、按规则分流和加解密这些活由另一个程序干,它没有界面,习惯上叫内核。

内核是一个命令行程序。给它一份配置文件,它就照着工作。Mihomo 读 YAML,sing-box 读 JSON,Xray 也读 JSON,三家的字段名各不相同。可执行文件都在各自的 GitHub 发布页上,下载下来命令行跑一句就能用,代价是配置得自己写。

图形客户端做的就是把这件苦差事包起来。Mihomo 的 wiki 上有一句话说得很清楚,它列出的那些工具和客户端均为使用或带有 mihomo 内核,同时声明我们并不直接控制这些工具和客户端的开发。内核团队和客户端团队通常不是同一拨人。

从一条订阅链接到能上网,中间经过几手

把机场给的订阅链接粘进客户端,按下导入,后面依次发生这些事。

客户端拿着这条链接去请求机场的服务器,请求头里带着自己的标识。机场面板按这个标识判断你用的是哪类工具,回一份对应格式的配置。同一条链接,Clash 系客户端拿到的是 YAML,sing-box 客户端拿到的是 JSON,内容可以差很远。

客户端把这份配置存到本地,通常还要改一改,加上自己的分流规则、DNS 设置、TUN 开关,合成一份最终配置。

内核启动,读这份配置,在本机开几个端口等着接流量。Mihomo 的全局配置里,mode 决定按规则分流还是全局走代理,取值有 ruleglobaldirect 三个,log-level 决定日志写多细。

浏览器的请求进到内核,内核对着规则表判断这个域名该直连还是走代理,选中节点后按协议封装好发出去。

整条链上出问题的位置可以粗略这么分。节点列表是空的,问题在订阅和客户端之间。列表有节点但全部超时,问题多半在内核到机场服务器这一段。某些网站能开某些打不开,是规则的事。连不上的排查顺序那篇按这个思路排了一遍。

界面和内核之间隔着一个本地接口

这一层平时看不见,但它解释了不少现象。

Mihomo 的全局配置里有一项 external-controller,一般写成 127.0.0.1:9090,这是一个只在本机监听的 RESTful 接口。客户端界面上切换节点、测延迟、看实时连接,全是通过它发请求。旁边的 secret 是这个接口的口令。

mode: rule
log-level: info
external-controller: 127.0.0.1:9090
secret: "your-secret-here"

sing-box 那边有一套对应的东西,放在 experimental 下面,叫 Clash API,字段名是 external_controllerexternal_uisecretdefault_mode。文档专门提醒,接口监听在 0.0.0.0 上时一定要设 secret。

知道这一层有两个用处。一是有些网页版面板能直接连你本机的这个端口来管理节点,界面比客户端自带的还好用。二是两个客户端同时开着的话,9090 这个端口会打架,其中一个起不来。

现在能碰到的内核就那么几个

内核 归属 配置格式 机场订阅里常见的格式名
Mihomo MetaCubeX YAML Clash
sing-box SagerNet JSON sing-box
Xray Project X JSON V2Ray
v2ray-core V2Fly JSON V2Ray

v2rayN 是个特例,它不绑定某一个内核。官方 wiki 列出的支持列表有 Xray、v2fly、mihomo、sing_box,另外还有 hysteria2、naiveproxy、tuic、juicity、brook、overtls、shadowquic 这些单协议的程序。这类客户端在界面里直接下载和切换内核。

机场那边通常提供两到三种订阅格式。同一个账号,Clash 格式和 sing-box 格式是两条不同的链接,内容不通用。换客户端之前先去用户中心看看有没有你要的那一种。

本站收录的 80 款客户端各用什么内核

本站客户端库到 2026 年 9 月 18 日核对时收了 80 款,标注内核的情况是这样。

内核 数量
Mihomo 34
多内核可选 12
自研 7
sing-box 4
原版 Clash 2
Xray 1
资料未标注 19

Mihomo 一家占了四成以上,Clash Verge Rev、FlClash、Clash Party 这些常见的桌面和手机客户端都在里面。用 sing-box 的四款是 Hiddify、Karing、官方的 sing-box 客户端,以及已经停更的 NekoRay。只用 Xray 的那一款是安卓上的 v2rayNG。标着原版 Clash 的两款是 Clash for Windows 和 Clash for Android,都已停更。

这个分布解释了一件事。机场只要把 Clash 格式的订阅做好,就覆盖了绝大多数用户,所以有些机场至今不提供 sing-box 格式。

换客户端之前先看内核

内核这一栏值得留意的时候不多,下面几种算是常见的。

想用新协议的时候。AnyTLS 这类 2025 年之后才有的协议,要 Mihomo 或 sing-box 跟到相应版本才认,具体到哪一版在 AnyTLS 那篇里写了。

从停更客户端迁出来的时候。原版 Clash 内核不支持 VLESS,还在用 Clash for Windows 的人会发现一半节点导不进来。

机场换了协议的时候。服务端那边升级之后,客户端内核跟不上就会握手失败,这种情况在 REALITY 相关的参数那篇里有一个具体例子。

平时不用管它。挑客户端先看平台和用着顺不顺手,客户端总览按平台列了各家的情况,内核只是其中一栏。

常见问题

客户端设置里的内核版本要不要手动更新

一般不用。多数客户端跟着自己的版本一起打包内核,升级客户端就换了内核。少数客户端把这件事单独放出来,Clash Verge Rev 的设置里可以在正式版和 Alpha 版内核之间切换,v2rayN 能自己下载并替换多种内核。新协议的节点导不进来时,更新内核是最直接的办法。

为什么同一条订阅换个客户端节点就变少

多半是内核不一样,或者版本差太远。订阅里的节点类型要内核认得才会进列表,AnyTLS 这种 2025 年才出现的协议,老内核根本不认。另一种情况是订阅格式不对,机场按客户端的请求头下发 Clash 或 sing-box 格式,格式和内核对不上就解析不出来。

内核可以单独用吗

可以,但要自己写配置。Mihomo 和 sing-box 的可执行文件都在各自的发布页提供,命令行跑起来读一份配置文件就能工作。日常用不着这么麻烦,图形客户端把下载订阅、生成配置、切换节点这些事都包好了。愿意折腾的人才会直接用内核。

客户端界面是怎么指挥内核的

靠一个只在本机监听的接口。Mihomo 的配置里有一项 external-controller,默认写 127.0.0.1:9090,界面通过它读节点列表、发切换指令、拉日志。sing-box 有一套对应的 Clash API,字段名叫 external_controller。配套的 secret 是这个接口的口令,官方提醒监听 0.0.0.0 时一定要设。

来源

代理内核Mihomosing-box客户端

接着读