策略组¶
策略组用于将多个代理策略组合在一起,通过不同的选择策略决定最终使用的代理。策略组在 [Proxy Group] 段落中定义。
手动选择组 (Select)¶
在用户界面上手动选择要使用的策略:
- Surge iOS:使用小组件快速切换策略
- Surge Mac:在菜单栏菜单中切换策略
自动测试组 (URL-Test)¶
通过测试到目标 URL 的延迟,自动选择最优策略:
参数¶
| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
url |
URL | http://www.gstatic.com/generate_204 |
测试 URL |
interval |
秒 | 600 | 测试结果的有效期 |
tolerance |
毫秒 | 100 | 切换容差,防止频繁切换 |
timeout |
秒 | 5 | 测试超时 |
evaluate-before-use |
布尔 | false | 首次使用前等待测试完成 |
示例:
临时覆盖¶
手动选择策略可临时覆盖自动测试结果:
- Surge Mac:主菜单中对应的组里找到覆盖选项
- Surge iOS:策略组视图中长按对应策略的菜单找到覆盖选项
降级组 (Fallback)¶
根据优先级和可用性选择策略。定义在前面的策略具有更高优先级:
参数¶
| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
url |
URL | 默认测试 URL | 测试 URL |
interval |
秒 | 600 | 测试结果有效期 |
timeout |
秒 | 5 | 测试超时 |
临时覆盖¶
同自动测试组,可通过手动选择临时覆盖。
负载均衡组 (Load Balance)¶
从可用的子策略中随机选择一个策略:
参数¶
| 参数 | 说明 |
|---|---|
persistent=true |
对相同的目标主机名使用相同策略,避免触发风控 |
子网组 (Subnet)¶
根据当前网络环境自动选择策略。使用子网表达式作为条件:
参数¶
| 参数 | 必填 | 说明 |
|---|---|---|
default |
是 | 无匹配时的默认策略 |
TYPE:WIFI |
否 | 匹配所有 Wi-Fi 网络 |
TYPE:WIRED |
否 | 匹配有线网络 |
TYPE:CELLULAR |
否 | 匹配蜂窝网络 |
SSID:name |
否 | 匹配指定 SSID |
BSSID:mac |
否 | 匹配指定 BSSID |
兼容性
从 Surge iOS 4.12.0 / Surge Mac 4.5.0 起,SSID 组更名为子网组。依然支持旧语法 ssid 作为组类型关键字。
智能策略组 (Smart)¶
Smart 策略组由 Surge 自研算法引擎驱动,自动从子策略中选择最优策略,旨在取代 url-test / fallback / load-balance。该功能为 Surge iOS 订阅功能,Surge Mac 5 可免费使用。
特性:
- 实时动态优化:收集握手延迟、丢包率、连通性、RTT 等多维度信息动态决策
- 自适应重试:连接故障时立即切换到备选策略完成连接,上层连接无感知;以历史数据判定线路异常,可在极短时间内触发切换
- 站点调优:记录各子策略访问不同站点的连通性和延迟表现,针对性调整策略选择
- 测试优化:根据使用情况选取部分策略重测,避免大量策略同时测试产生开销
策略优先级¶
可通过 policy-priority 参数为子策略设置权重,干涉算法决策(无特别需求无需配置)。
- 参数格式:对策略名匹配正则表达式的策略,将其延迟乘以指定系数
- 系数
< 1为提高优先级,> 1为降低优先级,默认1 - 可连续重复配置,单个策略只匹配一次:
- 系数设为
0表示总是优先使用该策略,失败后再尝试其他(不推荐)
包含策略 (Policy Including)¶
从外部文件/URL 导入¶
策略文件内容:
参数¶
| 参数 | 说明 |
|---|---|
policy-path |
外部策略列表的 URL 或文件路径 |
update-interval |
更新间隔(秒),仅 URL 有效 |
policy-regex-filter |
正则表达式过滤策略名称 |
external-policy-modifier |
修改外部策略参数,如 test-url=http://apple.com/,tfo=true |
external-policy-name-prefix |
为外部策略名增加前缀 |
包含现有策略¶
通用策略组参数¶
| 参数 | 说明 |
|---|---|
no-alert |
不显示策略变更通知 |
hidden |
不在菜单和策略选择视图中显示 |