Clash 用 PROCESS-PATH-REGEX 让特定 App 直连

日常科学上网走 Clash 系客户端,大多数应用没问题。但有些特殊 App 不适合走代理

  • 远程控制类(ToDesk、向日葵、AnyDesk、TeamViewer):走代理会连不上或黑屏
  • 微信 / QQ:中转导致延迟大或者协议对不上
  • 游戏:延迟敏感、部分反作弊系统会怀疑 IP
  • 一些内网 App:需要局域网直连

Clash Meta(含 Verge Rev、ClashX Meta、OpenClash)提供 PROCESS-PATH-REGEX 规则,按进程路径匹配后强制直连。

规则语法

- 'PROCESS-PATH-REGEX,<正则>,<策略>'

例:

- 'PROCESS-PATH-REGEX,/Applications/WeChat.app.*,DIRECT'

匹配路径包含 /Applications/WeChat.app 的进程,直连。

常用配置(macOS)

prepend:
  # 远程控制软件
  - 'PROCESS-PATH-REGEX,/Applications/ToDesk.app.*,DIRECT'
  - 'PROCESS-PATH-REGEX,/Applications/UURemote.app.*,DIRECT'
  - 'PROCESS-PATH-REGEX,/Applications/SunloginClient.app.*,DIRECT'
  - 'PROCESS-PATH-REGEX,/Applications/TeamViewer.app.*,DIRECT'
  - 'PROCESS-PATH-REGEX,/Applications/AnyDesk.app.*,DIRECT'

  # 通讯软件
  - 'PROCESS-PATH-REGEX,/Applications/WeChat.app.*,DIRECT'
  - 'PROCESS-PATH-REGEX,/Applications/QQ.app.*,DIRECT'

  # 开发工具(可选)
  - 'PROCESS-PATH-REGEX,/Applications/Docker.app.*,DIRECT'

append: []
delete: []

prepend 表示加到规则最前面(优先级最高,第一个匹配到就返回)。

Windows 上路径

Windows 版路径不同:

- 'PROCESS-PATH-REGEX,.*\\WeChat\.exe$,DIRECT'
- 'PROCESS-PATH-REGEX,.*\\ToDesk\.exe$,DIRECT'
- 'PROCESS-PATH-REGEX,.*\\SunloginClient\.exe$,DIRECT'

或者用 PROCESS-NAME(更省心):

- 'PROCESS-NAME,WeChat.exe,DIRECT'
- 'PROCESS-NAME,ToDesk.exe,DIRECT'

PROCESS-NAME 只匹配文件名,不用管路径,跨平台更方便。

放哪儿

Clash Verge Rev

配置界面 → 配置脚本 / Rules 覆写。规则放在 prepend 数组里。

ClashX / ClashX Meta

~/.config/clash/config.yamlrules: 数组开头(或用 mixin/override)。

Clash for Windows(已停止更新):

Parsers → 编辑 YAML 覆写规则。

想让某 App 走特定节点

改成策略组名字:

- 'PROCESS-PATH-REGEX,/Applications/Chrome.app.*,🚀 节点选择'

前提是策略组里有这个名字:

proxy-groups:
  - name: 🚀 节点选择
    type: select
    proxies:
      - 🇺🇸 美国
      - 🇯🇵 日本
      - 🇭🇰 香港

查真实进程路径

不确定 App 的路径,先查一下(macOS):

# 按名字找 PID
pgrep -x WeChat

# 用 PID 查完整路径
lsof -p <PID> | head -5

# 或者一句话
ps -ax -o command | grep WeChat | grep -v grep

Windows:

Get-Process | Where-Object Name -like "*WeChat*" | Select-Object Name, Path

规则匹配优先级

Clash 从上往下匹配,第一个命中就返回。所以 prepend 里的规则会覆盖后面的常规规则。

要精细控制某类流量的策略:

rules:
  # 高优先级:某个 App 强制直连
  - PROCESS-NAME,WeChat.exe,DIRECT

  # 中优先级:国内 IP 直连
  - GEOIP,CN,DIRECT

  # 中优先级:广告拦截
  - DOMAIN-SUFFIX,doubleclick.net,REJECT

  # 兜底:所有其它走代理
  - MATCH,🚀 节点选择

顺序错了效果就变了。

常见问题

1. 规则没生效
Clash Meta 才支持 PROCESS-* 系列规则,老版 Clash 不支持。看客户端版本,升级到 Meta 内核。

2. macOS 上要给 Clash 权限
系统偏好 → 安全性与隐私 → 隐私 → 允许 Clash 访问其他应用的进程信息。

3. 路径匹配正则要转义
. 在正则里是任意字符,严格匹配要写 \.

- 'PROCESS-PATH-REGEX,/Applications/WeChat\.app.*,DIRECT'

4. 微信直连了还是登不上
微信是走多个域名的,有的不在国内。除了 App 直连,可能还要加域名规则

- DOMAIN-SUFFIX,weixin.qq.com,DIRECT
- DOMAIN-SUFFIX,wechat.com,DIRECT

一句话总结

远程控制、微信、游戏这类”不适合走代理”的应用,用 PROCESS-PATH-REGEXPROCESS-NAME 走直连。规则要放在 prepend(最高优先级),只有 Clash Meta 内核才支持这类规则。