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 通过规则表管理代理行为,将上游代理地址与路由策略分离,适合需要精细控制代理流量的场景。