跳转到主要内容
覆写(Override)允许你在不修改原始订阅配置的前提下,自定义配置项。订阅更新时,你的自定义配置仍然保留,不会被覆盖。
大多数情况下推荐使用app内的可视化编辑

修饰符规则

覆写配置使用 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
  }
}

工作原理

简单值

简单值类型直接覆盖。
{
  "mode": "direct"
}

嵌套对象

嵌套对象默认递归合并,只覆盖指定的子字段。
dns:
  enable: true
  listen: 0.0.0.0:53
  nameserver:
    - 223.5.5.5
使用 -force 强制覆盖整个对象,未指定的子字段会丢失。
{
  "dns-force": {
    "enable": false
  }
}
建议:如需修改嵌套对象的多个子字段,建议直接写出所有需要的字段,而不是使用 -force

数组类型

数组类型使用修饰符控制行为。
写法行为
"rules": [...]覆盖整个数组
"rules-start": [...]插入到数组开头
"rules-end": [...]追加到数组末尾
rules:
  - MATCH,DIRECT

Map 类型

Map 类型使用 -merge 合并键值对。
hosts:
  localhost: 127.0.0.1

运行示例

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

注意事项

字段路径:覆写字段名必须与配置文件中的路径一致。例如使用 dns 而非 dns-config
数组类型:使用 -start-end 时,值必须是数组。
强制覆盖:使用 -force 时,未指定的子字段会丢失。

支持覆写的字段

完整字段清单见:字段清单 常见可覆写字段:
分类字段
全局modelog-levelipv6allow-lan
DNSdns.enabledns.nameserverdns.fake-ip-filter
入站portsocks-portmixed-port
TUNtun.enabletun.stacktun.mtu
规则rulesproxiesproxy-groups
其他hostssniffergeox-url
Last modified on March 28, 2026