dsh-wsl-fetch:WSL 中的 Proxy-aware web_fetch

前言

在 WSL 環境中使用 DeepSeek Harness 的 web_fetch 時,默認行爲會繞過系統代理,直接通過 Linux 內核解析 DNS 並連接目標 IP。這導致在需要通過代理訪問互聯網的場景下,web_fetch 請求會失敗。dsh-wsl-fetch 旨在解決這一問題,它接管官方 web_fetch,通過 Windows 的 HTTP 代理進行轉發。

是什麼

這是一個聯網工具插件,由用戶 173787247 維護。它的核心作用是註冊 wsl-proxy fetch provider,利用 undici 的 ProxyAgent 在進程內工作,使官方 web_fetch 能夠讀取並使用 Windows 的 HTTP 代理設置。

核心功能

  • 使用 Windows HTTP 代理發送官方 web_fetch:將原本直接連接的請求通過 Windows HTTP 代理路由。
  • 註冊 fetch provider wsl-proxy:在 DSH 系統中註冊該 provider,供 web_fetch 調用。
  • 進程內代理工作:依賴 undici 的 ProxyAgent,在當前 DSH 進程中執行代理邏輯。

安裝與啓用

安裝命令如下:

dsh plugin --profile web add github:173787247/dsh-wsl-fetch

安裝後,插件僅當環境變量 HTTP(S)_PROXY 被設置時纔會生效。若未設置該環境變量,插件雖然註冊,但處於不可用狀態。

配置

插件支持通過配置文件調整行爲:

- id: dsh-wsl-fetch
  name: dsh-wsl-fetch
  config:
    timeoutMs: 30000
    maxRedirects: 5
    retries: 2
    retryDelayMs: 400
配置項 默認值 說明
timeoutMs 30000 請求超時時間(毫秒)
maxRedirects 5 最大重定向次數
retries 2 失敗重試次數
retryDelayMs 400 重試基礎延遲(毫秒)

注意事項

  • 版本依賴:需要 dsh 版本 >= 0.1.2。
  • 本地 URL 限制:私有或本地 URL 會被阻斷,無法通過代理訪問。
  • Cloudflare 處理:如果通過 Clash 訪問 Cloudflare 遇到 403 或 1010 錯誤,這是網站防火牆(WAF)攔截,需要在 Clash 中配置 DIRECT 規則,該插件無法繞過 WAF。
  • 模型配置:插件不負責配置 Cloud Flash 模型 ID,需要手動在 ~/.dsh/settings.yaml 中設置。

測試

安裝後可運行以下命令進行測試:

npm test
bash scripts/stress.sh
羽毛球分组比赛记分
小程序二维码

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

小夜