Receber por email
← Voltar para o catálogo

clash-doctor

Clash Verge 诊断与配置管理。网络诊断、配置 AI 工具路由规则(Claude/Codex/Cursor/Warp)、查看/克隆订阅配置、切换配置文件。当用户遇到网络问题、要配置代理规则、切换订阅、查看 Clash 配置时使用

216estrelas
Atualizado há 4 meses

Ver no GitHub ↗ Licença: MIT

Como adicionar

/plugin marketplace add majiayu000/claude-arsenal

O comando exato pode variar conforme o repositório. Confira o README no GitHub.

Para o autor da skill

Cole no README do seu repo

Mostra que sua skill está catalogada na Skillteca, gera backlink e tráfego rastreável.

[![Skillteca](https://www.skillteca.com.br/api/badge/clash-doctor/svg)](https://www.skillteca.com.br/skills/clash-doctor)
#ai

Skills relacionadas

Ver todas de Automação →

Alerta por categoria

Receba novas skills de Automação toda segunda

1 email curto, só com as skills novas de Automação. 4 minutos de leitura, sem spam, cancela com 1 clique.

Você confirma o email no primeiro envio. Sem spam. Cancela com 1 clique.

Ler descrição completa

Clash Verge 诊断与配置管理

你是一个 Clash Verge(mihomo 内核)的诊断和配置管理专家。

用户传入的参数:$ARGUMENTS

路径常量

VERGE_DIR=~/Library/Application Support/io.github.clash-verge-rev.clash-verge-rev
PROFILES_INDEX=$VERGE_DIR/profiles.yaml
PROFILES_DIR=$VERGE_DIR/profiles
VERGE_YAML=$VERGE_DIR/verge.yaml
MIHOMO_API=http://127.0.0.1:9097

命令路由

根据 $ARGUMENTS 判断执行哪个模式:

| 参数模式 | 执行模式 | |----------|----------| | 无参数 或 域名(如 github.com) | 诊断模式 | | profiles 或 list 或 ls | 配置文件列表 | | clone <源订阅名> <目标订阅名> | 克隆覆盖配置 | | setup-ai <订阅名> | 配置 AI 工具路由 | | switch <订阅名> | 切换激活配置 | | status | 当前状态概览 |

模式一:配置文件列表(profiles)

读取 $PROFILES_INDEX,列出所有 remote 类型的订阅,展示:

订阅名称 | UID | 流量使用 | 到期时间 | 覆盖文件状态 | 是否激活

覆盖文件状态判断:读取每个订阅的 option 中关联的 merge/rules/proxies/groups 文件,检查内容是否为空模板。

空模板判断标准(以下均视为"未配置"):

  • merge:只有注释行 + 空行
  • rules:prepend: [] 且 append: []
  • proxies:prepend: [] 且 append: []
  • groups:prepend: [] 且 append: []
  • script:只有 return config;

输出格式示例:

📋 Clash Verge 订阅列表

  订阅名              流量          到期        覆盖状态        激活
─────────────────────────────────────────────────────────────────
★ Nexitally         179/500 GB    2026-03-01  ✅ 全配置       ← 当前
  灰狐云互联         57/200 GB     2027-03-04  ✅ 全配置
  YToo_SS            0/15 GB       2027-03-25  ✅ 全配置

覆盖详情:
  merge=DNS/TUN  rules=AI路由  proxies=住宅代理  groups=AI组

模式二:克隆覆盖配置(clone)

将源订阅的 5 个覆盖文件(merge/script/rules/proxies/groups)内容复制到目标订阅的对应覆盖文件。

步骤:

  1. 读取 $PROFILES_INDEX,通过订阅名(name 字段模糊匹配)找到源和目标的 UID
  2. 从源订阅的 option 中找到 merge/script/rules/proxies/groups 的 UID
  3. 从目标订阅的 option 中找到对应的 UID
  4. 逐个读取源文件内容,写入目标文件
  5. 写入前确认:列出将要覆盖的文件和内容摘要,等用户确认

注意事项:

  • rules 中的 delete 部分可能需要适配(源订阅的原始规则和目标可能不同)
  • merge 中的 TUN route-exclude-address 应保留(住宅代理 IP 防回环)
  • 如果目标覆盖文件已有非空内容,警告用户将被覆盖

模式三:配置 AI 工具路由(setup-ai)

为指定订阅配置完整的 AI 开发工具代理路由。这是最常用的配置操作。

步骤:

  1. 读取 $PROFILES_INDEX,通过订阅名找到目标 UID 和关联的覆盖文件 UID
  2. 读取当前激活订阅的覆盖文件作为模板(如果有已配置的)
  3. 如果没有现成模板,使用内置的 AI 路由规则集(见下方)
  4. 写入 4 个覆盖文件(merge/rules/proxies/groups)
  5. 提示用户在 Clash Verge 中 reload 配置

内置 AI 路由规则集

Rules(prepend 最高优先级)

prepend:
  # --- Claude Code CLI ---
  - PROCESS-NAME,claude,AI
  - PROCESS-NAME,Claude,AI
  - PROCESS-NAME,Claude Helper,AI
  - PROCESS-NAME,Claude Helper (GPU),AI
  - PROCESS-NAME,Claude Helper (Renderer),AI
  - PROCESS-NAME,Claude Helper (Plugin),AI
  # --- Codex CLI ---
  - PROCESS-NAME,codex,Proxies
  - PROCESS-NAME,Codex,Proxies
  - PROCESS-NAME,Codex Helper,Proxies
  # --- Cursor ---
  - DOMAIN,marketplace.cursorapi.com,AI
  - DOMAIN,api2.cursor.sh,AI
  # --- Warp Terminal ---
  - PROCESS-NAME,stable,AI
  - PROCESS-NAME,Warp,AI
  - DOMAIN-SUFFIX,warp.dev,AI
  - DOMAIN-SUFFIX,app.warp.dev,AI
  - DOMAIN,rtc.app.warp.dev,AI
  # --- Anthropic 全域名 ---
  - DOMAIN-SUFFIX,anthropic.com,AI
  - DOMAIN-SUFFIX,claude.ai,AI
  - DOMAIN-SUFFIX,claudeusercontent.com,AI
  - DOMAIN-SUFFIX,claude.com,AI
  - DOMAIN,api.anthropic.com,AI
  - DOMAIN,console.anthropic.com,AI
  - DOMAIN,platform.claude.com,AI
  - DOMAIN,status.anthropic.com,AI
  - DOMAIN,anthropic.statuspage.io,AI
  - DOMAIN-SUFFIX,support.claude.com,AI
  - DOMAIN-SUFFIX,support.anthropic.com,AI
  - DOMAIN-SUFFIX,docs.claude.com,AI
  - DOMAIN-SUFFIX,anthropic.mintlify.app,AI
  - DOMAIN,cloudcode-pa.googleapis.com,AI
  - DOMAIN,daily-cloudcode-pa.googleapis.com,AI
  - DOMAIN,clau.de,AI
  - DOMAIN-KEYWORD,anthropic,AI
  - DOMAIN-KEYWORD,claude,AI
  # --- GitHub Education ---
  - DOMAIN,education.github.com,AI
  # --- Tailscale DIRECT ---
  - IP-CIDR,100.64.0.0/10,DIRECT,no-resolve
  - IP-CIDR6,fd7a:115c:a1e0::/48,DIRECT,no-resolve
  # --- Supabase DIRECT ---
  - DOMAIN-SUFFIX,supabase.co,DIRECT
  - DOMAIN-SUFFIX,supabase.com,DIRECT

Rules delete(清理原始订阅中可能存在的冲突规则)

delete:
  - DOMAIN-SUFFIX,anthropic.com,Proxies
  - DOMAIN-SUFFIX,claude.ai,Proxies
  - DOMAIN-SUFFIX,claude.com,Proxies
  - DOMAIN,api.anthropic.com,Proxies
  - DOMAIN,console.anthropic.com,Proxies
  - DOMAIN,platform.claude.com,Proxies
  - DOMAIN,daily-cloudcode-pa.googleapis.com,Proxies
  - DOMAIN-SUFFIX,support.claude.com,Proxies
  - DOMAIN-SUFFIX,support.anthropic.com,Proxies
  - DOMAIN-SUFFIX,docs.claude.com,Proxies
  - DOMAIN-SUFFIX,anthropic.mintlify.app,Proxies
  - PROCESS-PATH-KEYWORD,Claude.app,AI
  - PROCESS-PATH-KEYWORD,Codex.app,Proxies

Proxies(住宅代理节点配置)

优先级:

  1. 读取当前激活订阅的 proxies 覆盖文件,如有住宅代理节点则直接复制
  2. 如无已配置的住宅代理,进入交互式配置流程:

交互式配置流程: 向用户询问以下信息(逐项或一次性提供均可):

需要你提供住宅代理信息:
1. 代理类型(socks5/http,默认 socks5)
2. 服务器地址(IP 或域名)
3. 端口
4. 用户名(如有)
5. 密码(如有)
6. 节点显示名(默认 🏠 Residential US (AI))

示例:socks5 / 1.2.3.4 / 44539 / myuser / mypass

用户提供后生成 Proxies 覆盖:

prepend: []

append:
  - name: <节点显示名>
    type: <代理类型>
    server: <服务器地址>
    port: <端口>
    username: <用户名>
    password: <密码>
    udp: true

delete: []

注意:同时自动将代理服务器 IP 写入 Merge 的 route-exclude-address(TUN 防回环)。

Groups

append:
  - name: AI
    type: select
    url: http://www.gstatic.com/generate_204
    proxies:
      # 从 proxies 覆盖中提取住宅代理名称填入
      - <住宅代理节点名>

delete:
  - AI  # 删除原始订阅中可能存在的同名组,确保使用自定义版本

Merge

tun:
  route-exclude-address:
    # 住宅代理服务器 IP,防止 TUN 回环
    - <住宅代理IP>/32

模式四:切换激活配置(switch)

  1. 读取 $PROFILES_INDEX,通过订阅名找到目标 UID
  2. 确认:告知用户将从当前订阅切换到目标订阅,列出目标订阅的覆盖配置状态
  3. 如果目标订阅覆盖文件为空,警告用户可能缺少 AI 路由规则
  4. 修改 $PROFILES_INDEX 的 current 字段为目标 UID
  5. 提示用户在 Clash Verge 中 reload 或重启

模式五:当前状态概览(status)

并行采集:

  1. 读取 $PROFILES_INDEX → 当前激活的订阅名和流量
  2. 读取 $VERGE_YAML → TUN/系统代理/端口配置
  3. curl -s $MIHOMO_API/version → mihomo 版本
  4. curl -s $MIHOMO_API/proxies → 当前选中的节点

输出格式:

🔍 Clash Verge 状态

内核: mihomo v1.x.x
激活订阅: Nexitally (179/500 GB, 到期 2026-03-01)
模式: rule
端口: mixed=7897 socks=7898 http=7899
TUN: ✅ 开启 (stack=mixed)
系统代理: ✅ 开启

当前节点:
  Proxies → 🇭🇰 Hong Kong 02
  Google  → 🇺🇸 USA Seattle 03
  AI      → 🏠 Residential US (AI)

模式六:诊断模式(默认)

当参数为空或为域名时,执行网络诊断。默认目标为 github.com。

第一步:采集环境信息

并行执行以下所有检查命令:

  1. Shell 代理环境变量
env | grep -i -E '(proxy|PROXY|http_proxy|https_proxy|all_proxy|no_proxy|ALL_PROXY|HTTP_PROXY|HTTPS_PROXY|NO_PROXY)' || echo "[结果] 无代理环境变量"
  1. macOS 系统代理设置(检测当前活跃的网络接口)
ACTIVE_IF=$(route -n get default 2>/dev/null | awk '/interface:/{print $2}')
ACTIVE_SERVICE=$(networksetup -listallhardwareports | awk -v dev="$ACTIVE_IF" '/Hardware Port/{port=$0} /Device:/{if($2==dev) print port}' | sed 's/Hardware Port: //')
echo "活跃接口: $ACTIVE_IF ($ACTIVE_SERVICE)"
echo "=== Web Proxy ==="
networksetup -getwebproxy "$ACTIVE_SERVICE" 2>/dev/null
echo "=== Secure Web Proxy ==="
networksetup -getsecurewebproxy "$ACTIVE_SERVICE" 2>/dev/null
echo "=== SOCKS Proxy ==="
networksetup -getsocksfirewallproxy "$ACTIVE_SERVICE" 2>/dev/null
  1. DNS 解析对比
TARGET="目标域名"
echo "=== 本地 DNS ==="
nslookup $TARGET 2>&1
echo "=== 外部 DNS (8.8.8.8) ==="
nslookup $TARGET 8.8.8.8 2>&1
echo "=== 外部 DNS (1.1.1.1) ==="
nslookup $TARGET 1.1.1.1 2>&1
  1. Git 代理配置
echo "=== git http.proxy ==="
git config --global --get http.proxy 2>/dev/null || echo "未设置"
echo "=== git https.proxy ==="
git config --global --get https.proxy 2>/dev/null || echo "未设置"
  1. 常见代理端口扫描
for port in 7890 7891 7897 7898 7899 1080 1087 9090 9097 2080; do
  result=$(lsof -i :$port -sTCP:LISTEN 2>/dev/null | head -3)
  if [ -n "$result" ]; then
    echo "[端口 $port] 在监听:"
    echo "$result"
  fi
done
echo "=== 扫描完成 ==="

第二步:连通性测试

并行执行以下测试:

  1. 直连测试(不走代理)
TARGET="目标域名"
curl --noproxy '*' --connect-timeout 5 -s -o /dev/null -w "直连: HTTP=%{http_code} 耗时=%{time_total}s IP=%{remote_ip}\n" https://$TARGET 2>&1 || echo "直连: 失败(超时或拒绝)"
  1. 通过代理测试(对每个发现的监听端口测试)
TARGET="目标域名"
curl -x http://127.0.0.1:PORT --connect-timeout 5 -s -o /dev/null -w "代理(PORT): HTTP=%{http_code} 耗时=%{time_total}s\n" https://$TARGET 2>&1 || echo "代理(PORT): 失败"
curl -x socks5://127.0.0.1:PORT --conn
Compartilhar X LinkedIn