为什么「按域名」不够,要写到 PROCESS-NAME?

很多用户的第一套 Clash 配置是 按域名、IP 或规则集决定走代理还是直连:这能覆盖浏览器、系统更新、常见国内外站点等场景。但若你的诉求是 同一台电脑上,只让某几个程序翻出去——例如只要 Steam 的下载器或某个外服游戏、某个 BT 或网盘客户端走代理,而 QQ、企微、本机其他软件全部直连——仅依赖 DOMAIN / GEOSITE 往往要对齐一长串清单,还容易被多域名、QUIC、自定义协议打漏。

Clash Meta(mihomo 系内核)在支持的桌面平台上提供 PROCESS-NAME 规则:按 发起该连接的本机进程可执行文件名来匹配。配合 Windows 上开启 TUN,让本机应用流量经内核转发并带上进程信息,就能实现常说的 进程分流、应用级代理(per-app proxy),与「全机默认走代理再靠域名回直连」是两条不同的心智模型。与本站 只让 Chrome / Edge 走代理(不改系统代理) 的写法相比,PROCESS-NAME 面向的是任意 exe,不必强依赖浏览器或手动代理设置。

第一步:使用 Meta 内核,并准备开 TUN

在 Windows 上,系统代理(HTTP/SOCKS)只能影响「会读系统代理」的应用;很多游戏、独立启动器、部分下载器并不会自动把流量交给本机 7890 一类端口。要让 Clash 在不依赖每个软件单独配置代理的前提下,还能识别「这条连接来自哪个进程」,一般需要在 GUI 中启用 TUN 模式(或等价的全局透明接管),让流量进入 mihomo 后再走规则表。

TUN 的权限、路由与 DNS 细节见 Clash TUN 模式完全指南;若你尚未在 Windows 上装好客户端与驱动,可先看 Clash for Windows 安装与配置 完成基础环境。以下默认你已能正常打开 TUN 且其它规则工作正常,仅在此基础上增加进程级条目。

进程名分流依赖「流量确实经过内核且能拿到进程名」。不同 GUI 的开关名称略有差异,若 PROCESS-NAME 长期不命中,请优先在客户端日志里确认 TUN 与策略是否生效,而不是只改规则 YAML。

第二步:在任务管理器里查「准确的」进程名

Windows 上 PROCESS-NAME 通常填写可执行文件名,例如 chrome.exesteam.exe。注意几点:大小写不敏感时也要与任务管理器显示一致以免混淆;子进程要单独加——不少游戏是 launcher.exe 启动后由 GameClient.exe 真正联网,只写前者会漏掉后者。打开「任务管理器」→「详细信息」列,按列排序找到正在发包的程序,记下带 .exe 后缀的名称。

部分商店版或 UWP 应用的主进程名可能不直观,甚至与桌面版不同;若规则不生效,可临时用客户端自带的连接日志 / 流量查看(若有)对照进程名。Microsoft Store 与绿色便携版混用时,也容易出现多份同名 exe 路径不同的歧义,此时在 Meta 中若有 PROCESS-PATH 相关能力,可按路径更精确匹配(以当前内核与文档版本为准)。

第三步:在 rules 里写 PROCESS-NAME 并接策略组

rules: 段中,语法形态与官方文档中的其它规则行一致,顺序为 从上到下,命中第一条即停。典型写法是把你希望「单独走某策略组」的进程放在 GEOIP、GEOSITE、宽松的 DOMAIN 与 MATCH 之前,避免被大规则提前吃掉。示例(策略组名请换成你配置里实际存在的 name):

# Place PROCESS-NAME rules before broad DOMAIN / GEOIP / MATCH
rules:
  - PROCESS-NAME,steam.exe,PROXY_STEAM
  - PROCESS-NAME,SomeGame.exe,PROXY_GAME
  - PROCESS-NAME,downloadtool.exe,PROXY_DL
  - DOMAIN-SUFFIX,local,DIRECT
  - GEOSITE,cn,DIRECT
  - MATCH,PROXY

上例中,PROXY_STEAM 等是你在 proxy-groups 里定义的 selecturl-test 组,用于专门挑选节点;而 MATCH,PROXY 作为兜底,可指向「除上述进程外」的默认行为。若你希望 未列出的进程全部直连,将最后的 MATCH 改为 DIRECT 或一个仅含直连的组即可。更完整的规则类型与组合方式见 Clash 规则分流详解

第四步:和订阅自带规则、自定义片段的插入顺序

很多用户从订阅或转换器拉下来的配置已经带有很长的 rules 列表。若你在客户端里使用「自定义规则前置」或「合并规则」功能,务必确认 PROCESS-NAME 行在最终生效的 YAML里排在订阅的大段 GEOSITE / GEOIP 之前。否则,流量可能在到达进程名规则前就已经被 MATCH 到默认代理了。

与「仅游戏/语音直连、其它按域名」的写法可以叠用:例如先用 游戏 UDP 与 TUN 分流 中提到的若干 DOMAIN 把联机与语音放直连,再对非游戏、但你明确想走代理的单个 exePROCESS-NAME 指到专用组。这样域名规则管「广」,进程名管「尖」。

常见不生效与排错

TUN 未开或仅系统代理

只开系统代理、不开 TUN 时,许多 exe 不会把连接导入内核,PROCESS-NAME 没有匹配对象。对照实验:开 TUN 后重试,并在日志中观察该应用的连接是否出现。

只写了父进程、漏了子进程

平台启动器、反作弊、更新服务可能各自是独立 exe。为关键在线环节建议在任务管理器里多观察几秒,或一次性把已知子进程都写上。

规则顺序过宽

DOMAIN-KEYWORDGEOSITE,proxy 等宽泛条目若在 PROCESS-NAME 上方且已命中,后面的进程行永远不会执行。调整顺序或收窄上游规则集。

合规与使用边界

请遵守当地法律法规与软件服务条款。按进程把流量送向境外节点可能改变你对外展示的出口位置,对支付、反作弊、区域限制服务产生影响;游戏与商业软件请在允许的前提下操作。应用级代理是技术能力说明,不构成对任何平台政策的背书。

小结

Windows 上配合 Clash Meta进程分流,核心是:开 TUN 让本机应用流量经内核、在 任务管理器 中核实 .exe 名称、在 rules 顶部附近写 PROCESS-NAME 并接专用策略组,同时把 MATCH 或宽规则放在后面,以达成「只要指定程序走代理、其余可直连」的 应用级代理 效果。其英文检索常用 per-app proxy、process-based routing 等词,与泛谈 TUN 或全机隧道的文章角度不同;若你还需要域名级、GeoIP 级细节,可回到 使用文档 与规则专文系统对照着改。

若你希望用图形界面少手写 YAML、又能稳定切内核与 TUN,可选择与 mihomo 生态契合的现代客户端。相比东拼西凑的脚本,维护良好的 Clash 系工具在可观测性与规则可移植性上往往更省时间。

→ 立即免费下载 Clash,开启流畅上网新体验