在 DeepSeek Harness (DSH) 的使用场景中,模型 API 请求通常与网页搜索、MCP 调用等其它请求混杂在一起。如果使用环境变量全局代理,所有请求都会走代理,容易拖慢非模型请求的速度;如果直连,模型请求又可能因为网络限制失败。elizax/dsh-http-proxy 插件解决了这个问题,它在不修改 DSH 官方代码的前提下,实现了「模型请求走代理、其它请求直连」的细粒度控制。
核心功能¶
该插件主要提供以下能力:
- 按域名路由:自动识别模型 API 域名并走代理,DSH 内部的其它请求(如 web 搜索、MCP)保持直连。
- 非侵入式:不修改任何 DSH 官方代码;卸载后完全恢复原状,不残留任何配置。
- 协议支持:支持
http/https/socks4/socks4a/socks5/socks5h协议。 - 自动识别:当
proxyHosts留空时,插件会自动代理默认的模型域名(如api.deepseek.com、DEEPSEEK_BASE_URL指向的域名等)。 - 灵活的域名配置:支持普通域名、
域名:端口、完整 URL,以及.域名(匹配子域)和*.域名(通配符)。 - 热配置:在设置页 UI 修改配置后,下一次请求即生效,无需重启 DSH。
安装¶
安装前请确认 DSH 版本 ≥ 0.1.2-alpha.2。
dsh plugin --profile web add dsh-http-proxy@0.1.3
上述命令中的 web 是 profile 名,请替换为你实际使用的 profile(如 headless)。安装完成后需要重启 DSH 才能生效:
dsh --profile web
配置¶
有两种配置方式,效果相同。若同时设置,以 UI(设置页)里的配置为准。
方式一:网页 UI(推荐)¶
打开 DSH 的设置 → 插件配置,找到「HTTP 代理」卡片。填入代理地址后保存,配置在下次请求时生效。卡片支持「只代理这些域名」和「排除域名」选项,用于精确控制代理范围。
方式二:环境变量(临时)¶
适合临时试用,无需修改配置文件。
$env:DSH_HTTP_PROXY = 'socks5://127.0.0.1:7890'
环境变量只提供代理地址,等价于 UI 里的「代理地址」字段;域名过滤沿用默认的自动识别。
配置字段说明¶
| 字段 | 说明 |
|---|---|
proxy |
代理 URL,支持 http/https/socks 协议。留空则插件不生效 |
proxyHosts |
只代理这些域名。留空 = 自动代理所有模型域名;填写 = 只代理列出的域名 |
excludeHosts |
排除域名:优先级最高,即使被自动识别或列在 proxyHosts 里,也会被排除 |
域名字段支持以下写法:普通域名、域名:端口、完整 URL,或 .域名 / *.域名 后缀。
与 DSH 内置代理的关系¶
DSH 0.1.3+ 自带了环境变量代理(HTTP_PROXY / HTTPS_PROXY / ALL_PROXY / NO_PROXY),其行为是所有出站请求都遵循该设置。
本插件的方向相反,默认只有模型域名走代理。两者的关系如下:
- 只想让模型请求走代理:使用本插件。
- 想让所有请求(包括模型)走代理:使用 DSH 0.1.3+ 自带的环境变量代理。
- 两者同时启用:模型请求走本插件的代理,其余请求走 DSH 环境变量代理。
限制与注意¶
- 域名路由逻辑:插件按域名区分「模型请求」和「其它请求」。如果某域名同时承载模型和别的用途(如
chatgpt.com、api.cloudflare.com),这些请求也会一并走代理。 - WebSocket 流式传输:
transport: websocket的流式传输不经fetch,保持直连,不走本插件代理。 - 私有通道请求:如
amazon-bedrock等经厂商原生 SDK 私有通道发出的请求不经fetch,本插件无法代理,这类请求需依赖 DSH 0.1.3+ 内置的环境变量代理。 - 代理认证:仅支持在代理 URL 中内嵌凭据(如
http://user:pass@host:port),DSH 会原样保存并在界面显示该 URL,不提供单独的认证配置字段。
生态背景¶
DeepSeek Harness (DSH) 的设计理念是「一切皆插件」。elizax/dsh-http-proxy 是社区开发者为 DSH 生态贡献的模型推理类插件。本目录由第三方维护,与 DeepSeek 或幻方官方无从属关系。