前言¶
DeepSeek Harness (DSH) 的 ctx.web seam 提供了网页抓取能力。内置的 WebFetchProvider 通常会校验解析出的 IP 是否为公网单播地址,在 fake-ip 或 TUN 模式下,域名会被解析到 198.18.0.0/15 保留段,导致任意网页都报 resolves to a non-public IP address 错误。
dsh-web-fetch-proxy 为 DSH 添加了一个名为 http-proxy 的 web_fetch provider。它使用 undici 的 ProxyAgent,将请求的域名解析与出网完全交给用户显式配置的 HTTP(S) 代理。这绕过了本地 DNS 校验,解决了 TUN 环境下的连接问题。
定位¶
这是一个纯注册表扩展,不修改 DSH 核心。它通过 Cordis Patch 机制,将 ctx.web 的默认行为切换为通过外部代理进行请求。
安装与启用¶
安装器要求 PATH 中存在 dsh 版本 0.1.2-alpha.3 或 0.1.5-rc.1,以及 pnpm。
- 执行官方安装命令:
npx --yes github:shaomingbo/dsh-web-fetch-proxy#v0.1.2
- 使用
--profile指定目标 profile(默认为web):
npx --yes github:shaomingbo/dsh-web-fetch-proxy#v0.1.2 --profile <name>
- 安装完成后,需要重启对应 profile 并在 Web 端强刷新以加载新配置。
配置与接线¶
本插件通过 Cordis Patch 机制接管 web seam 的 fetchProvider。配置分为两部分:插件自身的配置和接管 seam 的配置。
- 定义插件配置:在 profile patch 层添加
web-fetch-proxy条目,并配置proxyUrl。
# 1) 插件条目
- id: web-fetch-proxy
config:
proxyUrl: http://127.0.0.1:7890
# 可选参数(默认值与内置一致):
# maxResponseBytes: 5000000
# maxBodyChars: 100000
# timeoutMs: 30000
# maxRedirects: 5
# userAgent: deepseek-harness/0.0.1 (+https://github.com/deepseek-ai)
- 接管 web seam:修改
webseam 的配置,将fetchProvider指向插件 IDhttp-proxy。
# 2) 接管 web seam
- id: web
config:
searchProvider: deepseek-official
fetchProvider: http-proxy
- 重载与验证:
- 配置变更后,必须重启 profile 并强刷新 GUI。
- 运行烟雾测试验证连接:
develop dsh-web-fetch-proxy smoke:proxy
兼容性与限制¶
- DSH 版本兼容:仅测试并兼容 DSH 0.1.2-alpha.3 和 0.1.5-rc.1。安装器会拒绝其他版本。
- 代理信任:本插件不做本地 DNS 校验,解析完全交给配置的代理。代理即信任边界,它有权观察并篡改所有请求与响应。
- 无 HMR:不承诺热更新,配置变更需重启。
- 安全语义:插件不带 cookie,不使用环境凭据,URL 中不得内嵌凭据。
结语¶
dsh-web-fetch-proxy 是一个解决 TUN / fake-ip 环境下 DSH 网络抓取问题的轻量级插件。它通过引入外部代理作为信任边界,确保了在特殊网络环境下的可用性。
- GitHub: https://github.com/shaomingbo/dsh-web-fetch-proxy
- 目录: https://www.skillhub.cn/plugins/shaomingbo/dsh-web-fetch-proxy