Pangolin 可配置分流 · 交互原型

Task 3 设计稿 · 让用户像 Shadowrocket 那样自定义"哪些流量直连 / 走隧道 / 拒绝"。下含移动端三屏 + 桌面端(macOS/Windows)设置窗口的视觉原型(mockup,非真实数据),两端共用同一套服务端路由档案。配套规则模型与实现见 配置说明文档 →

9:415G ▮▮▮
代理模式
全局代理
智能分流
全部直连
智能分流:按下面规则表逐条匹配;命中「直连」不走隧道,「走隧道」经节点出网。
内置规则(系统)
国内直连(GeoIP/GeoSite CN)
局域网直连(LAN/私网)🔒 强制
私有服务走隧道🔒 服务端
我的规则 · 按顺序匹配(首命中生效)
git.51yanmei.com
域名后缀 · DOMAIN-SUFFIX
直连
*.aliyun.com
域名后缀 · DOMAIN-SUFFIX
直连
github.com
域名后缀 · DOMAIN-SUFFIX
走隧道
广告 / 追踪(GeoSite: category-ads)
规则集 · GEOSITE
拒绝
35.190.0.0/16
IP 段 · IP-CIDR
走隧道
+ 添加规则
最终(未命中任何规则)
FINAL · 兜底动作走隧道
从文本导入(Shadowrocket / Clash 规则)· 重置为默认
9:415G ▮▮▮
取消添加规则保存
类型
域名域名后缀关键字 IP-CIDRGeoIP 国家GeoSite 类别
动作
直连 DIRECT 走隧道 PROXY 拒绝 REJECT
说明(选填)
GeoIP/GeoSite 由服务端自托管规则集(.srs)支持,墙内可直连下载,无需梯子。IP-CIDR 支持 v4/v6。
预览:将翻译为 sing-box 路由规则
{ "domain_suffix": ["git.51yanmei.com"],
  "outbound": "direct" }
9:415G ▮▮▮
粘贴规则(Shadowrocket / Clash 风格)
# 一行一条:类型,值,动作
DOMAIN-SUFFIX,git.51yanmei.com,DIRECT
DOMAIN-SUFFIX,aliyun.com,DIRECT
DOMAIN-SUFFIX,tencent.com,DIRECT
DOMAIN-SUFFIX,flutter-io.cn,DIRECT
DOMAIN-SUFFIX,github.com,PROXY
GEOSITE,category-ads,REJECT
GEOIP,CN,DIRECT
FINAL,PROXY
解析后逐条加入「我的规则」,可再拖动排序。非法行(错误 CIDR / 未知类型)高亮跳过并提示。
解析结果预览
✓ 7 条有效
4 直连 · 1 走隧道 · 1 拒绝 · FINAL
OK
⚠ 0 条跳过
无非法行

桌面端(macOS / Windows)· 设置窗口

桌面有更大空间:左侧栏 + 规则表格(可内联编辑/拖动排序)+ 右侧实时预览生成的 sing-box 规则。同一套档案模型,与移动端共用服务端。

Pangolin — 设置
分流规则
全局代理智能分流全部直连
类型动作说明启用
域名后缀git.51yanmei.com直连CI 编译源
域名后缀aliyun.com直连maven 镜像
域名后缀github.com走隧道
GeoSitecategory-ads拒绝广告/追踪
IP-CIDR35.190.0.0/16走隧道
+ 添加规则⇪ 从文本导入↺ 重置默认FINAL 兜底:走隧道
实时预览 · route.rules
[
 {"action":"hijack-dns",
  "port":[53]},
 {"ip_cidr":["10.0.0.0/8",
   "192.168.0.0/16",...],
  "outbound":"direct"},
 {"domain_suffix":
   ["git.51yanmei.com",
    "aliyun.com"],
  "outbound":"direct"},
 {"domain_suffix":
   ["github.com"],
  "outbound":"auto"},
 {"rule_set":["geosite-ads"],
  "outbound":"block"},
 {"rule_set":
   ["geoip-cn","geosite-cn"],
  "outbound":"direct"}
]
final: "auto"

桌面端与移动端共用同一份服务端路由档案——在任一端改,另一端下次连接生效(per-user 同步)。桌面多了内联表格编辑与实时预览,适合高级用户。

三块界面在讲什么

① 分流规则主屏

代理模式三选一(全局代理 / 智能分流 / 全部直连),对应 Shadowrocket 的 Global/Rule/Direct。

内置规则是系统/服务端强制层:LAN 直连恒开(🔒),私有服务走隧道由服务端下发(🔒),国内直连可开关。

我的规则是用户自定义、可拖动排序的有序表,首命中生效FINAL 是兜底动作。

② 添加 / 编辑规则

类型(域名/后缀/关键字/IP-CIDR/GeoIP/GeoSite)→ 填 → 选动作(直连/走隧道/拒绝)。

实时预览该规则会被翻译成的 sing-box 路由片段,让高级用户看得懂、放心。

③ 从文本导入

粘贴 类型,值,动作 一行一条,兼容 Shadowrocket/Clash 直觉。批量建规则、迁移旧配置。

解析给出有效/跳过统计,非法行不静默吞。

动作与类型对照(给你确认)

动作含义sing-box outbound
直连不走隧道,本机物理网卡直接出网(国内站、CI 源、私网)direct
走隧道经 pangolin 节点出网(需科学上网的站)auto(REALITY/Hy2 择优)
拒绝直接阻断(广告/追踪/恶意域)block
类型值示例匹配
域名example.com精确
域名后缀aliyun.com含子域(*.aliyun.com)
关键字google域名含该串
IP-CIDR35.190.0.0/16IP 段(v4/v6)
GeoIP 国家CN该国 IP 段(自托管规则集)
GeoSite 类别category-ads / netflix预置域名集

需要你确认:①这套 UI/模型对不对路?②要不要「从文本导入」这一块(可后置)?③规则粒度够不够(要不要 per-app 分应用代理,shadowrocket 有,较重、建议后置)?确认后我出实现计划开发。设计取舍与实现细节见 配置说明文档 →