TL;DR:从 Clash/Mihomo 迁到 sing-box,不是把 YAML 改成 JSON 这么简单。节点、选择器、路由和 DNS 都要重新映射;能跑通节点只算完成一半,DNS 和规则才是最容易暗错的地方。

很多人切到 Hiddify、Karing 或 sing-box 官方客户端,是因为想用同一套内核覆盖手机和桌面。问题在于,Clash 系配置的思路和 sing-box 不一样。直接找在线转换器,常见结果是「节点能连,分流乱了」。

迁移前先看这张表

Clash/Mihomosing-box迁移注意
proxiesoutbounds单个节点基本可映射
proxy-groupsselector/urltest outbounds选择器也算 outbound
rulesroute.rules字符串规则改对象数组
rule-providersroute.rule_set.mrs 不能直接当 .srs
dns.nameserverdns.servers服务器要先定义 tag
nameserver-policydns.rules域名匹配逻辑要重写

最关键的一点:sing-box 的配置更像「组件注册 + 引用」。先定义 DNS server、outbound、rule_set,再在 route 或 dns 里引用 tag。

一个最小映射例子

Clash 写法:

proxies:
  - name: us-1
    type: trojan
    server: example.com
    port: 443
proxy-groups:
  - name: Proxy
    type: select
    proxies: [us-1, DIRECT]
rules:
  - DOMAIN-SUFFIX,example.org,Proxy
  - MATCH,DIRECT

sing-box 需要把节点和选择器都放进 outbounds:

{
  "outbounds": [
    { "type": "trojan", "tag": "us-1", "server": "example.com", "server_port": 443, "password": "xxx" },
    { "type": "selector", "tag": "Proxy", "outbounds": ["us-1", "direct"] },
    { "type": "direct", "tag": "direct" }
  ],
  "route": {
    "rules": [
      { "domain_suffix": ["example.org"], "outbound": "Proxy" }
    ],
    "final": "direct"
  }
}

不要照抄这个片段到生产配置,它只是说明结构差异。

DNS 是迁移失败重灾区

Clash 里很多人只写 nameserverfallback;sing-box 里更推荐给 DNS server 打 tag,然后用 dns.rules 分派。迁移时检查三件事:

  1. 解析代理服务器域名的 DNS 不能依赖代理本身。
  2. dns.rules 的命中顺序是否和原 nameserver-policy 一致。
  3. IPv6 是否需要开启;不确定时先关闭,减少变量。

如果切换后网页偶发打不开,别只看节点延迟。先看 DNS 日志,确认域名被哪个 resolver 处理。

什么时候可以用转换工具

适合转换:纯节点列表、少量域名规则、没有 provider 和脚本覆写。

不适合转换:

  • 多层 proxy-groups 互相引用。
  • 远程规则集很多,且格式为 .mrs 或自定义 .list
  • DNS 分流依赖 nameserver-policy
  • Clash 配置里有 JavaScript parser/override。

需要换订阅时,优先让服务商直接导出 sing-box/Hiddify 格式;如果后台只有 Clash 格式,再考虑转换。也可以准备配套订阅线路作为多客户端测试源,但仍要确认当前客户端选的是 sing-box 导出。

迁移验收清单

  • 节点列表存在,selector 能手动切换。
  • 自动测速组不会把 direct 当成远端节点。
  • route.final 符合你的预期。
  • DNS 日志里没有循环解析。
  • 常用 App 的域名命中正确 outbound。
  • 重启客户端后远程 rule_set 能正常更新。

完成这些再把旧 Clash 客户端停掉。否则两个客户端同时开系统代理或 TUN,排错会变得很乱。

落地前复查清单

把 sing-box 订阅格式迁移 当成一次可回滚的小变更处理。先记录当前环境、账号状态、版本号和关键参数,再执行正文步骤。如果你属于“从 Clash/Mihomo 客户端切到 Hiddify、Karing 或 sing-box 官方客户端的用户”,不要在同一轮里同时改账号、网络、客户端和计费设置,否则失败后很难判断是哪一项造成。

检查项记录方式
当前目标写清这次只要解决 sing-box 订阅格式迁移 的哪一个问题
基线状态截图或保存现有配置、账单、地区、版本号
操作窗口选择低峰时段,避免影响正在运行的任务
验证指标用成功率、延迟、费用、可登录状态或页面返回结果判断
回滚入口保留旧配置、旧密钥、旧订阅或原始文件路径

失败后怎么复盘

如果按流程走完仍然失败,先不要继续叠加新方案。把现象拆成三类:完全不可用、偶发失败、能用但成本或速度不达标。完全不可用优先检查前置条件;偶发失败看时间段、地区和上游状态;成本或速度问题再回到 客户端、协议、规则和网络工具配置 的具体约束。完成后对照“按检查表确认订阅能否迁移,避免切换客户端后节点或 DNS 失效”复核一次,只保留能稳定复现改善的改动。

相关阅读