前言¶
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