前言¶
DeepSeek Harness (DSH) 採用插件化架構,通常通過環境變量(如 HTTP_PROXY)配置代理會影響整個 DSH 進程的網絡行爲。如果你只想讓特定的 Provider 路由通過代理訪問,而其他 Provider 保持直連,dsh-provider-proxy 插件提供了這種細粒度的控制能力。
插件介紹¶
dsh-provider-proxy 是一個 DeepSeek Harness LLM 中間件,用於將選定的 Provider 路由轉發到 HTTP 或 HTTPS 代理。該插件由用戶 stayhpjinng 維護,採用 MIT 許可證。
它解決了在多 Provider 場景下,單一全局代理配置過於寬泛的問題。通過該插件,你可以指定哪些 Provider 走代理,哪些 Provider 正常直連,即使併發請求也能保持各自的網絡路徑。
該插件目標 DSH 版本爲 0.1.1-rc.2,Node.js 版本需滿足 ^22.19.0 || >=24。
核心功能¶
- Provider 作用域代理:僅對配置的 Provider 路由啓用代理轉發,其他路由保持原有網絡行爲。
- 協議支持:支持 HTTP 和 HTTPS 正向代理,基於 Undici 的
ProxyAgent實現。 - 覆蓋範圍:支持使用
globalThis.fetch的 Provider 實現,包括 DSH 原生的 DeepSeek 適配器和常見的基於 fetch 的第三方 Provider。 - 模型發現:包裝了 DSH 的
llm.discoverModels()路徑,當“獲取可用模型”請求指定了 Provider 時,會走該 Provider 的代理。
安裝與啓用¶
插件安裝爲 DSH bundle,但在啓用前處於休眠狀態。
- 獲取插件源碼,確保路徑爲絕對路徑。
- 執行安裝命令:
dsh plugin --profile web add /absolute/path/to/dsh-provider-proxy
- 重啓
dsh web服務,進入設置界面啓用。
配置方法¶
插件安裝後,需要配置具體的 Provider 和代理地址。
界面配置¶
重啓 dsh web 後,打開 Settings → Provider 代理。每個可用 Provider 都有獨立的開關、代理 URL(或環境變量)、可選的代理認證環境變量,以及保存和重置控件。關閉開關後,新請求立即生效,已進行中的流式請求允許在原有分發器上完成。
YAML 配置¶
通過編輯配置文件 $DSH_HOME/profiles/web/cordis.patch.yml 進行配置。
- id: provider-proxy
config:
providers:
openrouter:
enabled: true
proxyUrl: http://127.0.0.1:7890
注意:providers 下的鍵名必須是 DSH 的 Provider 路由(例如 openrouter),而不是上游主機名或模型名。
使用環境變量¶
將代理 URL 放在環境變量中,避免敏感信息出現在配置文件裏:
- id: provider-proxy
config:
providers:
anthropic:
enabled: true
proxyUrlEnv: DSH_ANTHROPIC_PROXY_URL
啓動 DSH 時需確保環境變量已設置:
export DSH_ANTHROPIC_PROXY_URL=http://127.0.0.1:7890
dsh web
代理認證¶
如果代理需要認證,使用專門的認證環境變量:
- id: provider-proxy
config:
providers:
anthropic:
enabled: true
proxyUrl: https://proxy.example.com:8443
proxyAuthorizationEnv: DSH_ANTHROPIC_PROXY_AUTH
DSH_ANTHROPIC_PROXY_AUTH 應包含完整的 Proxy-Authorization 值,例如 Basic <base64-user:password>。插件會拒絕將憑據直接嵌入在代理 URL 中,防止泄露到配置導出文件。
範圍與限制¶
- 協議限制:不支持 SOCKS 或 PAC 代理 URL。
- BaseURL 不重寫:插件不會重寫 Provider 的
baseURL。如果需要使用 API 中繼或反向代理,應在 Provider 的配置中直接設置。 - 網絡層限制:僅覆蓋使用
globalThis.fetch的實現。對於繞過 Fetch、直接打開 Socket 的 Provider SDK,需要專門的傳輸層集成,該插件不提供進程級代理回退。 - 模型發現緩存:如果 Provider 已配置了非空的靜態
models列表,DSH 會直接返回該列表而不進行網絡 I/O。若要測試代理連接,需清空該靜態列表。
結尾¶
dsh-provider-proxy 提供了在 DSH 中實現 Provider 級別網絡隔離的解決方案,適合需要在特定 Provider 上配置代理、同時保持其他 Provider 直連的場景。