大哥云 - 极速稳定的加速器,加速上外网 自由切换节点 - 1080P无压力 防封稳定xin

clash 配置文件怎么写?以 mihomo 为例的 YAML 模板与报错排查

更新于 2026-10-26 · dageyun.buzz

简答:先判断你拿到的是订阅链接、本地 YAML 还是配置覆写;以 mihomo 为例,保留空格缩进并先加载最小模板,再逐步加入节点、策略组和规则,通常能定位是格式、节点来源还是端口问题。

定义:clash 配置文件是用 YAML 编写的文本配置,负责端口、节点或节点订阅、策略组、DNS 与分流规则,本身通常不等于节点资源。

先分清三种文件:订阅、本地 YAML 和配置覆写

本文是第三方使用指南,不代表任何客户端或服务的官方页面。这里的“clash 配置文件”主要指以 mihomo 为例的 YAML 配置;经典 Clash、其他内核或图形客户端可能不支持全部字段,正式使用前应核对当前内核文档。

对象是什么应该怎么处理
订阅链接通过 URL 获取节点集合或完整配置在支持订阅的客户端配置页面导入并更新
本地 YAML保存端口、节点、策略组、DNS 和规则导入客户端,或用文本编辑器修改后重新加载
配置覆写在不直接改动原始订阅的情况下覆盖部分字段使用客户端支持的覆写、扩展配置或 Merge 功能

配置文件本身通常不提供节点。节点必须来自你自己拥有且确认可信的订阅,或者来自本地 proxies 定义;没有节点的 YAML 可以验证结构,却不能单独产生可用线路。订阅地址、节点密码和控制接口密钥都不要公开粘贴。

如果你使用 Clash Verge Rev,官方文档把远程订阅和本地配置分开处理:本地配置可以通过“新建配置文件导入”或“拖拽配置文件导入”,其中拖拽导入要求版本至少为 v1.6.2。Clash Verge Rev 配置文件导入文档

先用最小模板验证 YAML 是否能加载

不要一开始就加入远程订阅、DNS、规则集和 TUN。先用下面的最小模板验证文件能否被当前 mihomo 内核读取。复制时保留空格缩进,不能使用 Tab;mihomo 文档说明 YAML 对大小写敏感,并使用缩进表达层级。mihomo YAML 语法说明

mixed-port: 7890
allow-lan: false
mode: rule
log-level: info
ipv6: false

proxies: []

proxy-groups:
  - name: 选择代理
    type: select
    proxies:
      - DIRECT

rules:
  - DOMAIN-SUFFIX,example.com,DIRECT
  - MATCH,选择代理

字段怎么看:mixed-port 同时提供 HTTP 和 SOCKS 入口;allow-lan: false 默认不向局域网开放;mode: rule 使用规则模式;proxy-groups 定义策略组;rules 按从上到下的顺序匹配,MATCH 通常作为最后的兜底规则。mihomo 通用配置字段 mihomo 路由规则文档

这个模板中的 proxies: [] 代表没有内置节点。若客户端提示配置有效但节点列表为空,这不是 YAML 语法错误,而是节点来源尚未加入。

进阶模板:加入节点提供者、策略组、规则集和 DNS

最小模板能加载后,再逐项增加功能。下面示例仍以 mihomo 字段为准,远程地址只是占位符;请替换成你自己确认可信的订阅地址,不要把真实订阅链接发布到文章、截图或日志中。

proxy-providers:
  我的节点:
    type: http
    url: "https://example.com/your-subscription"
    path: ./proxy_providers/my-provider.yaml
    interval: 3600
    health-check:
      enable: true
      url: https://www.gstatic.com/generate_204
      interval: 300
      timeout: 5000
      lazy: true

proxy-groups:
  - name: 自动选择
    type: url-test
    use:
      - 我的节点
    url: https://www.gstatic.com/generate_204
    interval: 300

