為什麼要按進程分流,而不是只靠網域?
網域分流適合「網站/API 主機名可列舉」的情境:例如 DOMAIN-SUFFIX 對應某雲端服務。但遊戲啟動器、辦公軟體或自架工具,可能會連到CDN、動態主機名或 IP,此時只靠網域規則會變得冗長或難以維護。若你的意圖是「這個程式不論連哪裡,都走同一策略」,PROCESS-NAME 會是直覺的一刀;細節與其它規則類型並讀,可參考 規則分流最佳實踐。
另一方面,進程分流不取代 DNS 與網域規則:實務上常見作法是「先處理區網、本機、直連黑名單,再寫 PROCESS-NAME,最後才用網域/GEOIP/MATCH 收尾」,讓少數程式有明確意圖,其餘維持一般上網體驗。與「只開某個埠」或「只代理瀏覽器」相比,Clash Meta/Mihomo 的 PROCESS-NAME 是在規則引擎裡對「來源進程」下判斷,前提是你的流量有經過核心(見下一節)。
前提:TUN 與「誰在送連線」能被核心看見
在 Windows 上,若僅使用系統代理(HTTP/SOCKS)而應用未跟隨,或部分流量繞過本機代理,核心可能無法穩定取得「每條連線對應哪個進程」的資訊。多數實測情境會建議開啟 TUN(或客戶端等價的「透明代理/虛擬網卡」)讓應用程式流量進入 Mihomo 的轉發路徑,進程規則才容易生效。與路由表、權限、以及「哪些程式仍走直連」的關係,建議對照 TUN 模式深度解析 一文建立心智圖;若你剛在 Windows 裝好圖形客戶端,也可先完成 Clash Verge Rev 與 Win11 TUN 實測 裡的首次開關與權限檢查。
若你升級核心或更換分支,請先確認版本與功能一致:Clash Meta 升級指南 整理了常見的相容性與設定檔注意點;避免「規則寫了卻是舊核心不支援」的落差。若同一台機器上同時有多個代理或 VPN,路由優先級可能互相覆蓋,除錯時建議暫時只保留一條路徑,否則日誌會難以解讀。
PROCESS-NAME 規則語法與撰寫注意
在 rules: 區塊中,單行格式與其它規則相同,概念為:類型、條件、策略名稱(策略名稱需對應你 proxy-groups 或 proxy 裡已宣告的名稱)。PROCESS-NAME 的條件通常是可執行檔名稱,例如 game.exe、chrome.exe;是否包含路徑、大小寫是否敏感,依核心與平台實作而異,實務上最穩的是先以工作管理員顯示的名稱(多為 xxx.exe)為準。
rules:
- PROCESS-NAME,game.exe,Proxy
- PROCESS-NAME,SomeApp.exe,DIRECT
- DOMAIN-SUFFIX,example.com,DIRECT
- MATCH,PROXY
撰寫時請注意:規則順序(下一節)與策略名稱拼字是否與訂閱/本機設定一致;若策略名打錯,命中會失敗或落到預設。若你希望「代理組」具備自動測速、故障轉移,可將 PROCESS-NAME 指向一個 url-test 或 fallback 組,概念見 策略組 url-test 與 fallback。
在 Windows 查進程名(工作管理員實測步驟)
請以工作管理員取得「實際執行檔名稱」,避免憑印象輸入:
- 開啟工作管理員(
Ctrl+Shift+Esc),必要時按「檢視」→「更多」→「選擇欄位」。 - 勾選「名稱」或「命令列」等欄位(依 Windows 版本而定),確認處理程序名稱是否為
xxx.exe。 - 若同一個程式有多個子進程(更新器、啟動器、主程式),請分別對實際發起連線的那個
.exe建規則;若命中不如預期,多半是子進程名稱不同。 - 部分安裝會把執行檔放在深層路徑,但規則欄位通常仍寫檔名而非完整路徑;若實測失敗,請用同一套客戶端日誌觀察連線附帶的 process 欄位(若有)再對齊。
與遊戲/UDP 相關情境,可再與 Steam、UDP 與 TUN 規則集 專文交叉閱讀:遊戲流量常混用 UDP,且可能有多個進程;進程規則與規則集、埠分流策略並用時,請特別注意誰先命中。
規則順序:首條命中即停
Clash 規則採由上而下匹配,第一條符合的規則決定策略,後續行不再評估。若你把寬鬆的 GEOIP 或過大的 DOMAIN-SUFFIX 放在 PROCESS-NAME 之前,可能出現「明明寫了進程規則卻永遠走不到」的情況。撰寫順序與「黑名單/白名單」心智,仍建議回到 規則分流最佳實踐 的整體架構。
若你同時使用網域規則與進程規則,常見的務實做法是:先放行必須直連的區網與本機,再寫少數幾條 PROCESS-NAME 表達「這幾個程式我就是要特別對待」,再讓其餘流量依網域/地區/預設策略走。不要把「全部程式都寫進程規則」,維護成本會快速上升。
用日誌驗證是否命中進程規則
實測建議採單一變因:先只開目標程式,觸發一次連線,再在客戶端日誌觀察該連線是否列出預期策略與(若可見)進程名稱。若你看得到「命中了某條規則」但出口 IP 仍與預期不符,請回到 TUN 是否接管、或是否有 DNS/Fake-IP 與區網路由器等問題,與 連線日誌與逾時 的讀法一併對照。
若完全無法判斷是否命中,請先確認連線有出現在日誌;若沒有,請優先處理「流量沒進核心」或「程式繞過 TUN」的問題,而非再加規則。
限制與邊界:子進程、UWP、WSL2
子進程與服務:瀏覽器、遊戲、啟動器可能分屬不同 .exe;只寫主程式可能漏掉實際連線的進程。若你看到大量 svchost.exe 之類共用處理程序,進程名稱分流會變得不精準,此時應回頭改以網域/IP或調整系統服務行為,而不是硬寫一條過寬的進程規則。
Microsoft Store/UWP 應用程式的網路路徑可能與傳統 Win32 不同,實測時請以工作管理員與日誌為準。若你在 WSL2 裡跑 Linux 程式,流量可能以虛擬網卡與 NAT 方式進出 Windows;此時「要分流的是 Windows 側還是 Linux 側」要先釐清,可參考 WSL2 與 Windows 宿主機 Clash 的拓樸說明,避免把規則寫在錯的層級。
與策略組、網域規則並用
PROCESS-NAME 最適合當少數幾條「程式意圖」規則,而不是取代整份規則集。典型組合是:用網域規則處理常見服務(搜尋、郵件、更新 CDN),用進程規則處理難以用網域窮舉的遊戲或工具;若你不確定該用哪個圖形客戶端承載這些設定,可先讀 如何選擇適合自己的 Clash 客戶端,再決定 Windows 上要維護的設定檔與更新節奏。
自檢清單
- 是否已啟用 TUN(或等價)且目標連線會出現在 Clash 日誌中?
PROCESS-NAME的檔名是否與工作管理員一致?是否需補寫子進程?rules:順序是否讓過寬規則搶先命中?- 策略名稱(Proxy/DIRECT/自訂組)是否與設定檔一致?
- TUN 與系統/其它 VPN 是否衝突,導致流量未進核心?
- WSL2、UWP 或特殊沙箱是否讓「實際進程」與預期不同?
結語
Windows 上的 Clash Meta/Mihomo 透過 PROCESS-NAME,把「我要這個程式走哪裡」寫成可核對的規則;但要讓它穩定生效,前提是 TUN 與流量納管先對齊,並尊重由上而下的匹配順序。與純網域分流並用時,請維持少數精準、多數通用的結構,長期最好維護。
若你願意為常用程式建立一張「進程名稱 ↔ 策略意圖」對照表,之後升級客戶端或換訂閱時,只需要校對策略名稱與順序,不必每次重猜規則為何失效。
→ 立即免費下載 Clash,開啟流暢上網新體驗,在 Windows 上以清楚的 TUN 與規則層級,把指定程式與其餘流量的路徑分開管理。