dsh-web-fetch-fakeip:解决 mihomo/Clash TUN 模式下的 Web Fetch 问题

在 DeepSeek Harness (DSH) 的 web seam 中,web_fetch 是常用的工具。当机器 DNS 运行在透明代理(TUN)后的 fake-ip 模式下,标准供应商 @deepseek-ai/dsh-web-fetch-http 会拒绝请求。这是因为 ipaddr.js 将默认的 198.18.0.0/15 区块分类为保留地址,导致工具无法解析域名。dsh-web-fetch-fakeip 作为一个即插即用替代品,解决了这个问题,无需禁用 fake-ip 或设置代理环境变量即可保持工具工作。

插件定位

dsh-web-fetch-fakeip 是一个 fake-ip 感知的 WebFetchProvider,用于替换 @deepseek-ai/dsh-web-fetch-http。它重用了标准供应商的整个传输层,仅替换了目的地策略,使其能够在 mihomo/Clash TUN 模式及 fake-ip DNS 下正常工作。

安装与启用

通过 DSH 的插件系统安装,这是目前推荐的方式:

dsh plugin --profile web add dsh-web-fetch-fakeip

安装后,插件会自动应用 cordis.patch.yml 层,禁用原供应商并启用此插件。

版本兼容性

如果遇到加载失败,可能是由于 DSH 版本不兼容。DSH 0.2.0-rc.2 引入了 peerDependencies 检查,如果版本不匹配(例如旧版本 0.1.1),插件会被跳过。此时需要更新插件:

dsh plugin --profile web update dsh-web-fetch-fakeip

重启生效

安装或移除插件后,必须重启配置文件才能使变更生效。patchReload: live 观察者无法动态重新加载 dsh.profile.bundles 列表。

配置说明

默认配置(推荐)

大多数情况下无需额外配置。插件默认适配 mihomo/Clash 的默认 dns.fake-ip-range(198.18.0.0/15)。

自定义 fake-ip 范围

如果您的代理配置了非标准的 fakeIpRanges,需要在配置中指定:

- id: web-fetch-http
  disabled: true

- insert:
    - id: web-fetch-fakeip
      name: 'dsh-web-fetch-fakeip'
      config:
        fakeIpRanges:
          - 10.18.0.0/16
          - 198.18.0.0/15

注意事项

  1. 保留地址问题:标准供应商之所以失败,是因为 ipaddr.js 将 198.18.0.0/15 标记为保留地址。此插件通过重新实现策略来绕过此限制。
  2. 手动安装:除了包安装,也可以手动复制源码到 profiles/web/plugins/ 并通过 patch 引入,但官方推荐使用包管理命令。
  3. 权限与安全:插件以当前 DSH 进程的权限运行。在安装前,建议检查源码与许可证(MIT)。

总结

dsh-web-fetch-fakeip 修复了在 TUN 模式下使用 fake-ip DNS 时的兼容性问题。它提供了最简单的配置方式,适合需要保持代理环境纯净、不依赖环境变量的开发者。

  • 项目主页: https://github.com/kaminn/dsh-web-fetch-fakeip
  • 插件目录: https://www.skillhub.cn/plugins/kaminn/dsh-web-fetch-fakeip
羽毛球分组比赛记分
小程序二维码

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

小夜