覆写(Override)允许你在不修改原始订阅配置的前提下,自定义配置项。订阅更新时,你的自定义配置仍然保留,不会被覆盖。
修饰符规则
覆写配置使用 JSON 格式,通过修饰符控制合并行为。
| 修饰符 | 语法 | 用途 |
|---|
| 无 | "key": value | 简单值直接覆盖,对象递归合并 |
-start | "key-start": [...] | 将数组元素插入到原数组前面 |
-end | "key-end": [...] | 将数组元素追加到原数组末尾 |
-merge | "key-merge": {...} | 合并 Map 类型的键值对 |
-force | "key-force": {...} | 强制覆盖整个对象,不递归合并 |
配置示例
基础示例
{
"mode": "rule",
"mixed-port": 7890,
"dns": {
"enable": true,
"nameserver": ["8.8.8.8"]
},
"rules-start": ["DOMAIN-SUFFIX,local,DIRECT"],
"hosts-merge": {
"test.local": "192.168.1.1"
}
}
完整示例
{
"mode": "rule",
"log-level": "info",
"allow-lan": true,
"dns": {
"nameserver": ["192.168.1.1", "8.8.8.8"]
},
"hosts-merge": {
"router.local": "192.168.1.1",
"nas.local": "192.168.1.100"
},
"rules-start": [
"IP-CIDR,192.168.0.0/16,DIRECT",
"DOMAIN-SUFFIX,local,DIRECT"
],
"tun": {
"enable": true,
"stack": "gvisor",
"mtu": 9000
}
}
工作原理
简单值
简单值类型直接覆盖。
嵌套对象
嵌套对象默认递归合并,只覆盖指定的子字段。
dns:
enable: true
listen: 0.0.0.0:53
nameserver:
- 223.5.5.5
{
"dns": {
"enable": false
}
}
dns:
enable: false
listen: 0.0.0.0:53
nameserver:
- 223.5.5.5
使用 -force 强制覆盖整个对象,未指定的子字段会丢失。
{
"dns-force": {
"enable": false
}
}
dns:
enable: false
# listen 和 nameserver 丢失
建议:如需修改嵌套对象的多个子字段,建议直接写出所有需要的字段,而不是使用 -force。
数组类型
数组类型使用修饰符控制行为。
| 写法 | 行为 |
|---|
"rules": [...] | 覆盖整个数组 |
"rules-start": [...] | 插入到数组开头 |
"rules-end": [...] | 追加到数组末尾 |
{
"rules-start": ["DOMAIN-SUFFIX,local,DIRECT"],
"rules-end": ["DOMAIN-SUFFIX,example.com,Proxy"]
}
rules:
- DOMAIN-SUFFIX,local,DIRECT
- MATCH,DIRECT
- DOMAIN-SUFFIX,example.com,Proxy
Map 类型
Map 类型使用 -merge 合并键值对。
hosts:
localhost: 127.0.0.1
{
"hosts-merge": {
"test.local": "192.168.1.1",
"dev.local": "192.168.1.2"
}
}
hosts:
localhost: 127.0.0.1
test.local: 192.168.1.1
dev.local: 192.168.1.2
运行示例
mixed-port: 7890
dns:
enable: true
nameserver: [https://dns.alidns.com/dns-query]
proxies:
- name: ss
type: ss
server: 127.0.0.1
port: 443
password: mihomo
rules:
- GEOIP,CN,DIRECT
- MATCH,home
{
"mixed-port": 7891,
"dns": {
"nameserver": ["https://doh.pub/dns-query"]
},
"proxies-end": [
{
"name": "vmess",
"type": "vmess",
"server": "example.com",
"port": 443,
"uuid": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
}
],
"rules-start": [
"DOMAIN-SUFFIX,local,DIRECT"
],
"rules-end": [
"DOMAIN-SUFFIX,example.com,Proxy"
]
}
mixed-port: 7891
dns:
enable: true
nameserver:
- https://dns.alidns.com/dns-query
- https://doh.pub/dns-query
proxies:
- name: ss
type: ss
server: 127.0.0.1
port: 443
password: mihomo
- name: vmess
type: vmess
server: example.com
port: 443
uuid: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
rules:
- DOMAIN-SUFFIX,local,DIRECT
- GEOIP,CN,DIRECT
- MATCH,home
- DOMAIN-SUFFIX,example.com,Proxy
注意事项
字段路径:覆写字段名必须与配置文件中的路径一致。例如使用 dns 而非 dns-config。
数组类型:使用 -start 或 -end 时,值必须是数组。
强制覆盖:使用 -force 时,未指定的子字段会丢失。
支持覆写的字段
完整字段清单见:字段清单
常见可覆写字段:
| 分类 | 字段 |
|---|
| 全局 | mode、log-level、ipv6、allow-lan |
| DNS | dns.enable、dns.nameserver、dns.fake-ip-filter |
| 入站 | port、socks-port、mixed-port |
| TUN | tun.enable、tun.stack、tun.mtu |
| 规则 | rules、proxies、proxy-groups |
| 其他 | hosts、sniffer、geox-url |