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
羽毛球分组比赛记分
小程序二维码

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

小夜