From f10e887c2a88d8c85c9a684a7524798abba02536 Mon Sep 17 00:00:00 2001 From: wangjia <809946525@qq.com> Date: Mon, 27 Jul 2026 01:57:38 +0800 Subject: [PATCH] =?UTF-8?q?design(configurable-proxy):=20Settings=E9=A1=B5?= =?UTF-8?q?=E8=A1=94=E6=8E=A5(Smart=20routing=E2=86=92=E5=88=86=E6=B5=81?= =?UTF-8?q?=E8=A7=84=E5=88=99=E5=85=A5=E5=8F=A3)+=20=E9=BB=98=E8=AE=A4/?= =?UTF-8?q?=E8=87=AA=E5=AE=9A=E4=B9=89=E8=A7=84=E5=88=99=E5=86=B2=E7=AA=81?= =?UTF-8?q?=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Settings 的 Smart routing 二元开关演进为「分流规则」入口行(显示模式+chevron) - 冲突处理:系统层永远赢>用户规则(有序首命中)>智能分流>FINAL; UI 主动标记①被遮蔽永不命中②撞锁定系统目标 两类冲突 原型加 before/after 对照 + 冲突可视化例;说明文档加对应章节。 Co-Authored-By: Claude Opus 4.8 --- design/prototype/screens/routing-rules.html | 23 ++++++++++++++++++++- docs/configurable-proxy-spec.html | 17 +++++++++++++++ 2 files changed, 39 insertions(+), 1 deletion(-) diff --git a/design/prototype/screens/routing-rules.html b/design/prototype/screens/routing-rules.html index fa8990f..da81d85 100644 --- a/design/prototype/screens/routing-rules.html +++ b/design/prototype/screens/routing-rules.html @@ -154,7 +154,28 @@ -
+

与现有 Settings 页的衔接

+

现在 Settings 里的「Smart routing」是个二元开关。改为渐进式披露入口:变成「分流规则」设置行(显示当前模式 + chevron),点进去就是上面的分流规则屏。休闲用户不用点,行为等价开关开着。

+
+
+
现在(二元开关)
+
Smart routing
Accelerate abroad, direct at home
+
+
+
改后(入口 → 分流规则屏)
+
分流规则
自定义直连 / 走隧道 / 拒绝
智能分流
+
+
+ +

默认规则 vs 自定义规则 · 冲突处理

+

确定性分层 + 顺序,不靠猜:系统强制层永远在最上(用户改不了)→ 用户规则(有序,首命中)→ 智能分流默认 → FINAL。UI 主动标记两类冲突:

+
+
github.com
域名后缀
走隧道
+
github.com/foo
⚠ 已被上面「github.com 走隧道」覆盖,永不命中
直连
+
git.yanmeiai.com
⚠ 该域名由系统强制走隧道(私有服务),此规则不生效
直连
+
+ +

为什么用 v2 真 ui-kit

本屏所有组件(段选 .segswitch、设置行 .setting-row、开关 .toggle、卡片 .card、胶囊 .pill、按钮 .btn)都来自 v2 设计系统真原子,颜色全走 token,与线上 App 一致——不是独立 mockup。动作语义色(直连绿/走隧道橙/拒绝红)是原型内联,实现时收进 atoms。

待你确认(设计层)

①规则粒度够不够 ②要不要分应用代理(per-app,建议后置)③「从文本导入」Phase 1 还是 2 ④档案 per-user 还是 per-device。确认后出 Phase 1 实现计划。

diff --git a/docs/configurable-proxy-spec.html b/docs/configurable-proxy-spec.html index 768518a..b164999 100644 --- a/docs/configurable-proxy-spec.html +++ b/docs/configurable-proxy-spec.html @@ -104,6 +104,23 @@ App ◀────────── 完整 sing-box 配置(含用户规则)
用户规则排在国内分流之前——这样"我要 github 走隧道""我要某国内站走隧道"能压过 geoip-cn 的直连默认。系统层(1-3)永远在用户规则之上,防止用户误配把 DNS/LAN/私有服务弄坏。
+

默认规则 vs 自定义规则 · 冲突处理

+

确定性,不靠猜——冲突由层级 + 顺序唯一裁决:

+ +

UI 主动提示两类冲突(编辑器里实时标记,不静默):

+ + + + +
冲突提示
被前面规则遮蔽、永不命中规则灰掉 + 「已被上面「X」覆盖,永不命中」
撞到锁定的系统目标(如给私有服务域名加规则)「该域名由系统强制走隧道,此规则不生效」
+ +

与现有 Settings「Smart routing」的衔接

+

现在 Settings 的 Smart routing 是二元开关(= builtin.china_direct)。改为渐进式披露入口:该行变成「分流规则」设置行(右侧显示当前模式 + chevron →),点进去即分流规则屏。休闲用户维持"智能分流"不点即可(等价现在开关开着),高级用户点进去自定义。老的二元开关被三模式(全局/智能分流/直连)涵盖。

+

5. 直连是否真"不走 VPN"

direct outbound 让 sing-box 从物理网卡直接出连接。但 TUN strict_route 会把包重新捕回隧道——已有两个机制解决,用户规则复用: