命令行工具使用手册
ClashMac 27 原生附带了轻量级终端控制工具 clashmac 及其超短别名 cm。它专为极客、大模型 AI 代理(AI Agents)、以及 macOS 自动化工作流(如 Alfred、Raycast 脚本与快捷指令)设计。
1. 核心设计哲学
- 自动化工作流友好 JSON 结构化输出:
clashmac/cm命令行的所有标准数据输出均默认采用结构化的 JSON 格式。这极大地方便了脚本解析与程序调用,无需繁琐的正则截取。 - 免除繁琐配置 开箱即用: 命令行工具具备智能状态同步特性,能自动检测并对齐主程序当前的运行端口和鉴权口令。无需手动指定端口(
-p)或口令(-s)。 - 多维核心控制 出站与应用双向管理: 支持直接控制出站节点、分流模式、测速与活跃连接;同时支持对主程序发起配置热重载、冷重启与指纹环境自动化调度。
2. 命令行安装指南
在 偏好设置 -> 高级设置 中,点击 安装 CLI 工具。系统会验证管理员权限,并在系统 /usr/local/bin 路径下同时建立 clashmac 与 cm 软链接。若已安装过旧版,也可直接在终端运行以下指令完成自动升级软链接:
bash
cm install
# 或: clashmac install安装成功后,在终端运行以下指令测试:
bash
cm version
# 返回: {"version":"v1.19.27"}3. 子命令速查表与返回结构
3.1 状态与版本查询
status:获取当前运行状态与路由模式。bashclashmac status # 返回: {"mode":"rule","status":"running","version":"v1.19.27"}app-status:获取主程序的聚合状态(包括当前正在活跃的配置文件名称)。bashclashmac app-statusversion:获取当前的版本号。bashclashmac versionconfigs:输出当前工作内存中的完整配置参数。bashclashmac configs
3.2 路由分流与节点选择
mode:查询或切换出站模式(可选:rule/global/direct)。bashclashmac mode # 查询模式 clashmac mode direct # 切换至直连模式proxies:列出当前所有的策略组及每个组下属的代理节点(包含延迟)。bashclashmac proxiesselect <group> <proxy>:为指定策略组切换出站节点。bashclashmac select "Proxy" "HK_01" # 返回: {"action":"selected","group":"Proxy","proxy":"HK_01"}delay <proxy> [url]:实时测试指定代理节点的延迟。可指定测速的 HTTP 地址,默认使用系统配置的测速地址。bashclashmac delay "HK_01" # 返回: {"delay":45,"proxy":"HK_01"}
3.3 配置文件管理与热重载
profile list:列出当前所有已加载的配置文件。bashclashmac profile list # 返回: [{"active":true,"fileName":"config.yaml","name":"Default"}]profile switch <name>:一键切换当前处于激活状态的配置文件。bashclashmac profile switch "HongKong.yaml"reload:无感热重载当前配置。引擎进程不退出,在内存中动态热更新当前的配置文件(保留活跃的长连接,避免因重载导致全面断网)。bashclashmac reload # 返回: {"action":"reload","status":"ok"}restart:强行冷重启代理服务。该操作会销毁并重新创建底层的网络守护进程,重置所有内存缓存,会导致当前所有的活跃网络连接瞬时中断。bashclashmac restart
3.4 活跃连接与拦截
connections:列出当前内存中所有的活跃 TCP/UDP 网络连接。bashclashmac connectionsclose <id>:强行掐断指定 ID 的网络连接(ID 可从connections指令中提取)。bashclashmac close "8f1a23bc-90de"close-all:一键切断当前系统所有的活动套接字,强迫客户端重新匹配分流规则。bashclashmac close-all
3.5 诊断、监控与升级
traffic:在终端开启一个流式监听。程序不会退出,每秒以 JSON 格式输出实时上传与下载的网速快照。按Ctrl+C退出。bashclashmac traffic # Stderr 输出: Watching traffic (Ctrl+C to stop)... # Stdout 输出: {"download":10452,"upload":482}logs [level]:流式输出实时运行日志(默认输出info,可选debug/warning/error)。按Ctrl+C退出。bashclashmac logs debugvalidate [path]:在本地脱机状态下预先验证指定配置文件的语法完整性,防止因格式错误导致服务无法启动。bashclashmac validate "/path/to/profile.yaml"providers:输出当前所有的外部节点和规则订阅源详情。bashclashmac providershealth-check:强制执行一次全局测速与最优节点选择。bashclashmac health-checkcheck-update&upgrade [channel]:检测并更新代理引擎核心(channel 支持stable/alpha/smart)。bashclashmac upgrade smartapp-check-update&app-upgrade:触发主程序的检测与静默重启升级。bashcm app-upgrade
3.6 指纹浏览器与 CDP 自动化控制 (cm fp)
ClashMac CLI 深度集成了对内置指纹浏览器的生命周期管理以及基于 Chrome DevTools Protocol (CDP) 的无头/远程自动化调试控制:
fp list [--json]:查询所有已创建的指纹环境状态、出口 IP、CDP 调试端口及 PID。bashcm fp list # 表格输出包含: ID, 名称, 状态, IP, CDP 端口, PID cm fp list --jsonfp launch <id>:启动指定编号的指纹环境,系统会自动建立独立沙盒并智能对齐出口网络特征。bashcm fp launch 1001 # 返回: {"status":"ok","id":"1001","cdpPort":"9201"}fp stop <id>:终止正在运行的指纹浏览器进程。bashcm fp stop 1001 # 返回: {"status":"stopped","id":"1001"}fp delete <id>:删除指定环境并释放存储空间(系统默认环境1001受保护禁止删除)。bashcm fp delete 1002fp goto <id> <url>:通过 CDP 协议令指定环境的当前页面即刻跳转至目标网址(若环境未运行,将自动静默拉起)。bashcm fp goto 1001 https://ip.sbfp shot <id> [path] [--full]:通过 CDP 捕获网页截图。支持--full全网页长截图,缺省路径时自动以时间戳保存至 macOS 桌面。bashcm fp shot 1001 --full # 标准错误输出: 网页截图成功保存至桌面: /Users/username/Desktop/CM_Shot_1001_2026-09-20_105000.pngfp eval <id> "<javascript>":在指定浏览器环境的活动页面上下文中执行 JavaScript 表达式并获取执行结果。bashcm fp eval 1001 "document.title" # 返回: {"status":"executed","id":"1001","result":"IP.SB - The simplest IP address service"}fp cookie <id>:导出指定环境当前页面作用域下的全部 Cookie 列表。bashcm fp cookie 1001
4. 极客应用场景示例
场景一:Alfred / Raycast 脚本一键测速并切换到最快节点
您可以直接在 Alfred Workflow 或 Raycast 脚本中绑定 shell 指令,在状态栏之外更快速地控制网络状态:
bash
#!/bin/bash
# 自动筛选 Proxy 策略组下延迟低于 50ms 且最快的节点并完成切换
fastest_node=$(cm proxies | jq -r '.[] | select(.name=="Proxy") | .proxies | sort_by(.delay) | .[0].name')
cm select "Proxy" "$fastest_node"
echo "已为您自动切换到最快节点: $fastest_node"场景二:AI Agent / 定时任务无头自动化巡检与状态存证
借助 cm fp 系列指令,AI Agent 或本地 Shell 脚本可脱离人工干预,实现多账号矩阵的网络状态自动巡检与截图存档:
bash
#!/bin/bash
PROFILE_ID="1001"
TARGET_URL="https://ipinfo.io"
echo "1. 调度拉起指纹环境 $PROFILE_ID 并导航到目标站..."
cm fp goto "$PROFILE_ID" "$TARGET_URL" > /dev/null
echo "2. 等待页面加载并提取页面显示的 IP 地址..."
sleep 2
DETECTED_IP=$(cm fp eval "$PROFILE_ID" "document.querySelector('.ip-address')?.innerText || '未知'")
echo "3. 捕获全网页长截图存证..."
cm fp shot "$PROFILE_ID" --full
echo "4. 巡检完成,当前环境探测 IP 为: $DETECTED_IP"