先确认自己要的是 GUI 配置还是核心配置
官方站内指南标题为 v1.9.0,描述的是 GUI 管理订阅、配置,再生成 sing-box 运行文件的流程。它与 SFA 的 Remote Profile 不同。菜单和支持字段要与实际安装版核对;不能只因都用 sing-box 就照搬另一客户端的导入按钮。
从个人配置中取得节点,保留原文件
先登录 Roxi 账户复制自己的第三方订阅链接。下文路径只替换原链接中的 /sub/ 部分一次,保留域名、个人标识及全部查询参数;不要把“个人标识”当真值,也不要把官网首页或登录页当订阅。已有对应格式的专用链接时直接使用。
Roxi 的 /sub/singbox/个人标识 返回完整 JSON,包含入站、出站和路由;官方 GUI 指南中的节点订阅示例则是出站对象数组。本文用本地文件做明确对照:将个人 JSON 保存为 downloaded.json,保留原件,在自己的电脑上提取支持的独立节点。
umask 077
python3 - <<'PYCODE'
import json
from pathlib import Path
source = json.loads(Path("downloaded.json").read_text(encoding="utf-8"))
allowed = {"shadowsocks", "vmess", "vless", "trojan", "hysteria2", "tuic"}
nodes = [x for x in source.get("outbounds", [])
if x.get("type") in allowed and x.get("server") and not x.get("detour")]
if not nodes:
raise SystemExit("没有可独立导入的节点;请核对格式和出站依赖")
# x 模式避免覆盖已有文件;本命令只读取本地文件,不请求订阅网址。
with Path("gui-nodes.json").open("x", encoding="utf-8") as output:
json.dump(nodes, output, ensure_ascii=False, indent=2)
print("导出节点数:", len(nodes))
PYCODE输出数量为零必须停止并排查,不能把空文件当成功。Windows 用户可把 Python 部分保存为脚本后用已安装的 Python 3 运行,并将目录保存在本人账户下。若文件已存在,先备份或换输出名称,不盲目覆盖。
在 GUI 中建立订阅与配置
- 添加本地订阅,选择 gui-nodes.json 的实际路径并更新;确认列表里的节点与刚导出的数量和协议相符。路径字段随版本变化,以本地文件入口为准。
- 新建一份配置,用向导或编辑入口建立代理组,并把该本地订阅关联进去;预览生成的 JSON,核对最终代理组引用。
- 先配置一个只监听 127.0.0.1 的 Mixed 入站,选择未占用的高位端口;启动核心并开启系统代理。TUN 在完成这个对照后再单独测试。
更新和报错如何处理
| 情况 | 处理 |
|---|---|
| JSON 对象被当作节点数组 | 确认导入的是 gui-nodes.json,而不是 downloaded.json |
| 节点存在但组内无可选项 | 检查配置关联和组引用,再重新生成 |
| 提示字段或版本不支持 | 记录 GUI/核心版本和字段,按官方迁移说明核对;不要降低版本约束凑通过 |
| 远程订阅已变、本地列表没变 | 本流程不会自动同步;重新下载到新文件、提取、核验后再替换本地订阅 |
确认流量与回退
- 固定一个节点,访问实际需要的网站,同时在日志或连接列表核对目标、命中规则和最终出口。VPN 图标、端口监听和延迟数字都不能单独证明目标访问成功。
- 再访问一个平时可直连的网站,记录是否受影响;停止接管后重试,确认正常网络恢复。一次只改一项,记录客户端与核心版本、网络和错误发生时间。
修改前保留旧的本地订阅和 GUI 配置。失败时关闭系统代理,恢复上一份完整配置;不要让旧核心读取新版本升级后的数据目录。
只分享脱敏后的失败阶段、字段名和日志摘要。订阅 URL、二维码、节点认证信息和导出的配置都可能包含凭据,不要发送到公开群或公共转换网站。本文依据官方资料与项目接口整理,未进行真机连接实测。