前言¶
在开发基于 DeepSeek Harness(DSH)的智能体或工作流时,有时需要统一管理 HTTP 代理,有时又只需在特定子进程或请求中启用代理。直接在系统环境变量中设置往往缺乏灵活性,且难以在 Web 界面中动态调整。DSH 生态中的 dsh-proxy-env 插件提供了在 DSH 内部统一管理代理环境的能力,支持 Host 侧的全局分发与子进程环境注入,以及 Web 侧的配置卡片。
安装与启用¶
通过官方插件命令安装,安装后需重启对应 Profile 的 Web 进程才能生效。
dsh plugin --profile web add github:localSummer/dsh-proxy-env#main
安装完成后,使用 --dump-config 检查配置层,应出现 # == dsh-proxy-env 层且包含 id: proxy-env。
核心功能¶
该插件主要解决代理环境的注入与控制问题,核心能力如下:
-
代理模式
- all 模式:代理 API 调用、子进程、Git、npm 等所有流量,通过设置
HTTP(S)_PROXY/ALL_PROXY/NO_PROXY环境变量实现。 - include 模式:仅代理指定主机清单内的 in-process fetch 请求,子进程环境变量保持不变。
- all 模式:代理 API 调用、子进程、Git、npm 等所有流量,通过设置
-
Host 侧控制
- 在 Host 侧设置全局 dispatcher 与子进程代理环境。
- 在 Web 设置页提供「代理环境」配置卡片,支持开关与配置项修改。
-
安全与容错
- 代理地址支持
http://或https://协议。 - 与机器既有
no_proxy合并,并强制包含localhost和127.0.0.1。 - 代理不可达时启动降级直连并告警;在
on模式下,若代理不可达,插件拒绝写入enabled=true。
- 代理地址支持
配置项¶
配置命名空间为 settings.yaml 的 proxy-env 段,也可在 Web 设置页中编辑。主要字段包括:
| 字段 | 类型 | 说明 |
|---|---|---|
enabled |
boolean | 是否启用代理 |
url |
string | 代理地址,默认 http://127.0.0.1:7890 |
mode |
all | include |
代理模式(all 或 include) |
proxyHosts |
string[] | include 模式下的主机清单 |
noProxy |
string | all 模式下的豁免清单 |
命令与工具¶
插件提供命令行工具与 Web 交互接口。
/proxy 命令¶
在 DSH Web 界面或终端中可直接调用以下命令:
/proxy on [代理地址]
/proxy off
/proxy status
proxy_env 工具¶
提供程序化控制接口,支持 on / off / status 动作,以及 url、mode、proxyHosts、noProxy 参数。
依赖与兼容性¶
- 运行时依赖:
schemastery、undici。 - DSH 版本要求:兼容
dsh >= 0.1.2-rc.1。 - 卸载注意:Host 侧卸载插件时,会通过
ctx.effect还原 dispatcher 与环境变量,确保系统状态恢复。
总结¶
dsh-proxy-env 为 DSH 提供了一套轻量级的代理环境管理方案,适用于需要精细化控制网络流量的工作流开发场景。开发者可通过设置页或命令行快速切换代理状态,无需修改系统环境变量。
- 插件目录:https://www.skillhub.cn/plugins/localSummer/dsh-proxy-env
- 源码地址:https://github.com/localSummer/dsh-proxy-env