clash-auto-switch 是一个基于 Clash API 的服务可用性监控和自动切换工具。它会在指定 ProxyGroup 内切换节点,确保目标服务可用。
适合当你的节点不能稳定的访问目标服务时
适合这些场景:
- YouTube Music、ChatGPT、Gemini、Claude 等服务在部分节点不可用
- 节点可连通但服务解锁状态不稳定
- 希望在终端 TUI 中查看每个服务的节点得分、成功率和当前节点
实现原理:
如当你配置了YoutubeMusic(Clash ProxyGroup)和youtube_music(clash-auto-switch支持的service)后,clash-auto-switch 会:
- 监控 Clash 实时连接日志
- 发现 youtube_music 服务的连接
- 先检查 Clash 当前连接中是否已有服务正在使用的连接
- 例如存在
*.googlevideo.com连接时,认为youtube_music正在使用且当前可用,默认不触发自动检测 - 触发服务可用性检查
- 若不可用,自动切换到下一个节点
- 循环
uv tool install git+https://github.com/manfred-exz/clash_auto_switch/
clash-auto-switch不安装使用:
uvx --from git+https://github.com/manfred-exz/clash_auto_switch/ clash-auto-switch运行后会进入基于 Textual 的动态刷新终端界面:
h/l: 切换服务列j/k: 选择节点Enter: 手动切换到选中节点d: 禁用/取消禁用选中节点e: 最大化/恢复事件窗口;最大化后可滚动查看历史事件a: 在 auto 模式中开启/关闭当前服务连接触发的自动检测与自动切换c: 手动触发当前服务检测t: 添加一个新的(ProxyGroup, service)任务并写入配置q: 退出
节点列表字段:
- 节点: Clash 节点名;
*表示当前 ProxyGroup 正在使用的节点 - 得分: 历史可靠性评分
- 成功率: 历史检测成功率
服务检测前会先通过当前节点访问 https://cp.cloudflare.com/generate_204 做基础连通性检查。若该检查失败,会直接跳过当前节点并尝试切换到下一个候选。
自动检测不再使用自适应频率间隔。只要命中服务日志且服务没有处于 active 使用状态,就会触发检测;手动检测不受 active 判定影响。
common_services 是基础连通性检测,用于默认代理选择。它不依赖 Clash 连接日志触发,而是定时检测 GitHub 和 Google;检测失败时主动切换节点。切换时不会关闭 GitHub/Google 相关连接。
active 使用状态判定来自 Clash /connections:
youtube_music: 存在*.googlevideo.com连接netflix: 存在*.nflxvideo.net连接prime_video: 存在*.amazonvideo.com连接bilibili_mainland/bilibili_hk_mc_tw: 存在*.bilivideo.com或*.hdslb.com连接tiktok: 存在*.tiktokv.com或*.byteoversea.com连接
{
"controller": "127.0.0.1:9097",
"secret": null,
"http_proxy": "http://127.0.0.1:7890"
}controller: Clash External Controller 地址。secret: Clash API 密钥。未设置时使用null。http_proxy: 服务检测请求使用的 HTTP 代理地址。
{
"proxy_group_name": "Youtube",
"service_name": "youtube_music",
"enabled": true
}proxy_group_name: Clash ProxyGroup 名称。service_name: 服务检测名称。enabled: 是否启用。
当前默认启用检测:
chatgptclaudecommon_servicesgeminiyoutube_premiumyoutube_musicbahamut_animenetflixdisney_plusprime_videobilibili_mainlandbilibili_hk_mc_twtiktok
ProxyGroup 示例:
proxy-groups:
- name: "Youtube"
type: select
include-all-proxies: true
- name: "AI"
type: select
proxies:
- node-a
- node-b
- node-c规则示例:
rules:
- GEOSITE,youtube,Youtube
- DOMAIN-SUFFIX,music.youtube.com,Youtube
- DOMAIN-SUFFIX,gemini.google.com,AI
- MATCH,Proxy更多规则格式参考 MetaCubeX 文档:
https://wiki.metacubex.one/config/rules/
开发和架构说明见:
服务检测实现参考了 clash-verge-rev 的解锁检测思路:

