Skip to content

为什么说 sing-box 是未来:架构演进、性能暴打 Clash 与资源占用实测 ​

AirPick 实验室 · 内核横评系列 · 2026 年 1 月更新 测试环境:Apple M2 Mac mini(macOS 15.3 / arm64)、Intel J4125 软路由(OpenWrt 24.10 / Linux 6.6 / x86_64)、Pixel 8(Android 15 / arm64)。所有内存数据取自 RSS 中位数,样本 n=5,冷启动剔除首次 JIT 预热。

01 · 先给结论:sing-box 的领先不在跑分,在架构 ​

如果你只想要一句话答案:sing-box 赢在"内核抽象层",而不是赢在"网速更快"。 任何声称"换个内核下载速度从 100Mbps 变 500Mbps"的说法,都是把线路质量偷换成了内核性能。

拆开讲,三个可以证伪的判断:

第一,协议覆盖是碾压级的。 sing-box 原生内置 VLESS / VMess / Trojan / Shadowsocks / Hysteria2 / TUIC / WireGuard / SSH / AnyTLS,且全部由同一个 sing 库的 outbound 接口实现,共享同一套 TLS/uTLS 指纹栈。mihomo 虽然也追上了大部分协议,但 Hysteria2 与 TUIC 这类 QUIC 协议在 mihomo 里属于"外挂式"集成,配置字段和日志语义跟原生协议不是一套逻辑。

第二,内存优势真实存在,但有前提。 在"空载 + 200 条规则"这种轻负载下,两者差异在 10MB 以内,你根本感觉不到。但当规则集规模上到 5000 条以上、并且连续运行超过 48 小时后,差距会被拉开到 1.5–2 倍。这一点我们在第 04 节的矩阵表里有完整数据。

第三,代价是学习曲线。 sing-box 的配置文件是"有向图"思维,Clash 是"扁平列表"思维。从 Clash 迁移过来的人,前三天一定会被 route.default_domain_resolver 和 rule_set 的 tag 引用搞晕。这是真实成本,本文不会替它遮掩。

💡 ⭐ 2026 企业级防挤兑专线 · 【隐形人】读者专享特惠通道:
海外新加坡团队运营,企业级 IEPL 专线 + 60+ 原生机房独立 IP,晚高峰 500M 冗余带宽不挤兑,支持 24h 退款保障:
8折特惠yxr888复制 📋
直达隐形人官网 ↗

02 · 架构演进史:从"配置文件"到"路由图" ​

要理解差距从哪来,得先看两代内核的设计哲学。

Clash 那一代(2019–2022)的核心抽象是 proxy-group。 整个配置文件围绕"节点列表 → 策略组 → 规则匹配"这条单向链路展开。规则是一条条字符串,从上到下线性匹配,命中即停。这套模型极度易用,YAML 写起来像在填表格,但它有个天花板:协议能力和路由能力被写死在同一个平面里。你想加个新协议,代码要穿透 proxy、adapter、outbound 好几层;你想做 DNS 级别的精细分流,只能靠 fallback-filter 这种黑盒玄学。

mihomo(Clash.Meta)那一代(2023–2025)做的是"补丁式扩张"。 它在 Clash 的骨架上塞进了 TUN、rule-provider、sub-rule、script、sniffer、SMUX,功能确实补齐了,但代价是内核里同时存在多套并行逻辑。最典型的是 DNS:mihomo 有 dns.enhanced-mode、nameserver-policy、fallback-filter、fake-ip-filter 四套机制互相耦合,出问题时你很难定位是哪一层在起作用。

sing-box 那一代(2022 至今)换了思路:一切皆对象,对象之间靠 tag 连成有向图。 它把整个系统拆成五段——inbounds、outbounds、route、dns、experimental。每一段里的每个条目都有唯一 tag,任何跨段引用都必须显式声明 tag。这意味着:

  • DNS 不再是路由的附属,而是一个独立可寻址的子系统,dns.servers 里每个 server 都有 tag,route 规则可以直接指定"这条流量走哪个 DNS 解析器"。
  • 规则匹配变成了动作(action)。sing-box 1.11 之后引入 rule action 模型:route、reject、hijack-dns、sniff、resolve 都是动作,而不是布尔判定。这让"先嗅探、再解析、再决定出站"这种流水线成为一等公民。
  • rule_set 是编译产物。.srs 二进制规则集加载时不走 YAML 解析器,而是内存映射式的反序列化。这是它能在大规则量下保持低内存的直接原因。

一句话总结演进方向:Clash 是配置驱动的代理工具,sing-box 是规则驱动的流量编排引擎。 后者天然更适合"多入口 + 多出口 + 多协议"的复杂场景。

03 · 底层机理:内存和吞吐的差距到底从哪来 ​

3.1 Go GC 与内存回收 ​

两者都是 Go 写的,但内存表现不同,核心差异在对象生命周期管理。

sing-box 在 sing 库层面对热路径做了大量 sync.Pool 复用,尤其是 TCP 读写缓冲区、UDP 包、DNS 报文这三类高频分配对象。更关键的是,它从 1.10 起就把 GOMEMLIMIT 作为一等配置项(experimental 段可控),让 GC 目标与容器/路由器的物理内存挂钩,而不是靠默认的 100% 堆目标。

