Clash 的核心是一个无界面的命令行进程,但它内置了完整的 RESTful API,允许外部程序通过 HTTP 接口实时查询状态、切换节点、修改配置。Dashboard(控制面板)正是基于这套 API 构建的 Web 前端,无需重启 Clash 即可完成几乎所有管理操作。本文从 API 配置开始,带你搭建一套完整的可视化管控体系。

开启 Clash 的 External Controller

Clash 的 API 服务由 external-controller 字段启用。将以下配置加入 config.yaml

启用 External Controller
# Clash 外部控制器配置
external-controller: 127.0.0.1:9090   # 仅本地访问(推荐)
secret: your-api-secret               # Bearer Token 认证,留空则无鉴权
external-ui: ui                       # Dashboard 静态文件目录(相对 Home 目录)
external-ui-url: https://github.com/MetaCubeX/metacubexd/archive/gh-pages.zip

external-controller 绑定 127.0.0.1 时 API 只能本机访问。如果需要局域网内其他设备访问(如手机远程管理路由器上的 Clash),可以改为 0.0.0.0:9090,但务必设置强 secret,防止局域网内其他设备未授权访问。

主流 Dashboard 对比

目前有多个开源 Dashboard 可供选择,各有侧重:

名称定位特点
Yacd轻量经典界面简洁,资源占用极低,功能覆盖基本需求,适合入门用户
Yacd-metaYacd 的 Mihomo 增强版在 Yacd 基础上添加了 Mihomo 特有功能(Provider 管理、连接详情等)
Metacubexd功能全面,现代 UI支持全部 Mihomo API,实时流量图、规则集更新、连接溯源均有支持,推荐使用
Zashboard极简风格界面非常精简,适合只需要节点切换的轻度用户

安装 Metacubexd(推荐)

Metacubexd 是功能最完整的 Dashboard,官方提供 CDN 在线版,无需安装即可使用。

方式一:直接访问 CDN 在线版

打开浏览器访问 https://metacubex.github.io/metacubexd/,在输入框中填入:

  • 后端地址:http://127.0.0.1:9090
  • 密钥:你在 config.yaml 中设置的 secret

方式二:本地部署(离线使用)

在 Mihomo 的 Home 目录中创建 ui/ 文件夹,将 Metacubexd 的 gh-pages 分支文件下载解压到该目录。启动 Clash 后访问 http://127.0.0.1:9090/ui/ 即可进入本地 Dashboard。

配置 external-ui-url 后,Mihomo 会在首次启动时自动下载并解压 Dashboard 文件到 external-ui 指定目录,无需手动操作。后续可通过 Dashboard 的「检查更新」按钮升级。

Dashboard 核心功能详解

代理节点管理

Dashboard 的「代理」页面以卡片形式展示所有策略组和节点。点击策略组中的节点即可立即切换,无需重启 Clash。延迟数值旁的颜色指示器(绿/黄/红)直观显示节点可用状态。点击「测速」按钮可触发单个策略组的节点延迟测试。

实时连接监控

「连接」页面(Connections)是排查问题的利器。每条活动连接都显示:目标域名/IP、命中的规则(及规则来源)、使用的策略组、已传输字节数和连接时长。当某个应用走了错误的规则(如本应直连却走了代理),在这里可以立刻发现并定位。

规则集与 Provider 管理

Mihomo 的 Dashboard 可以查看所有已加载的规则集(Rule Provider),显示最后更新时间,并支持手动触发更新——无需重启即可让新的规则集内容生效。Proxy Provider 同理,可以在不重启的情况下拉取订阅更新后的节点列表。

手动调用 API 触发规则集更新
# 触发名为 proxy-list 的规则集更新
curl -X PUT http://127.0.0.1:9090/providers/rules/proxy-list \
  -H "Authorization: Bearer your-api-secret"

# 触发节点订阅更新
curl -X PUT http://127.0.0.1:9090/providers/proxies/my-subscription \
  -H "Authorization: Bearer your-api-secret"

使用 API 实现自动化管理

Clash RESTful API 的能力远不止 Dashboard 所展示的。通过脚本,你可以实现更高级的自动化:

常用 API 端点速查
# 获取所有代理节点状态
GET  /proxies

# 切换策略组到指定节点
PUT  /proxies/{group-name}
     Body: {"name": "节点名称"}

# 获取实时流量统计(WebSocket)
GET  /traffic

# 获取日志流(WebSocket)
GET  /logs?level=info

# 热重载配置文件
PUT  /configs?force=false
     Body: {"path": "/path/to/config.yaml"}

配合 Shell 脚本或定时任务,可以实现诸如「每天凌晨 3 点自动更新所有规则集和订阅」「当检测到节点延迟超过阈值时自动切换策略组」等功能,打造真正无人值守的代理管理体系。

external-controller 绑定到公网 IP(如 0.0.0.0)并且不设置 secret,任何人都可以不经授权控制你的 Clash 实例,包括切换节点、查看所有连接记录。务必配置 secret 并考虑防火墙规则。