izwarm195/dsh-net-tools:把 DSH 接到本地 HTTP 代理

前言

DSH 的智能体在沙箱中执行命令时,可能需要访问外部网站、文档或 API。若这些请求需要经过本地 HTTP 代理,代理地址就需要在抓取动作中正确指定。

下面介绍 izwarm195/dsh-net-tools:它的定位是“让 DSH 使用你的魔法”——把沙箱里的 agent 接上你本地的 HTTP 代理,一条命令就能抓取被墙的网站、文档和 API。

这是什么

izwarm195/dsh-net-tools 是一个 DSH 插件,由 izwarm195 维护,许可证为 MIT。

项目说明指出:代码、测试与文档均由 AI(DeepSeek Harness 编码代理)生成,人工仅负责审阅、验收与发布。

它主要解决一个具体问题:DSH 宿主进程可以使用正常的 Node.js 网络路径,而插件提供 net_fetchnet_proxy_status 两个工具,让 agent 能统一通过本地 HTTP 代理抓取 HTTP(S) 内容,并检查代理状态。

核心功能

net_fetch

net_fetch 用于抓取 HTTP(S) 内容。

它通过用户代理的手动 CONNECT 隧道完成请求,不走 schannel,零依赖。调用后可以自动跟随重定向,并返回文本或截断后的响应体。

它同时执行以下限制:

  • 仅允许 http: / https: 协议
  • 超时上限默认 30 秒
  • 响应大小上限默认 1 MiB
  • 重定向最多 5 次,且每次重定向都重新执行同样的安全校验
  • 默认拒绝私网 / 回环 / 链路本地地址;传 allowPrivate: true 可放行

net_proxy_status

net_proxy_status 用于报告 DSH 进程会使用的代理,并检测其可达性。

它会检查以下来源:

  • 用户级环境变量
  • 当前进程环境变量
  • Windows 系统代理

代理发现顺序如下:

  1. 显式 proxy 参数
  2. HTTPS_PROXY / HTTP_PROXY 环境变量
  3. Windows 系统代理(注册表 Internet Settings

安装与启用

先确认运行环境满足以下要求:

  • node >=20
  • peerDependencies:@deepseek-ai/cordis >=4.0.0@deepseek-ai/dsh-tools >=0.1.0-rc.5

安装命令如下。命令中的 <本包> 为插件包占位符,需按实际安装来源替换:

dsh plugin --profile web add <本包>
# 或:dsh plugin --profile desktop add <本包>

经过上面的步骤后,重启 DSH,agent 即可使用 net_fetchnet_proxy_status 两个工具。

典型用法

抓取被墙的页面

在 agent 中调用:

net_fetch(url: "https://github.com/")

这一步用于抓取页面、文档或 API,并按代理发现顺序使用本地 HTTP 代理。

排查代理配置

调用:

net_proxy_status(checkReachability: true)

这一步用于确认 DSH 进程将使用哪个代理,并检测该代理是否可达。

适用场景与注意

适合以下场景:

  • 需要 DSH agent 抓取外部网站、文档或 API
  • 本地已有可用 HTTP 代理
  • 希望把代理抓取和代理诊断放在统一工具中
  • 希望避免每个抓取动作都单独处理代理地址

使用前需要注意:

  • 工具运行在 DSH 宿主进程(Node.js)中,位于文件沙箱之外,因此会以当前 DSH 进程的运行环境工作。
  • 安装前应检查源码与 MIT 许可证。
  • allowPrivate: true 会放行默认被拒绝的私网 / 回环 / 链路本地地址,只在确需访问内网资源时开启。
  • net_fetch 仅处理 http: / https: 请求,并受 1 MiB 响应大小、30 秒超时和 5 次重定向限制。

结尾

izwarm195/dsh-net-tools 的价值是把本地 HTTP 代理接入 DSH 的 agent 工具链:net_fetch 负责抓取,net_proxy_status 负责诊断。

项目地址:

  • GitHub:https://github.com/izwarm195/dsh-net-tools
羽毛球分组比赛记分
小程序二维码

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

小夜