为什么不要混用 Mihomo 与 sing-box 配置格式?
新手经常将各种配置文件混用导致代理内核崩溃。目前主流的两大内核:Mihomo (Clash Meta) 与 sing-box,其配置文件互不兼容。
1. 语法与配置模型的根本差异
它们不仅仅是 YAML 与 JSON 语法的区别,其数据结构、字段语义和路由匹配逻辑完全不同。
[!NOTE] 结构展示说明 以下片段仅用于展示两者在“定义节点”与“路由规则”时的结构差异,不可直接复制运行。要运行完整客户端,还需包含入站 (inbounds)、DNS 模块等必填配置。
-
Mihomo (YAML) 结构示例: 在 Mihomo 中,通常由
proxies定义节点,通过proxy-groups定义策略组(此处假设名为 “Proxy”),然后在rules中进行引用。proxies: - name: "Node 1" type: vless server: example.com # ... (省略端口、uuid等细节) proxy-groups: - name: "Proxy" type: select proxies: - "Node 1" rules: - DOMAIN-SUFFIX,google.com,Proxy -
sing-box (JSON) 结构示例: 在 sing-box 中,采用平铺对象结构,节点称为
outbounds并用tag标识,路由系统route使用对象数组。{ "outbounds": [ { "type": "vless", "tag": "Node 1", "server": "example.com" }, { "type": "selector", "tag": "Proxy", "outbounds": ["Node 1"] } ], "route": { "rules": [ { "domain_suffix": ["google.com"], "outbound": "Proxy" } ] } }
2. 订阅链接、节点 URI 与完整配置
不要混淆“节点协议 URI”(如 vless://...)与“完整配置文件”。
许多客户端(如 v2rayN)支持将各种离散的协议 URI 转换为自身所需的路由格式。但如果你使用专用的全接管 GUI(如 Clash Verge Rev 运行 Mihomo,或 Hiddify 运行 sing-box),绝不能宣称“所有客户端都直接接受完整的 sing-box JSON 订阅”。必须根据所用软件,向订阅转换服务请求相对应的配置文件标准。