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 中的其他组件使用。

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

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

小夜