dsh-wsl-net:診斷 WSL 代理與連接問題

前言

在使用 DeepSeek Harness (DSH) 的 Windows + WSL 環境中,瀏覽器能正常訪問 HTTPS,但 WSL 中的智能體進程卻無法連接。這通常由代理配置或 Node.js 24 的行爲導致:Clash / V2Ray 等代理軟件在 Windows 上運行,而 Node 24 的 fetch 默認忽略環境變量,除非顯式設置 NODE_USE_ENV_PROXY=1。插件 dsh-wsl-net 旨在診斷這些網絡問題,並返回可複製的修復腳本。

插件定位

dsh-wsl-net 是一個 DeepSeek Harness 的聯網診斷工具插件。它屬於 dsh-wsl-kit 套件的一部分,與 dsh-wsl-env 配對使用。

核心功能

該插件主要解決 WSL 下的網絡可達性問題,具體包括以下能力:

  1. 環境變量報告:讀取並展示 HTTP_PROXY、HTTPS_PROXY、ALL_PROXY、NO_PROXY 等變量,其中用戶信息(如用戶名/密碼)會被脫敏隱藏。
  2. 進程環境比對:檢查當前 dsh web 進程(dshWeb)的環境變量,以便區分工具進程與宿主機進程的代理配置差異。
  3. 端口探測:對配置的代理端口(proxyListen)進行 TCP 探測,確認端口是否在監聽。
  4. 服務可達性探測:探測 DeepSeek API 和 npm registry 的連通性(HTTP 狀態碼小於 500 視爲可達,401 亦計入)。
  5. 修復腳本生成:返回診斷建議和修復步驟/腳本。若當前有配置代理,腳本會複用;否則返回默認模板(如 127.0.0.1:7890),需手動編輯。
  6. 子進程代理注入:可選地將 NODE_USE_ENV_PROXY=1 及小寫的 http_proxy 別名注入到 bash/npm 的子進程中。

安裝與啓用

安裝命令如下:

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

安裝完成後,重啓 dsh web。在新的會話中,Tools 列表裏會出現 net_doctor 工具。

典型用法

在對話框中直接提問即可觸發診斷:

“Check whether DeepSeek API and npm are reachable.”

如果啓用了“子進程代理注入”功能,可以通過以下命令驗證環境變量是否已注入:

node -e "console.log(process.env.NODE_USE_ENV_PROXY, process.env.http_proxy || process.env.HTTP_PROXY)"

當子進程被正確包裹時,預期輸出爲 1 以及你的代理 URL。

配置與參數

插件支持通過配置文件調整行爲。在 DSH 的配置中,可以添加以下內容:

- id: dsh-wsl-net
  name: dsh-wsl-net
  config:
    timeoutMs: 20000
    probeTimeoutMs: 5000
    injectChildProxy: true
參數 默認值 說明
timeoutMs 20000 工具執行超時時間
probeTimeoutMs 5000 單次探測超時時間
injectChildProxy true 是否注入代理環境變量到子進程

工具的執行參數 target 用於指定檢查範圍:

  • all:默認,檢查所有內容。
  • env:僅檢查環境變量。
  • deepseek:僅檢查 DeepSeek API。
  • npm:僅檢查 npm registry。

注意事項

使用前需明確該插件的侷限性:

  • 不修復 in-process web_fetch:插件主要處理進程級和子進程級的網絡問題。如果問題出在 DSH 主進程內部的 web_fetch(例如使用 dsh-wsl-fetch 插件),本插件無法解決。
  • 不打印 API 密鑰:出於安全考慮,插件不會輸出任何 API 密鑰。
  • 不更改 Clash 端口:插件不會自動修改 Clash 或 V2Ray 的端口配置。
  • 不編造代理 URL:如果當前未配置代理,插件不會憑空生成一個代理 URL,只會返回模板或建議。

結語

dsh-wsl-net 是解決 WSL 環境下網絡連通性問題的實用工具。通過它,開發者可以快速定位代理配置與 Node.js 24 行爲之間的衝突,並獲取修復腳本。建議配合 dsh-wsl-kit 中的其他組件使用。

羽毛球分组比赛记分
小程序二维码

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

小夜