mihomo 的问题不在 GC,而在规则集的热重载。它的 rule-provider 走的是"解析 YAML → 构造内存结构 → 替换旧结构"的路子,YAML 解析过程中产生的临时对象会把堆推高,而 Go 的 GC 默认不会把已释放的堆页立刻归还 OS(GODEBUG=madvdontneed 在 Linux 上是默认的,但 macOS/Windows 上长期保留高水位是常见现象)。这就是为什么很多人在软路由上看 mihomo 跑两天 RSS 从 60MB 爬到 120MB。

3.2 TUN 栈的选择 ​

sing-box 的 inbounds[].type: tun 提供 stack 参数:system、gvisor、mixed。

  • gvisor:用户态网络栈,内存开销低但吞吐受限,单线程大约在 600–900Mbps 触顶(M2 环境)。
  • system:走内核协议栈,吞吐接近裸线,代价是内存占用更高、跟 Docker/局域网的路由冲突更难处理。
  • mixed:sing-box 特有的折中方案,TCP 走 system、UDP 走 gvisor。这是绝大多数人的最优解,尤其是软路由场景。

mihomo 的 TUN 也有 gvisor / system 两种,但缺少 mixed 这种细粒度切分,UDP 在 gvisor 下的转发效率在高并发(比如 BT、游戏加速)时会明显掉帧。

3.3 QUIC 协议与抗丢包 ​

这是 sing-box 阵营最能"暴打"的维度,但要说清楚:暴打的不是 sing-box 本身,而是 Hysteria2 的 Brutal 拥塞控制。

BBR 是基于丢包和 RTT 建模的,它在有 1%–3% 丢包的跨境线路上会主动降速。Brutal 则是"我说多少带宽就是多少带宽"的暴力模型,在丢包 5%–20% 的劣化链路上,实测吞吐可以拉开 4–8 倍差距。sagernet/sing-quic 对 Hysteria2 的实现比 mihomo 的外挂集成更贴近上游协议规范,尤其是在 up_mbps/down_mbps 动态协商和 UDP 分片处理上。

但要泼盆冷水: 如果你的线路本身干净(IEPL/IPLC 专线,丢包率在 0.1% 以内),Hysteria2 相比 VLESS+Reality 反而可能慢 5%–15%,因为 QUIC 的握手和头部开销更大。协议选择必须匹配线路质量,这是新手最容易踩的坑。

3.4 TLS 指纹与 Reality ​

sing-box 的 uTLS 集成度更高,ClientHello 指纹可以直接指定为 chrome、firefox、safari、randomized,并且支持 Reality 的 public_key / short_id 原生校验。这一点在 2026 年的网络环境下已经不是加分项,而是必选项——没有指纹伪装的裸 TLS 流量,在一线运营商的 DPI 面前存活时间以小时计。

04 · 核心参数对比矩阵(AirPick 实验室实测) ​

下表数据来自 2026 年 1 月对照测试,规则集统一使用 geosite:cn(约 5200 条域名)+ geoip:cn。

对比维度sing-box 1.12.xmihomo 1.19.x原版 Clash Premium
实现语言 / 许可Go / GPL-3.0Go / GPL-3.0Go / 闭源二进制
配置模型tag 有向图(5 段式)扁平 YAML + 策略组扁平 YAML
原生协议数12+(含 AnyTLS/Hysteria2/TUIC)10+(QUIC 类为外挂集成)5
规则格式.srs 二进制 + 内联YAML / MRS / MMDBYAML / MMDB
DNS 子系统独立可寻址,支持 DoQ/DoH3多层耦合(enhanced-mode)基础
TUN 栈选项system / gvisor / mixedgvisor / system无 TUN
空载 RSS(Linux x86_64)23 MB41 MB28 MB
5000 规则加载后 RSS42 MB79 MB54 MB
48h 长跑 RSS 漂移+6%+19%+11%
冷启动耗时(M2)0.41 s1.08 s0.63 s
单线程吞吐(Reality, 无丢包)1.72 Gbps1.68 Gbps1.31 Gbps
丢包 10% 下吞吐(Hysteria2 vs SS)312 Mbps / 41 Mbps268 Mbps / 39 Mbps不支持
GUI 生态成熟度中等(官方 App + 第三方)高(GUI.for.Clash 等)高

怎么读这张表?

  • 单线程吞吐那一行,两者的差距在误差范围内。不要被"性能暴打"的说法带偏,干净的线路上内核不是瓶颈,CPU 才是。
  • 内存那一行,差距是实打实的 1.9 倍。这直接决定了你在 256MB 内存的老旧路由器上能不能跑得动。
  • 长跑漂移那一行最容易被忽略,但它是软路由用户"用着用着就卡了"的元凶。
  • GUI 生态那一行是 sing-box 唯一的明显短板。如果你是"不想碰配置文件"的人,这一点足以让你继续留在 Clash 阵营。

05 · 人群选型:谁该换,谁不该换 ​

**强烈建议换 sing-box

数据仅供参考,请以机场官网实时信息为准。遵守法律法规,文明合规出海。