rule-providers:
  本地规则:
    type: file
    behavior: classical
    format: yaml
    path: ./rules/local.yaml

dns:
  enable: true
  ipv6: false
  enhanced-mode: redir-host
  nameserver:
    - https://dns.alidns.com/dns-query

rules:
  - RULE-SET,本地规则,DIRECT
  - DOMAIN-SUFFIX,example.com,DIRECT
  - MATCH,自动选择

proxy-providers 负责加载节点集合,策略组通过 use 调用该集合;rule-providers 负责加载规则文件,主规则再通过 RULE-SET 使用它。规则集的 behavior 必须与实际文件内容对应,常见值包括 domain、ipcidr 和 classical,format 可使用 yaml、text 或 mrs。mihomo proxy-providers 配置文档 mihomo rule-providers 配置文档

这里先使用 redir-host,避免新手同时排查 fake-ip、TUN 和 DNS 劫持。mihomo 文档列出 fake-ip 与 redir-host 两种增强模式;只有在确认基础配置可用后,才建议单独测试 DNS 模式变化。mihomo DNS 配置文档

安全字段怎么写:allow-lan、绑定地址和控制接口

如果只在当前设备使用,建议保持 allow-lan: false。确实需要让局域网设备连接时,应同时限制绑定地址和允许网段,而不是只把开关改成 true。

allow-lan: true
bind-address: 192.168.1.20
lan-allowed-ips:
  - 192.168.1.0/24
lan-disallowed-ips:
  - 192.168.1.3/32

bind-address 用于限制监听地址,lan-allowed-ips 用于允许的来源网段,lan-disallowed-ips 用于排除特定地址。mihomo 通用配置文档还说明,黑名单优先于白名单;配置前应确认本机局域网地址,不要照抄示例地址。mihomo allow-lan 与网络绑定字段

如果启用了外部控制接口,还应设置访问密钥并避免把接口暴露到不必要的网络范围。不要在命令行、截图或排障日志中打印订阅 token、密码或 secret。

导入和重载:先验证结构,再验证节点

  1. 备份原文件。复制当前 YAML,尤其不要直接修改可能由订阅自动更新生成的原始文件;长期修改应放在客户端支持的覆写或扩展配置中。
  2. 检查文本格式。确认扩展名为 .yaml 或 .yml,使用空格缩进,冒号后留空格,列表项使用半角连字符;包含 :、# 或特殊字符的值应考虑加引号。
  3. 导入配置。在客户端的配置或 Profiles 页面导入本地 YAML,或者粘贴你自己的订阅 URL。不要把订阅 URL 当成 YAML 内容直接粘贴到编辑器。
  4. 重新激活。切换到目标配置后执行更新、重新激活或重载,再查看配置页面和日志面板是否出现具体行号或字段名。
  5. 确认节点来源。如果最小模板能加载但列表为空,检查 proxies 或 proxy-providers;如果 provider 更新失败,检查 URL、返回内容、文件路径和更新日志。

部分客户端会复制或重新生成配置文件,因此“改完后又恢复”不一定是编辑失败,也可能是更新动作重新写入了原始配置。此时应区分原始订阅、运行时配置和覆写文件,不要反复修改同一个自动生成文件。

导入失败五分钟排查清单

现象先看哪里处理方法
YAML parse error 或 mapping values are not allowed日志面板给出的行号检查 Tab、缩进、冒号后的空格、引号和上一行是否少了符号
7890 端口启动失败系统端口监听结果确认是否已有其他程序占用,再改用未占用端口
配置能加载但节点为空provider 更新日志和实际返回文件检查 URL、订阅响应格式、path 权限及内核字段兼容性
规则没有按预期分流运行模式、策略组名称和 rules 顺序确认是 rule 模式,名称完全一致,并把 MATCH 放在末尾
改动被订阅更新覆盖配置来源和覆写入口不要改自动生成文件,把长期修改放到支持的覆写或 Merge 配置

