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