dsh-network-proxy:在 Harness 里热切换 HTTP 代理

前言

在 DeepSeek Harness(DSH)里做智能体开发时,模型请求、MCP、网页抓取和命令工具往往共用同一套出口网络。官方自带的 @deepseek-ai/dsh-http-proxy 只在启动时读取 HTTPS_PROXY 等环境变量,且不读取操作系统代理设置。结果是:只在代理软件里打开「系统代理」时,Harness 仍可能直连;换代理要改环境变量并重启;各子系统对代理的策略也不一致。

dsh-network-proxy 由社区维护者 baizhizzl 发布,属于客户端类 DSH 插件。它在 设置 → 通用设置 增加一行 HTTP 代理,支持直连、跟随系统、自定义三种模式,保存后立即生效,无需重启 Harness。

这是什么

包名:@local/dsh-network-proxy。许可:MIT。支持平台:Windows(通过 WinINET 相关注册表读取系统代理)、macOS(scutil --proxy)。

插件在运行时检测系统代理(含 PAC),把策略挂到进程级 fetch 的 dispatcher 上,并支持原地热切换;同时把策略同步到子进程常用的 HTTP_PROXY / HTTPS_PROXY / NO_PROXY 等环境变量。

核心功能

系统代理检测

  • Windows:读取 HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings 下的 ProxyEnable、ProxyServer、ProxyOverride、AutoConfigURL;支持 http=…;https=… 分协议代理与 PAC(内置精简 PAC 求值器,按目标域名求值)。
  • macOS:通过 scutil --proxy 获取系统代理。
  • 系统代理开关关闭时,界面仍会展示检测到的代理地址,便于在系统设置里打开代理。

热切换与覆盖范围

保存设置时直接替换全局 dispatcher,下一次请求即生效。覆盖 Harness 进程内走 Node 内置 fetch() 的出口,包括模型、MCP HTTP、web 搜索/抓取、各命令工具里的 fetch()。

不覆盖:桌面窗口 Chromium 自身网络栈(本身跟随系统代理)、遥测(node:http,设计上直连)、模型生成的 PTC/workflow 子进程(由 Harness 自有代理策略管理)。

旁路与子进程

localhost、127.0.0.0/8、::1、0.0.0.0 永远直连;系统旁路列表(如 <local>、*.example.com、10.0.0.0/8)一并生效。

子进程侧设置 NODE_USE_ENV_PROXY,使 curl、git、pnpm 等跟随同一策略。

持久化与恢复

选择写入 $DSH_HOME/network-proxy.json,下次启动由 Host 半自动应用。插件卸载或停用会恢复启动时的 dispatcher 与环境变量。

安装与启用

方式一:会话内让 Agent 安装

在 Harness 会话中说:

安装插件 https://github.com/baizhizzl/dsh-network-proxy

Agent 会调用插件管理器的 install_bundle,参数为:

git+https://github.com/baizhizzl/dsh-network-proxy.git

方式二:本地目录

plugin_manager install_bundle  target: /path/to/dsh-network-proxy

安装完成后打开 设置 → 通用设置,在「会话显示」下方可见 HTTP 代理 一行。

三种模式

模式 行为
直连 丢弃代理;进程内 fetch() 与子进程均直连
跟随系统 读取操作系统当前代理;系统代理关闭时直连,界面显示检测到的代理地址
自定义 使用填写的 http://host:port(可带 user:pass@),保存后立即生效

默认模式为 跟随系统。

典型用法

  1. 本机已用 Clash、Surge 等工具开启「系统代理」:安装插件后保持 跟随系统,保存即可让模型与 MCP 走同一出口,无需再设 HTTPS_PROXY 并重启 Harness。
  2. 仅需临时指定固定代理:选 自定义,填写例如 http://127.0.0.1:7890,保存后立刻生效。
  3. 系统里刚改过代理开关或 PAC:在设置里点「重新检测」,或重新打开设置页刷新(插件不会实时监听系统代理变更)。

适用场景与注意

适合在 Windows / macOS 上日常依赖系统代理、又希望在 Harness 内统一出口、且不想频繁重启的开发者。

安装前建议自行查看 GitHub 仓库 源码与 MIT 许可证。插件以当前 DSH 进程权限运行,自定义代理 URL 会进入本地配置,请勿在不可信环境填写敏感凭据。

已知限制(摘自项目 README):

  • 仅支持 http:// / https:// 代理;SOCKS 会提示暂不支持。
  • PAC 求值器覆盖常见辅助函数;dnsResolve 在同步求值中返回空串,复杂 PAC 可能退化。
  • 系统代理凭据(少见)不解析;自定义模式支持 user:pass@。
  • 修改系统代理后需手动「重新检测」或重开设置页。

结尾

dsh-network-proxy 补上了 Harness 在运行时读取系统代理、统一 fetch 与子进程环境、并热切换 HTTP 代理这一段能力。目录与详情可在 SkillHub 插件页查看,安装与行为以 README 为准。

  • 目录页:https://www.skillhub.cn/plugins/baizhizzl/dsh-network-proxy
  • GitHub:https://github.com/baizhizzl/dsh-network-proxy
羽毛球分组比赛记分
小程序二维码

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

小夜