design(configurable-proxy): Settings页衔接(Smart routing→分流规则入口)+ 默认/自定义规则冲突处理

- Settings 的 Smart routing 二元开关演进为「分流规则」入口行(显示模式+chevron)
- 冲突处理:系统层永远赢>用户规则(有序首命中)>智能分流>FINAL;
  UI 主动标记①被遮蔽永不命中②撞锁定系统目标 两类冲突
原型加 before/after 对照 + 冲突可视化例;说明文档加对应章节。

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
wangjia
2026-07-27 01:57:38 +08:00
parent 51317e9f43
commit f10e887c2a
2 changed files with 39 additions and 1 deletions
+17
View File
@@ -104,6 +104,23 @@ App ◀────────── 完整 sing-box 配置(含用户规则)
</div>
<div class="box">用户规则排在国内分流<b>之前</b>——这样"我要 github 走隧道""我要某国内站走隧道"能压过 geoip-cn 的直连默认。系统层(1-3)永远在用户规则之上,防止用户误配把 DNS/LAN/私有服务弄坏。</div>
<h3>默认规则 vs 自定义规则 · 冲突处理</h3>
<p>确定性,不靠猜——冲突由<b>层级 + 顺序</b>唯一裁决:</p>
<ul>
<li><b>系统强制层永远赢</b>(层1-3:DNS劫持/LAN/私有服务走隧道):在用户规则之上,用户不可覆盖。针对这些目标不存在"冲突"。</li>
<li><b>用户规则赢过智能分流</b>(层4 在层5 前):用户显式规则压过 geoip-cn 的宽泛默认——这是用户意图应有的优先级。</li>
<li><b>用户规则内部:有序,首命中赢</b>(同 Shadowrocket)。UI 支持拖动排序。</li>
</ul>
<p><b>UI 主动提示两类冲突</b>(编辑器里实时标记,不静默):</p>
<table>
<tr><th>冲突</th><th>提示</th></tr>
<tr><td>被前面规则遮蔽、永不命中</td><td>规则灰掉 + 「已被上面「X」覆盖,永不命中」</td></tr>
<tr><td>撞到锁定的系统目标(如给私有服务域名加规则)</td><td>「该域名由系统强制走隧道,此规则不生效」</td></tr>
</table>
<h3>与现有 Settings「Smart routing」的衔接</h3>
<p>现在 Settings 的 <code>Smart routing</code> 是二元开关(= <code>builtin.china_direct</code>)。改为<b>渐进式披露入口</b>:该行变成「分流规则」设置行(右侧显示当前模式 + chevron →),点进去即分流规则屏。休闲用户维持"智能分流"不点即可(等价现在开关开着),高级用户点进去自定义。老的二元开关被三模式(全局/智能分流/直连)涵盖。</p>
<h2>5. 直连是否真"不走 VPN"</h2>
<p><code>direct</code> outbound 让 sing-box 从物理网卡直接出连接。但 TUN <code>strict_route</code> 会把包重新捕回隧道——已有两个机制解决,用户规则复用:</p>
<ul>