---
url: /configuration/provider.md
description: 从文件、URL 或内联 payload 读取代理 provider
---

# providers

从 Clash YAML、分享链接或内联映射读取一组代理，并可按名称、类型、健康检查改写。

```yaml check
providers:
  local:
    payload:
      - {name: direct-a, type: direct}
    override:
      additional_prefix: local-
    health_check:
      enable: false

dns:
  servers:
    default: {type: udp, address: 127.0.0.1:53}
  final: default
```

## 字段

### path

* 类型：路径。
* 必填：可选。
* 默认：有 `url` 时为数据目录下 `providers/<name>`。
* 取值：相对或绝对路径。

### url

* 类型：HTTP/HTTPS URL。
* 必填：可选。
* 取值：Clash `proxies:` YAML，或一行一个代理链接的文本；可带 Base64。

### refresh

* 类型：时长。
* 必填：可选。
* 默认：`1d`。

### http_client

* 类型：`http_clients` 中的名字。
* 必填：可选。
* 默认：`route.default_http_client`，再没有时使用普通 HTTP 客户端。

### via

* 类型：出站名。
* 必填：可选。
* 默认：`route.final`；优先于 `http_client` 的 `via`。

### header

* 类型：映射；每个头可写一个字符串或字符串数组。
* 必填：可选。
* 默认：空。

### size_limit

* 类型：大小。
* 必填：可选。
* 默认：`64MiB`。

### payload

* 类型：数组，元素是 Clash 代理映射或链接字符串。
* 必填：可选。
* 默认：无。
* 限制：没有缓存文件时作为订阅内容；有 `url` 时在首次成功获取前临时使用。

### filter

* 类型：字符串；一个或多个用反引号包住的 Perl 正则。
* 必填：可选。
* 默认：不筛选。
* 匹配对象：代理名称；命中顺序也决定保留顺序。

### exclude_filter

* 类型：字符串；一个或多个用反引号包住的 Perl 正则。
* 必填：可选。
* 默认：不排除。

### exclude_type

* 类型：字符串；类型名用 `|` 分隔。
* 必填：可选。
* 默认：不按类型排除。
* 示例：`vmess|vless|trojan`。

### override

* 类型：映射。
* 必填：可选。
* 默认：空。
* 注意：serde 字段名是 `override`；写 `overrides` 会被拒绝。

### override.additional_prefix

* 类型：字符串。
* 默认：无。

### override.additional_suffix

* 类型：字符串。
* 默认：无。

### override.proxy_name

* 类型：`{pattern, target}` 数组。
* 默认：空。
* 行为：按顺序用 Rust 正则在代理名中替换，`$1` 等可引用捕获组。

### override.proxy_name\[].pattern

* 类型：正则字符串。
* 必填：是。

### override.proxy_name\[].target

* 类型：替换字符串。
* 必填：是。

### override.udp

* 类型：布尔值。
* 默认：不改。
* `false` 将 UDP 设为 `off`；`true` 只把原来的 `off` 恢复为协议的默认选择。

### override.udp_over_tcp

* 类型：布尔值。
* 默认：不改。
* `true` 将 UDP 设为 `over-tcp`。

### override.skip_cert_verify

* 类型：布尔值。
* 默认：不改。
* 只对能接受 TLS 信任设置的出站生效。

### override.dialer_proxy

* 类型：出站名。
* 默认：不改。
* 作用：设置每个代理到其服务器时的 `detour`。

### override.interface_name

* 类型：接口名。
* 默认：不改。
* 作用：设置直接拨号时的 `interface`。

### override.routing_mark

* 类型：32 位无符号整数。
* 默认：不改。
* 作用：设置直接拨号套接字的 `mark`。

### override.mptcp

* 类型：布尔值。
* 默认：不改。
* 作用：设置 `tcp_multi_path`。

### override.ip_version

* 类型：字符串。
* 默认：`dual` 语义。
* 取值：`dual`、`ipv4`、`ipv6`、`ipv4-prefer`、`ipv6-prefer`。
* 映射：`domain_strategy` 的 `ipv4_only`、`ipv6_only`、`prefer_ipv4`、`prefer_ipv6`。

### override.tfo

* 类型：布尔值。
* 默认：不改。
* 行为：接受但 mayami 不请求 TCP Fast Open，因此不影响连接。

### override.up

* 类型：字符串。
* 默认：不改。
* 行为：接受，当前实现不读取。

### override.down

* 类型：字符串。
* 默认：不改。
* 行为：接受，当前实现不读取。

### health_check

* 类型：映射。
* 必填：可选。
* 默认：关闭；打开后每 5 分钟，`lazy: true`。

### health_check.enable

* 类型：布尔值。
* 默认：`false`。

### health_check.url

* 类型：HTTP/HTTPS URL。
* 默认：Clash 自带的测试 URL。

### health_check.interval

* 类型：时长。
* 默认：`5m`。

### health_check.timeout

* 类型：时长。
* 默认：`5s`。

### health_check.lazy

* 类型：布尔值。
* 默认：`true`。
* 行为：上一轮后没有流经过该 provider 的代理时跳过一轮。

### health_check.expected_status

* 类型：字符串。
* 默认：实现自己的成功状态判断。
* 取值：mihomo 的状态表达式写法。

## 说明

同一个 provider 中先按类型、排除规则和 `filter` 筛选，再按名称去重；能读取的代理才应用 `override`。VMess、VLESS、Trojan、Hysteria 等 mayami 不支持的代理会被跳过并记录原因。

## 相关

* [http_clients](/configuration/http-client)
* [共享 dial](/configuration/shared/dial)
* [共享 TLS 客户端](/configuration/shared/tls-client)
