前言¶
在使用 DeepSeek Harness (DSH) 进行智能体开发或运行时,如果当前网络环境存在本地代理(如 Clash、V2Ray 等),但直连海外网站不可达,手动配置环境变量或重启进程会降低效率。dsh-net-proxy-plugin 作为一个本地网络代理兜底插件,旨在自动扫描系统中的代理配置,探测连通性,并在直连失败时将可用代理接入正在运行的 DSH 进程。
插件简介¶
本插件由 minatoAI 维护,是一个 MIT 许可的开源工具。它不内置代理服务,而是作为 DSH 的网络层补充:检测系统代理、扫描本地端口,并在直连失败时自动启用检测到的代理,确保 fetch 请求与子进程(如 git、pnpm)的网络访问可用。
核心功能¶
-
自动发现候选代理
按优先级扫描:配置文件extraProxies-> 环境变量(HTTPS_PROXY/HTTP_PROXY/ALL_PROXY)-> 系统代理(Windows 注册表、macOSscutil、Linuxgsettings)-> 常见本地端口(7890, 10809 等,支持 HTTP 与 SOCKS5)。 -
连通性探测
对探测目标(默认为 Google 204 与 GitHub)进行直连与逐候选代理的连通性测试。返回 HTTP 状态码 < 500 视为可达。 -
自动决策
提供两种激活模式:
-auto(默认):仅在直连失败且存在可用代理时激活。
-always:存在可用代理即激活。
探测结果默认每 5 分钟复检一次(可通过配置关闭或调整),VPN 断开或端口变更时可通过命令手动刷新。 -
激活范围
- 进程内:接管所有 fetch 请求(undici dispatcher),覆盖 LLM 调用、web_search 等场景。
- 子进程:通过设置HTTPS_PROXY/HTTP_PROXY/NO_PROXY环境变量,确保 git、pnpm 等启动的子进程也走该代理。 -
WebFetchProvider 兼容
提供语义一致的net-proxyWebFetchProvider,可与 dsh 内置的web_fetch一键切换,支持自定义超时、响应大小限制与重定向规则。
安装与启用¶
该插件以 bundle 方式分发,安装命令如下:
dsh plugin --profile web add github:minatoAI/dsh-net-proxy-plugin
安装完成后,需要重启 DSH 进程以使配置生效:
dsh --profile web
配置与使用¶
在 profile 的 cordis.patch.yml 中覆盖 net-proxy 行,可自定义探测目标、超时时间、代理列表及激活策略。
- id: net-proxy
config:
targets: [https://www.google.com/generate_204, https://github.com]
probeTimeoutMs: 5000
reprobeIntervalMs: 300000
bypassHosts: [localhost, 127.0.0.1, ::1, api.deepseek.com, "*.deepseek.com"]
extraProxies: [http://127.0.0.1:7890]
probePorts: [7890, 7897, 10809]
activation: auto
在 Web UI 中,可以通过以下命令管理插件状态:
- 输入 /net-proxy 查看当前激活的代理、来源及直连可达性。
- 输入 /net-proxy refresh 立即重新执行探测与决策。
若需让 web_fetch 工具也走代理,需切换 fetchProvider:
- id: web
config:
searchProvider: deepseek-official
fetchProvider: net-proxy
注意事项¶
- 兜底方案:插件不强制接管网络。当没有可用代理或直连正常时,DSH 的行为与未安装该插件完全一致。
- 仅限 dsh 进程:插件仅读取并影响当前 dsh 进程及其子进程的网络访问,不会修改 Windows 系统代理设置。
- 信任代理:插件会使用你系统中的代理服务转发流量,请确保信任该本地代理。
结语¶
dsh-net-proxy-plugin 通过自动化代理发现与决策,解决了 DSH 环境下直连与代理切换的痛点。开发者无需手动干预,即可在直连失败时自动利用本地可用代理。更多细节与源码,可参考 GitHub 仓库。