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 仓库

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

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

小夜