在 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 或幻方官方無從屬關係。