dsh-provider-proxy:DeepSeek Harness 作用域代理中間件

前言

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,但在啓用前處於休眠狀態。

  1. 獲取插件源碼,確保路徑爲絕對路徑。
  2. 執行安裝命令:
dsh plugin --profile web add /absolute/path/to/dsh-provider-proxy
  1. 重啓 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 直連的場景。

插件目錄
GitHub 倉庫

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