4.1 KiB
将隐式路由策略显式建模为规则预设
状态:已接受,已实现(2026-10-24;默认项与展示顺序于 2026-10-25 调整)。
ADR-0055 已接受、已实现:将产品术语统一为“规则方案”,取代下文“自定义规则保留自身行动”的约定,并规定现有方案自定义规则的迁移方式。
决定
规则、全局、直连仍是代理模式。规则模式内使用三种规则预设,展示顺序为“仅GFW列表内目标代理”“中国大陆目标直连”“中国大陆目标代理”。预设一起确定内置来源、命中行动和默认动作,替代原来的默认动作选择入口,不另设独立默认动作开关。新预设复用中国域名、.cn 和中国 IPv4 数据,将其用于代理,其余目标默认直连;固定本地目标仍直连,不维护视频专用集合,也不承诺平台内容可播放。
每项预设独立拥有自定义规则集合和规则停用选择。自定义规则保留自身行动,沿用现有冲突机制,用于补充规则而不保证覆盖内置规则。预设内继续使用“匹配条件+行动”的规则身份及跨来源停用语义,修改不影响其他预设。不增加共享自定义层或同一条目的多预设归属。
规则预设是规则工作区的顶层范围。浏览只展示所选预设的来源及该预设下的行动;搜索、来源筛选、其他过滤和地址测试按预设独立。启停操作明确限定于本预设,并区分启用状态与遮蔽状态。
代理规则页面仅负责管理。查看或编辑某项预设不切换实际路由,页面不显示预设使用状态,也不提供“使用此预设”操作;实际路由选择属于代理控制入口。保留现有来源侧栏及筛选方式,移除“全部规则”项,不增加“全部来源”汇总入口。
页面顶部使用常驻分段选择控件展示三个规则预设,位于地址测试上方。地址测试下方保留来源侧栏与规则列表,搜索、行动及启用状态过滤作用于当前选中来源,来源资料继续在侧栏下方展示。各预设独立记住所选来源、搜索、过滤和测试状态,首次进入默认选中“自定义规则”。
地址测试依据所选预设的完整规则和默认动作解释代理或直连结论,区分规则命中与未匹配时采用默认动作,并展示决定行动的规则。结果不受搜索、过滤、实际代理模式或运行状态影响,不要求该预设正在使用。测试输入和结果按预设独立保留;测试不解析 DNS、不测试连通性,域名测试明确说明未检查 DNS 解析后的 IP 规则。
没有显式保存的预设或旧版默认动作偏好时,默认选第一项“仅GFW列表内目标代理”;显式保存的预设继续生效,旧版默认动作继续映射到等价预设。旧自定义规则和规则启用/禁用用户配置均不迁移,不按行动拆分,也不复制到新预设。新预设工作区不继承旧自定义条目或旧停用选择,按默认启用状态初始化;发版时明确说明这两项不兼容变化。
取舍与替代
原设计共享自定义规则,通过行动与默认动作的关系隐式区分用途,不能保证这些规则适用于回国场景。独立集合增加预设范围状态,但避免切换场景时人工重新启停规则。规则来源降为预设内部的筛选维度,避免将未参与该预设的来源或原始行动误认为当前策略。
本决定取代 ADR-0023 中“规则停用不区分预设”和“离线测试完整来源集合、不读取规则策略”的范围约定;固定本地保护、规则身份、预设内跨来源停用和孤立停用身份保留原则不变。
实现
RulePreset 集中确定来源、有效行动和默认动作。RulesWorkspaces 为每个预设保留独立 RulesWorkflow,异步操作始终发布到所属工作区。运行控制器按实际预设选择 RuleDocumentSession,只为当前预设的保存安排运行收敛。新规则文件位于原规则目录下的 rule-presets/<preset>/;旧共享文件保留,不读入新集合。