DSH(DeepSeek Harness)在使用 export https_proxy=... 環境變量時,所有流量都會經過上游代理,包括本地的 API 調用和國內網站,這會帶來不必要的延遲和配置困擾。dsh-proxy-router 插件通過本地路由代理,將“何時走代理”轉化爲可維護的規則表。
核心功能¶
- 本地分流代理:所有出站流量先命中本地路由代理,再根據規則決定是走上游代理還是直連。
- Web 設置頁面:提供可視化配置,支持熱重載。
- 策略匹配:僅規則匹配的被牆域名走上游代理,其餘(國內、內網、未知)直連。
- 覆蓋範圍:支持 Main-process
fetch()、web_fetch工具、bash 子進程(curl、git等)。 - 規則層:支持本地規則文件(優先級最高)、遠程塊列表(Loyalsoldier/clash-rules、gfw.txt、greatfire.txt)、內置種子列表。
- 安全默認:Loopback 和 LAN 地址始終直連。
安裝與啓用¶
通過官方命令安裝插件:
dsh plugin --profile web add @yangzhe1991/dsh-proxy-router
安裝完成後需要重啓 dsh web。默認情況下插件處於關閉狀態(Master Switch 關閉),此時插件不監聽端口、不接管代理策略,網絡行爲與安裝前一致。要使用分流功能,需在設置頁手動開啓。
配置與使用¶
設置頁配置¶
在 Settings 側邊欄找到 分流代理 分區,以下是主要配置項:
- Enable routing proxy (總開關):默認關閉。開啓後插件接管流量,關閉則恢復原狀。
- Upstream proxy (上游代理):填寫上游代理地址,如
http://192.168.3.47:12801。如果留空,插件會回退到環境變量https_proxy或http_proxy。 - Route when nothing matches (默認路由):當規則不匹配時,默認走直連。
- Local router bind address (監聽地址):插件綁定的本地地址,出於安全限制,僅允許 Loopback (如
127.0.0.1:17890)。如果端口被佔用會自動回退到隨機端口,爲 0 則由 OS 選擇。 - Connect timeout (連接超時):僅影響連接建立,不影響流式響應。
本地規則編輯¶
設置頁底部可以直接編輯本地規則文件 ~/.dsh/proxy-router/rules.txt。規則逐行匹配,優先級最高。
# 註釋以 # 開頭
proxy: some-blocked-site.com # 命中規則走上游
direct: cdn.example.cn # 命中規則直連
example.com # 無類型默認走上游
1.2.3.4 # 支持 IP
支持通配符(*.example.com、.example.com)和 dnsmasq 風格的 server=/example.com/114.114.114.114。
工作原理¶
流量流向如下:
DSH main process / web_fetch / bash
│
▼
Local routing proxy (127.0.0.1:17890)
├── 匹配本地規則文件
├── 匹配遠程塊列表
├── 匹配內置種子列表
└── 默認路由
規則層按順序匹配,優先級從高到低:本地規則 > 遠程列表 > 內置列表 > 默認路由。Loopback (127.0.0.0/8)、內網地址 (10/8, 172.16/12, 192.168/16) 及單標籤主機名(如 nas)永遠不會被轉發給上游代理。
注意事項¶
- 默認關閉:安裝後必須在設置頁手動開啓。
- 安全性:本地代理僅綁定 Loopback 地址,禁止綁定
0.0.0.0或 LAN 地址,防止暴露開放代理。 - 熱生效:配置項爲 volatile,修改後立即生效,無需重啓進程。
dsh-proxy-router 通過規則表管理代理行爲,將上游代理地址與路由策略分離,適合需要精細控制代理流量的場景。