检查端口时,7890 只是示例端口号。Windows 命令提示符中执行 netstat -ano | findstr 7890;PowerShell 中执行 Get-NetTCPConnection -LocalPort 7890;macOS 或 Linux 终端执行 lsof -i :7890 或 ss -lntp | grep 7890。如果结果显示其他进程正在监听该端口,就改用其他端口或处理冲突进程。

检查订阅时,仅用 HEAD 不能确认响应内容是否为客户端可识别的配置,排查时优先使用 GET 获取实际响应。Windows PowerShell 中执行以下命令;它不会把响应内容直接打印到屏幕:

Invoke-WebRequest -Method Get -Headers @{"User-Agent"="Mozilla/5.0"} -Uri "你的订阅地址" -OutFile "$env:TEMP\clash-subscription.yaml"

Windows 命令提示符中使用 curl.exe,避免被 PowerShell 5.1 的同名别名接管:

curl.exe -L -A "Mozilla/5.0" -sS -o "%TEMP%\clash-subscription.yaml" "你的订阅地址"

这里只检查 HTTP 返回、文件是否为空以及内容是否像 YAML 或客户端支持的配置,不要输出或分享真实订阅地址、Cookie、token 和密码。

经典 Clash、Clash Meta 和 mihomo 的兼容提示

名称本文定位不能直接假设的内容
经典 Clash可用于理解基础 YAML、端口、策略组和规则概念不应默认支持 mihomo 的全部 provider、DNS 或规则字段
Clash Meta部分客户端曾使用的内核称呼实际字段取决于客户端集成的内核版本
mihomo本文进阶模板的主要参考内核仍需以当前 mihomo 配置文档为准
Clash Verge Rev可作为配置导入界面示例客户端版本、运行模式和实际内核可能改变行为

因此,遇到“字段不识别”时,不要只看客户端名称。先确认实际使用的内核和版本,再对照该内核的配置文档;无法核实支持范围的字段,应先从最小模板中删除。

最后核对:2026-10-26

本文以 mihomo 为例,重点说明 clash 配置文件的对象区别、YAML 基础模板、节点提供者、规则集、DNS、端口检查和常见报错。字段和客户端行为可能随版本变化,正式使用前应以当前客户端和 mihomo 文档为准。

常见问题

clash 配置文件一定要叫 config.yaml 吗?

不一定。文件名和默认目录由客户端及内核决定,部分客户端支持 .yaml 或 .yml。导入失败时先检查扩展名、编码、配置来源和当前内核,而不要只改文件名。

配置文件里没有节点,为什么仍然可以导入?

YAML 可以只包含端口、策略组和规则结构。节点需要通过 proxies、proxy-providers 或订阅提供;没有节点时可以验证配置是否能加载,但不能凭空获得可用线路。

为什么我修改配置后,订阅更新又恢复原样?

远程订阅更新可能重新生成或替换原始配置。不要把长期修改直接写在自动生成文件中,应使用客户端支持的覆写、扩展配置或 Merge 文件,并保留原始订阅备份。

YAML 提示缩进错误怎么办?

统一使用空格,不要使用 Tab;检查冒号后的空格、列表项前的半角连字符,以及包含冒号或井号的值是否需要引号。再按照日志面板提供的行号逐段检查。

规则写了但没有生效,最常见的原因是什么?

先确认运行模式为 rule,再检查规则目标名称与策略组 name 是否完全一致,并确认前面没有过早出现宽泛规则。mihomo 规则按从上到下匹配,MATCH 通常应放在最后。

相关阅读

参考资料

  1. mihomo YAML 语法说明
  2. mihomo 通用配置字段
  3. mihomo 路由规则文档
  4. mihomo proxy-providers 配置文档
  5. mihomo rule-providers 配置文档
  6. mihomo DNS 配置文档
  7. Clash Verge Rev 配置文件导入文档