DeepSeek Harness 本地网络代理兜底插件

前言

在使用 DeepSeek Harness (DSH) 进行智能体开发或运行时,如果当前网络环境存在本地代理(如 Clash、V2Ray 等),但直连海外网站不可达,手动配置环境变量或重启进程会降低效率。dsh-net-proxy-plugin 作为一个本地网络代理兜底插件,旨在自动扫描系统中的代理配置,探测连通性,并在直连失败时将可用代理接入正在运行的 DSH 进程。

插件简介

本插件由 minatoAI 维护,是一个 MIT 许可的开源工具。它不内置代理服务,而是作为 DSH 的网络层补充:检测系统代理、扫描本地端口,并在直连失败时自动启用检测到的代理,确保 fetch 请求与子进程(如 git、pnpm)的网络访问可用。

核心功能

  1. 自动发现候选代理
    按优先级扫描:配置文件 extraProxies -> 环境变量(HTTPS_PROXY/HTTP_PROXY/ALL_PROXY)-> 系统代理(Windows 注册表、macOS scutil、Linux gsettings)-> 常见本地端口(7890, 10809 等,支持 HTTP 与 SOCKS5)。

  2. 连通性探测
    对探测目标(默认为 Google 204 与 GitHub)进行直连与逐候选代理的连通性测试。返回 HTTP 状态码 < 500 视为可达。

  3. 自动决策
    提供两种激活模式:
    - auto(默认):仅在直连失败且存在可用代理时激活。
    - always:存在可用代理即激活。
    探测结果默认每 5 分钟复检一次(可通过配置关闭或调整),VPN 断开或端口变更时可通过命令手动刷新。

  4. 激活范围
    - 进程内:接管所有 fetch 请求(undici dispatcher),覆盖 LLM 调用、web_search 等场景。
    - 子进程:通过设置 HTTPS_PROXY/HTTP_PROXY/NO_PROXY 环境变量,确保 git、pnpm 等启动的子进程也走该代理。

  5. WebFetchProvider 兼容
    提供语义一致的 net-proxy WebFetchProvider,可与 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 仓库。

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

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

小夜