> For the complete documentation index, see [llms.txt](https://qx.atlucky.me/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://qx.atlucky.me/shi-yong-fang-fa/pei-zhi-wen-jian-xiang-jie/policy-zi-ding-yi-ce-le-zu.md).

# Policy（自定义策略组）

### 策略组的自定义添加

A：节点面板下通过自定义策略旁边的按钮通过UI的方式添加（强烈推荐）

B ：**文本编辑**添加, 支持所有类型的策略组（点 `右下角图标/配置文件/编辑/[policy] 部分`）

* 此方式支持所有类型策略组的添加

<figure><img src="/files/oEVUBqu7GUROVCcsRrEh" alt=""><figcaption></figcaption></figure>

### 说明：

{% hint style="info" %}
1，**static**：静态，指向手动选择的候选服务器。可以嵌套其它所有类型的策略组，需自己手动选择路线/子策略组.

格式：

`static=policy-name-1, Sample-A, Sample-B, Sample-C, img-url=http://example.com/icon.png`

2，**available**：可用，只可直接套用节点，不可嵌套其它策略组，自动选择第一个可用的节点(需要至少两个节点才有意义)，当策略被触发且策略结果不可用时，将立即启动并发 url 延迟测试。

如果当时没有网络请求接受策略，这意味着策略处于空闲状态，即使服务器关闭，测试也不会启动。那时，您可以通过手动启动测试来更新服务器状态，但是这没有任何意义。

格式：`available=policy-name-2, Sample-A, Sample-B, Sample-C,img-url=http://example.com/icon.png`

`3，`**round-robin** ：轮询策略，只能直接套用节点，不可以嵌套其它策略组，按网络请求轮流使用所有节点。

格式：`round-robin=policy-name-3, Sample-A, Sample-B, Sample-C,img-url=https://example.com/icon.png`

`4，`**`dest-hash`**`：`随机负载均衡，但相同域名走固定节点，只能直接套用节点，不可以嵌套其它策略组。

格式：`dest-hash=policy-name-3, Sample-A, Sample-B, Sample-C,img-url=https://example.com/icon.png`

5，**url-latency-benchmark**：最低延迟，选取延迟最优节点（误区：延迟最低不一定速度最快），该类型的策略有一个名为 check-interval(秒) 的参数，如果此策略已经被任何请求激活，则将考虑该间隔。

格式：`url-latency-benchmark=policy-name-8, resource-tag-regex=^sample, server-tag-regex=^example, check-interval=600, tolerance=50,C,img-url=https://example.com/icon.png`

`6,`**`图标`**`，详细见`[`自定义图标`](/shi-yong-fang-fa/zi-ding-yi-tu-biao.md)

`7，`**`需匹配的资源标签-正则`**`：对引用资源（俗称机场/订阅）或本地节点进行筛选，支持正则，`比如`A1`，`A2`，`A3`三个机场，需要筛选A1的全部节点，正则写入`1`即可；

`8，`**`需匹配的节点标签-正则`**`：`根据正则对所有节点名称进行筛选，比如筛选香港，新加坡，美国之类的节点，写入对应的正则即可；

两者同时使用，可以筛选出特定机场的指定节点，比如匹配的资源标签写`1`，匹配的节点标签写`香港` ，则可以筛选出A1机场的香港节点。
{% endhint %}

{% hint style="warning" %}
上面的资源标签匹配和节点标签的匹配以及后面的重写等诸多地方都会用到正则，关于正则的使用，见[正则简介](/zheng-ze-jian-jie.md)部分。
{% endhint %}

### 示例（策略组不可重复名称，以下仅作演示）

```
[policy]
#手动选择
static=微软服务, 香港节点, 美国节点, 日本节点
static= ️香港节点, server-tag-regex= 香港|🇭🇰️|HK|Hong, img-url=https://raw.githubusercontent.com/Koolson/Qure/master/IconSet/HK.png

#故障转移 当节点1故障时自动切换到节点2，以此类推
available=香港故障转移,节点1,节点2,节点3
available=香港故障转移,server-tag-regex= 香港|🇭🇰️|HK|Hong

#节点轮询 将按列表的顺序轮流使用其中的节点。
round-robin=香港节点轮询,节点1,节点2,节点3
round-robin=香港节点轮询,server-tag-regex= 香港|🇭🇰️|HK|Hong

#最低延迟 选取延迟最优节点。
url-latency-benchmark=香港最低延迟,节点1,节点2,节点3
url-latency-benchmark=香港最低延迟,节点1,节点2,节点3,resource-tag-regex=^sample, server-tag-regex=^example, check-interval=600, alive-checking=false, tolerance=0

#负载均衡 随机负载均衡，但相同域名走固定节点。
dest-hash=policy-name-5, Sample-A, Sample-B, Sample-C
#SSID策略组 根据所处的网络情况切换策略组
ssid=policy-name-4, Sample-A, Sample-B, LINK_22E171:Sample-B, LINK_22E172:Sample-C,img-url=https://example.com/icon.png
```

#### 参数说明：

* `resource-tag-regex=` 表示使用正则筛选需要匹配的资源标签（比如机场名称）
* `server-tag-regex=` 表示使用正则筛选需要匹配的节点标签（比如节点中带有香港、美国这种）
* `check-interval=600` 表示每600秒检查一次节点延迟，如果此策略已由任何请求激活，则将重新计算该间隔。
* `alive-checking=false` 如果被设置为`true`，那么即使该策略处于空闲状态，也会重新计算间隔时间，并启动基准测试。
* `tolerance=0` 表示上一次节点的最低延迟数值与本次节点最低延迟数值的差值，当超过这个差值时切换至最低延迟的节点
* img-url 参数用于指定策略组图标，可远程，也可本地/iCloud(Quantumult X/Images路径下) （108\**108 大小）*
* direct/proxy/reject 则只能用本地图标，名字分别为 direct.png, proxy.png,reject.png 放置于 Images 文件夹下即可生效 (108108 大小)&#x20;
* 图标相关见[自定义图标](/shi-yong-fang-fa/zi-ding-yi-tu-biao.md)

### &#x20;不可通过UI添加的策略组：SSID策略组

该策略组无法通过UI直接添加，只能在配置文件`[policy]`下写入；通常是在使用软路由时，让QX走直连，软路由接管代理。此时可以让去广告规则依旧保持`reject`，避免失效。其具体写法为

```
[policy]
; ssid = <策略名称>, <蜂窝数据下默认策略>, <Wi-Fi 下：策略>, <SSID 名称: 策略>
ssid = SSID, 策略组1, 策略组2, Wi-Fi-1:Proxy, Wi-Fi-2:direct

[filter_local]
final, SSID
```

* 处于蜂窝数据时，会走 策略组1 ；
* 处于非Wi-Fi-1或Wi-Fi-2时，会走 策略组2&#x20;
* 处于⁠Wi-Fi-1或Wi-Fi-2时，走指定的策略，可以是 `direct`、`proxy`、`reject` 或 `策略组`，此处需至少有一个Wi-Fi参数。<br>

#### &#x20;示例：

当 全球加速 选中 香港SSID ，香港SSID 选中 香港节点 时：

* 特定Wi-Fi下：全球加速 → 香港SSID → DIRECT
* 蜂窝数据下：全球加速 → 香港SSID → 香港节点 → 策略组中选择的节点

```
static=全球加速, 香港SSID, 美国SSID, 狮城SSID, 台湾SSID, 日本SSID, proxy, img-url=https://raw.githubusercontent.com/fmz200/wool_scripts/main/icons/apps/Quantumult_X.png

ssid=香港SSID, 香港节点, 香港节点, Wi-Fi_5G:DIRECT, Wi-Fi_2.4G:DIRECT, img-url=https://raw.githubusercontent.com/fmz200/wool_scripts/main/icons/erdongchanyo/SSID.png

url-latency-benchmark=香港节点, server-tag-regex=^(?=.*((?i)🇭🇰|香港|(\b(HK|Hong)\b)))(?!.*((?i)回国|校园|游戏|(\b(GAME)\b))).*$, check-interval=600, tolerance=0, alive-checking=false, img-url=https://raw.githubusercontent.com/Koolson/Qure/master/IconSet/Color/Hong_Kong.png
```

效果如下图：

<figure><img src="/files/dlxvfeXBiEN1mYXe77AB" alt=""><figcaption></figcaption></figure>

### 编辑/删除策略组

对于策略组的修改和删除，可以通过在相应策略组上长按出现编辑/删除选项，进入UI界面进行操作，也可以在文本模式进行编辑/删除操作，不过需注意以下几点：

* 修改策略组名称，**必须**同时需要到引用该策略组的其它策略组里面修改成对应的名称；
* 如果只是修改策略组参数，只需要长按策略组，出现编辑选项后，点击进入编辑对应的策略组参数；也可以在文本模式进行修改（不建议）；
* 如果分流规则有指向进行了改名操作的策略组，**必须**在改名操作完成后，在分流规则中重新指定到改名后的策略组，不然原分流规则会失效；
* 如果分流规则有指向进行了将进行删除操作的策略组，**建议在改名操作前**，在分流规则中先指定一个其它的策略组；
* 如果是删除已有策略组，可以在UI界面长按策略组，选择删除选项即可，**比须**同时到引用了该策略组的所有其它策略组里面删除掉该策略组，也可以在文本模式进行（不建议）；
* **能够进行UI操作的，尽量在UI界面进行**。

{% hint style="info" %}
**策略组的存在是为规则服务的，策略组建立后，需要配合添加到规则当中，才可以生效**
{% endhint %}

{% hint style="info" %}
一般情况下，如果所用的节点很稳定，那么可以采用 static，选中了就一直用即可，如果不想去选，那么 available 和 url-latency-benchmark 均是一个比较好的选择，区别就是 available 正常情况下会默认选择第一个，不可用时才会选择下一个，而 url-latency-benchmark 会根据设置情况，选择在某个时间段内延迟最低的节点。这里重点提醒一下，延迟最低不等于速度最快，延迟低仅仅代表响应时间短，但是可能会带宽比较低，可能才 10KB/s，而延迟高一些的可能 10MB/s。

round-robin 和 dest-hash 两种都是负载均衡策略，都是随机使用策略组内包含的节点，但是算法上有区别，见上面的说明。
{% endhint %}
