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

规范地址 https://jichangboke.org/learn/what-is-proxy-core/
发布 2026-09-18，更新 2026-09-18
作者 塔台君，机场博客

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

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

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

## 界面和内核是两个东西

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

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

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

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

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

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

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

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

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

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

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

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

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

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

sing-box 那边有一套对应的东西，放在 `experimental` 下面，叫 Clash API，字段名是 `external_controller`、`external_ui`、`secret` 和 `default_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](/clients/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](/clients/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 那篇](/learn/anytls-protocol/)里写了。

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

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

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

## 常见问题

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

一般不用。多数客户端跟着自己的版本一起打包内核，升级客户端就换了内核。少数客户端把这件事单独放出来，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 时一定要设。

## 来源

- Mihomo 文档，全局配置中的 external-controller 与 mode https://wiki.metacubex.one/config/general/
- Mihomo 文档，客户端列表与项目说明 https://wiki.metacubex.one/startup/client/client/
- sing-box 文档，配置文件的顶层结构 https://sing-box.sagernet.org/configuration/
- sing-box 文档，实验性功能中的 Clash API https://sing-box.sagernet.org/configuration/experimental/clash-api/
- v2rayN wiki，支持的内核列表 https://github.com/2dust/v2rayN/wiki/List-of-supported-cores
- Xray 文档，配置文件总览 https://xtls.github.io/config/
- 本站客户端资料库的 core 字段，共 80 款，核对日 2026-09-18
