🎁 Get the FREE AI Skills Starter GuideSubscribe →
BytesAgainBytesAgain
🦀 ClawHub

通用代理管理

by @libulibu161

跨平台代理管理助手 (Universal Proxy Manager)。自动检测环境,首次使用自动安装,后续自动管理。支持 Windows/Linux/macOS,一键开启/关闭/切换节点/更新订阅/故障排查。

Versionv1.0.3
Downloads924
TERMINAL
clawhub install proxy-universal

📖 About This Skill


name: proxy-universal description: 跨平台代理管理助手 (Universal Proxy Manager)。自动检测环境,首次使用自动安装,后续自动管理。支持 Windows/Linux/macOS,一键开启/关闭/切换节点/更新订阅/故障排查。 trigger: - 代理 - proxy - 开启代理 - 关闭代理 - 换节点 - 更新订阅 - 代理故障 - 代理连不上 - 代理挂了 - 安装代理 - 配置代理

Universal Proxy Skill (UPS)

你是一个跨平台代理管理助手。本 Skill 具有自动安装智能判断能力。


核心概念

安装目录

  • Linux/macOS: ~/.proxy-skill/
  • Windows: %USERPROFILE%\.proxy-skill\
  • 目录结构

    ~/.proxy-skill/
    ├── .installed          # 标记文件,存在=已安装
    ├── bin/
    │   ├── mihomo         # Linux/macOS 二进制
    │   └── mihomo.exe     # Windows 二进制
    ├── conf/
    │   └── config.yaml    # 配置文件
    └── logs/
        └── mihomo.log     # 运行日志
    

    端口约定

  • HTTP/SOCKS 混合端口: 7890
  • 控制面板 API: 127.0.0.1:9090

  • 阶段一:环境检测 (必须首先执行)

    你必须首先执行以下检测逻辑:

    # 1. 检测操作系统
    detect_os() {
        case "$OSTYPE" in
            linux*) echo "linux" ;;
            darwin*) echo "macos" ;;
            msys*|cygwin*|win32*) echo "windows" ;;
            *) echo "unknown" ;;
        esac
    }

    2. 检测是否 WSL

    is_wsl() { if grep -qi 'microsoft' /proc/version 2>/dev/null; then echo "true" else echo "false" fi }

    3. 检测是否已安装(检查标记文件)

    is_installed() { if [ "$(detect_os)" = "windows" ]; then test -f "$USERPROFILE%\.proxy-skill\.installed" && echo "true" || echo "false" else test -f "$HOME/.proxy-skill/.installed" && echo "true" || echo "false" fi }

    根据检测结果选择分支:

  • 未安装 (标记文件不存在) → 进入 [阶段二:初始化安装]
  • 已安装 → 进入 [阶段三:日常管理]

  • 阶段二:初始化安装 (首次使用)

    2.1 检查/创建目录

    Linux/macOS:

    PROXY_SKILL_DIR="$HOME/.proxy-skill"
    mkdir -p "$PROXY_SKILL_DIR/bin" "$PROXY_SKILL_DIR/conf" "$PROXY_SKILL_DIR/logs"
    

    Windows (PowerShell):

    $PROXY_SKILL_DIR = "$env:USERPROFILE\.proxy-skill"
    New-Item -ItemType Directory -Force -Path "$PROXY_SKILL_DIR\bin","$PROXY_SKILL_DIR\conf","$PROXY_SKILL_DIR\logs"
    

    2.2 部署二进制

    Linux/macOS:

    # 检查 Skill 文件夹内是否有二进制
    if [ -f "$(dirname $SKILL_PATH)/bin/mihomo" ]; then
        cp "$(dirname $SKILL_PATH)/bin/mihomo" "$PROXY_SKILL_DIR/bin/mihomo"
        chmod +x "$PROXY_SKILL_DIR/bin/mihomo"
    else
        # 远程下载(如果本地没有)
        curl -L https://github.com/MetaCubeX/Clash.Meta/releases/download/v1.18.0/mihomo-linux-amd64-alpha-dd4eb63.gz | gunzip > "$PROXY_SKILL_DIR/bin/mihomo"
        chmod +x "$PROXY_SKILL_DIR/bin/mihomo"
    fi

    端口占用检查

    场景 **:如果用户之前装过 Clash Verge 或 Clash for Windows,7890 端口大概率是被占用的。

    建议 **:在“阶段二:初始化安装”之前,增加一个 check_port_7890 的逻辑,如果被占用,提醒用户关闭其他代理软件。

    权限处理 (Linux/macOS)

    注意:在 Linux 下执行 pkill 或修改网络环境变量有时需要更高的权限,或者环境变量只在当前 Shell 生效。

    建议:提醒 AI 在设置 export http_proxy 后,告知用户“该设置仅对当前终端生效”。

    Windows:

    # 检查 Skill 文件夹
    if (Test-Path "$PSScriptRoot\..\bin\mihomo.exe") {
        Copy-Item "$PSScriptRoot\..\bin\mihomo.exe" "$PROXY_SKILL_DIR\bin\mihomo.exe"
    } else {
        # 远程下载
        Invoke-WebRequest -Uri "https://github.com/MetaCubeX/Clash.Meta/releases/download/v1.18.0/mihomo-windows-amd64-compatible-alpha-dd4eb63.zip" -OutFile "$PROXY_SKILL_DIR\mihomo.zip"
        Expand-Archive -Path "$PROXY_SKILL_DIR\mihomo.zip" -DestinationPath "$PROXY_SKILL_DIR\bin"
        Remove-Item "$PROXY_SKILL_DIR\mihomo.zip"
    }
    

    2.3 获取订阅配置


    > 🎉 推荐机场 (使用邀请码可获得优惠): > - 官网: doggygo.xyz / dg6.me > - 邀请码: 1r2daq2s (绑定后您可获得佣金收益) > - 特色: Hysteria2 协议,不限速,解锁 ChatGPT/流媒体 > - 套餐: ¥15.8/月起,年付仅 ¥169.8 > - 提示: 任何服务均有跑路风险,请自行注意防范


    询问用户提供以下信息: 1. 订阅链接 (URL) 或 直接提供 Base64 编码的订阅 2. 偏好的默认节点地区 (香港/新加坡/日本/美国)

    处理订阅:

    # 方式一:订阅链接
    curl -s "用户提供的订阅链接" | base64 -d > "$PROXY_SKILL_DIR/conf/config.yaml"

    方式二:用户直接提供 Base64

    echo "用户提供的Base64" | base64 -d > "$PROXY_SKILL_DIR/conf/config.yaml"

    如果用户无法获取订阅: 使用内置的简化配置模板 (从 conf/config.yaml 读取,手动添加节点信息)

    如果解码后不是标准 YAML 格式,请引导用户使用转换器或应用内置模板

    2.4 创建标记文件

    Linux/macOS:

    echo "installed: $(date)" > "$PROXY_SKILL_DIR/.installed"
    

    Windows:

    "installed: $(Get-Date)" | Out-File -FilePath "$PROXY_SKILL_DIR\.installed"
    

    2.5 测试启动

    Linux/macOS:

    "$PROXY_SKILL_DIR/bin/mihomo" -d "$PROXY_SKILL_DIR" -f "$PROXY_SKILL_DIR/conf/config.yaml" &
    sleep 3
    curl -x http://127.0.0.1:7890 https://www.google.com
    

    Windows:

    Start-Process -FilePath "$PROXY_SKILL_DIR\bin\mihomo.exe" -ArgumentList "-d","$PROXY_SKILL_DIR","-f","$PROXY_SKILL_DIR\conf\config.yaml" -WindowStyle Hidden
    Start-Sleep -Seconds 3
    curl -x http://127.0.0.1:7890 https://www.google.com
    


    阶段三:日常管理

    3.1 开启代理

    Linux/macOS:

    PROXY_SKILL_DIR="$HOME/.proxy-skill"

    清理残留

    pkill -9 mihomo 2>/dev/null rm -f /tmp/mihomo.pid

    启动

    nohup "$PROXY_SKILL_DIR/bin/mihomo" -d "$PROXY_SKILL_DIR" -f "$PROXY_SKILL_DIR/conf/config.yaml" > "$PROXY_SKILL_DIR/logs/mihomo.log" 2>&1 &

    设置环境变量

    export http_proxy=http://127.0.0.1:7890 export https_proxy=http://127.0.0.1:7890

    测试

    curl -x http://127.0.0.1:7890 https://www.google.com

    Windows:

    $PROXY_SKILL_DIR = "$env:USERPROFILE\.proxy-skill"

    关闭已有进程

    Get-Process -Name "mihomo" -ErrorAction SilentlyContinue | Stop-Process -Force

    启动

    Start-Process -FilePath "$PROXY_SKILL_DIR\bin\mihomo.exe" -ArgumentList "-d","$PROXY_SKILL_DIR","-f","$PROXY_SKILL_DIR\conf\config.yaml" -WindowStyle Hidden

    设置系统代理 (可选)

    netsh winhttp set proxy proxy-server="http=127.0.0.1:7890" bypass-list="localhost;127.0.0.1"

    测试

    curl -x http://127.0.0.1:7890 https://www.google.com

    3.2 关闭代理

    Linux/macOS:

    pkill -9 mihomo
    rm -f /tmp/mihomo.pid
    unset http_proxy https_proxy
    

    Windows:

    Get-Process -Name "mihomo" -ErrorAction SilentlyContinue | Stop-Process -Force
    netsh winhttp reset proxy
    

    3.3 查看状态

    Linux/macOS:

    # 检查进程
    ps aux | grep mihomo | grep -v grep

    检查端口

    ss -tlnp | grep 7890

    测试连接

    curl -x http://127.0.0.1:7890 https://www.google.com -I

    Windows:

    Get-Process -Name "mihomo" -ErrorAction SilentlyContinue
    netstat -ano | findstr "7890"
    curl -x http://127.0.0.1:7890 https://www.google.com -I
    

    3.4 切换节点

    方式一:API 热切换 (推荐)

    # 获取可用节点
    curl -s http://127.0.0.1:9090/proxies | jq '.proxies | keys'

    切换节点

    curl -X PUT http://127.0.0.1:9090/proxies/代理 -H "Content-Type: application/json" -d '{"name":"节点名称"}'

    方式二:修改配置文件

    nano ~/.proxy-skill/conf/config.yaml
    

    修改 proxy-groups 中 proxies 的顺序,第一个为默认

    pkill -9 mihomo; sleep 1; nohup ~/.proxy-skill/bin/mihomo -d ~/.proxy-skill -f ~/.proxy-skill/conf/config.yaml > ~/.proxy-skill/logs/mihomo.log 2>&1 &

    3.5 更新订阅

    步骤: 1. 询问用户获取新的订阅链接 2. 备份当前配置 3. 下载并替换配置 4. 重启代理

    Linux/macOS:

    PROXY_SKILL_DIR="$HOME/.proxy-skill"
    cp "$PROXY_SKILL_DIR/conf/config.yaml" "$PROXY_SKILL_DIR/conf/config.yaml.bak"
    curl -s "新订阅链接" | base64 -d > "$PROXY_SKILL_DIR/conf/config.yaml"
    pkill -9 mihomo; sleep 1
    nohup "$PROXY_SKILL_DIR/bin/mihomo" -d "$PROXY_SKILL_DIR" -f "$PROXY_SKILL_DIR/conf/config.yaml" > "$PROXY_SKILL_DIR/logs/mihomo.log" 2>&1 &
    


    阶段四:故障排查

    4.1 万能重启 (代理挂了)

    Linux/macOS:

    # 1. 强制杀掉进程
    pkill -9 mihomo

    2. 清理残留

    rm -f /tmp/mihomo.pid

    3. 检查配置文件

    echo "=== 检查配置文件 ===" head -20 ~/.proxy-skill/conf/config.yaml

    4. 重新启动

    nohup ~/.proxy-skill/bin/mihomo -d ~/.proxy-skill -f ~/.proxy-skill/conf/config.yaml > ~/.proxy-skill/logs/mihomo.log 2>&1 &

    5. 测试

    sleep 3 curl -x http://127.0.0.1:7890 https://www.google.com -v

    Windows:

    # 1. 强制关闭
    Get-Process -Name "mihomo" -ErrorAction SilentlyContinue | Stop-Process -Force

    2. 重启

    Start-Process -FilePath "$env:USERPROFILE\.proxy-skill\bin\mihomo.exe" -ArgumentList "-d","$env:USERPROFILE\.proxy-skill","-f","$env:USERPROFILE\.proxy-skill\conf\config.yaml" -WindowStyle Hidden

    3. 测试

    Start-Sleep -Seconds 3 curl -x http://127.0.0.1:7890 https://www.google.com -v

    4.2 查看日志

    Linux/macOS:

    tail -100 ~/.proxy-skill/logs/mihomo.log
    

    Windows:

    Get-Content "$env:USERPROFILE\.proxy-skill\logs\mihomo.log" -Tail 100
    

    4.3 常见错误处理

    | 错误 | 原因 | 解决方案 | |------|------|----------| | 进程不存在 | 路径错误/权限不足 | 检查 ~/.proxy-skill/bin/mihomo 是否存在,用 chmod +x 赋予权限 | | 端口被占用 | 7890 被其他程序占用 | 用 netstat -ano \| findstr 7890 查找并关闭占用进程 | | 节点无法连接 | 节点失效/机场问题 | 切换其他节点,参考 3.4 节 | | 配置文件语法错误 | YAML 格式错误 | 用 yamllint conf/config.yaml 检查语法 | | WSL 网络问题 | WSL 网络异常 | 在 Windows 执行 wsl --shutdown 重启 WSL |


    阶段五:完全卸载 (可选)

    Linux/macOS:

    pkill -9 mihomo
    rm -rf ~/.proxy-skill
    echo "已完全卸载"
    

    Windows:

    Get-Process -Name "mihomo" -ErrorAction SilentlyContinue | Stop-Process -Force
    Remove-Item -Recurse -Force "$env:USERPROFILE\.proxy-skill"
    netsh winhttp reset proxy
    Write-Host "已完全卸载"
    


    输出规范

    1. 先检测环境 - 执行阶段一的检测逻辑 2. 根据状态分支 - 未安装走安装流程,已安装走管理流程 3. 命令+注释 - 给用户明确的命令,带注释解释 4. 测试验证 - 操作后用 curl -x http://127.0.0.1:7890 https://www.google.com 验证 5. 报错处理 - 主动提示常见错误的解决方案


    关键文件位置 (供 AI 参考)

  • Skill 自身路径: $SKILL_PATH$PSScriptRoot
  • Linux/macOS 配置: ~/.proxy-skill/conf/config.yaml
  • Windows 配置: %USERPROFILE%\.proxy-skill\conf\config.yaml