dsh-proxy-control:DSH 启动前与运行时的 HTTP 代理控制

前言

在 DeepSeek Harness(dsh)里做联网开发时,出站 HTTP 往往要经本地或企业代理。DSH 在启动时、第一个插件挂载之前,会从继承的环境或 $DSH_HOME/.env 解析一次出站代理;模型目录发现、插件安装、登录与更新检查都可能发生在这一阶段。只在运行时改 undici dispatcher 的代理插件覆盖不到启动器阶段,第一次请求仍可能直连失败。

下面介绍社区插件 dsh-proxy-control(维护者 Bai-Ziyi):它把代理写入启动器读取的同一用户级 .env,并在当前进程通过 DSH 公开接口立即生效,在插件页用开关与 $DSH_HOME/.env 保持同步。插件归类为联网工具,源码与说明见 GitHub,社区目录页为 skillhub.cn。

这是什么

dsh-proxy-control 是 DSH 的启动前与运行时 HTTP 代理控制插件。它解决两类问题:下一次启动时启动器阶段就走代理;当前进程内模型请求、网页抓取与 MCP HTTP 请求在保存配置后无需重启即可切换策略。配置通过 插件 → 已安装 → Proxy Control → 配置 中的开关与字段完成,持久化在 profile 的 cordis.patch.yml,并同步到 $DSH_HOME/.env。

核心功能

  • 在插件配置页提供开关,以及 url、noProxy 等字段(见下节)。
  • 原子改写 $DSH_HOME/.env:移除旧代理行后追加 HTTP_PROXY / HTTPS_PROXY(及可选的 NO_PROXY),无关行保持原顺序。
  • 调用 @deepseek-ai/dsh-http-proxy 的 installProxyFromEnvironment,替换进程 undici 全局 dispatcher,运行时立即生效。
  • 关闭开关时移除代理行并安装直连策略;下次启动同样直连。
  • 本机回环地址始终直连;只接受 http:// 与 https:// 代理地址。
  • url 为空时保持静默:不改写 .env,不碰 dispatcher,安装后不会覆盖你手写在 .env 里的代理。

插件不做 SOCKS、PAC 或系统代理探测,不做按供应商分流(可用 NO_PROXY 让部分主机直连),不保存凭据;代理地址按原样写入 .env。不宜与其他替换 undici 全局 dispatcher 的代理插件同时启用。

安装与启用

DSH 社区插件通过 profile 安装;GitHub 用户名为 Bai-Ziyi(大写 B、大写 Z)。安装后需重启一次 DSH 以加载新 bundle,再在配置页填入代理地址并打开开关。

桌面端 profile:

dsh plugin --profile desktop add github:Bai-Ziyi/dsh-proxy-control

Web profile:

dsh plugin --profile web add github:Bai-Ziyi/dsh-proxy-control

配置项

字段 默认值 含义
enabled false 出站请求是否走代理。
url 空 HTTP 或 HTTPS 代理地址,例如 http://127.0.0.1:8080。
noProxy 空 可选的逗号分隔直连主机名。

保存地址并打开 enabled 后,配置写入 profile 并同步到 $DSH_HOME/.env;当前进程通过 installProxyFromEnvironment 立即应用。运行时关闭开关不会改写已 spawn 的子进程环境;若子进程也要直连或走代理,需重启 DSH。

工作方式(简述)

  1. 宿主半侧读取 enabled、url、noProxy;url 为空则直接返回。
  2. 原子更新 $DSH_HOME/.env 中的代理相关行。
  3. 调用 installProxyFromEnvironment 安装覆盖策略。
  4. 卸载或配置变化时,先恢复上一个 dispatcher,再安装新策略。

因此文件在下一次启动前已写好,启动器阶段也被覆盖——这是纯运行时插件够不到的部分。

适用场景与注意

适合:需要在 DSH 0.2.x 下统一控制启动阶段与运行阶段 HTTP 出站;使用本地代理客户端提供的 HTTP/HTTPS 端口;希望通过插件页开关管理代理,并与 $DSH_HOME/.env 一致。

注意:

  • 兼容性以 README 为准:在 DSH 0.2.1-rc.2 与本地 HTTP 代理上测试过;依赖 @deepseek-ai/dsh-http-proxy、@deepseek-ai/dsh-home-paths、@deepseek-ai/schemastery,版本与 DSH 内置声明一致,升级 DSH 时需同步升级插件内这三个依赖版本。
  • 插件以当前 dsh 进程权限运行,会向用户目录写入 .env;安装前请自行查看 源码 与 MIT 许可证。
  • DeepSeek Harness 生态强调「一切皆插件」;skillhub.cn 上的目录为社区站点,与 DeepSeek / 幻方无官方从属关系。

结尾

dsh-proxy-control 把 HTTP 代理写进 $DSH_HOME/.env 并在运行时同步,弥补「仅运行时代理」无法覆盖启动器的问题。若你已在用 DSH 做需要稳定出网的智能体开发,可按上文命令安装,在 Proxy Control 配置页填入 http(s):// 地址后启用。

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

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

Xiaoye