dsh-edge-search:用本机 Edge 绕过 VPN 下 web_fetch 的 fake-ip 拦截

前言

在 DeepSeek Harness(DSH)里让 agent 读网页,通常走内置的 web_fetch。这层工具有 SSRF 防护:域名解析后,只要结果里出现非公网单播地址,整批请求会在发包前被拒绝。

开 Clash / Mihomo 一类 VPN 且启用 fake-ip(默认池 198.18.0.0/15)时,系统往往把每个域名都解析成 198.18.x.x。此时 web_fetch 会对几乎所有站点报 resolves to a non-public IP address,而本机浏览器、curl 仍正常——不是网站坏了,是 Harness 侧的 IP 校验与 fake-ip 撞车。

下面介绍社区插件 dsh-edge-search(维护者 Chuzhj,分类:联网工具)。它通过 CDP 驱动你本机真实的 Microsoft Edge,为 agent 补上 edge_search 与 edge_read,在 DNS 与 socket 由浏览器完成、流量走系统路由(含 VPN 隧道)的前提下取回页面文本,作为内置 web 工具的兜底通道。

这是什么

dsh-edge-search 是 DSH 的 Host 插件,包名 @local/dsh-edge-search(当前资料版本 0.3.0,MIT 许可证)。不依赖第三方搜索 API,不需要 API Key,运行时也无 npm 依赖。

定位可以概括为:当 web_fetch 因 fake-ip 或类似原因不可用、或你不想为按次计费的搜索付费时,用本机 Edge 做搜索与读正文。官方说明强调这是兜底通道,比 web_fetch 慢一个数量级,不宜作为默认路径。

核心功能

插件向 agent 注册两个无状态工具,均只返回纯文本,不操作你已打开的标签页,也不要求登录(独立调试 profile 不含你的 Cookie)。

工具 作用
edge_search 后台标签打开搜索引擎结果页,提取标题、URL、摘要后关闭标签。引擎支持 bing(默认)、baidu、google、duckduckgo
edge_read 后台标签打开指定 URL,用文本密度策略提取正文后关闭标签

原理要点:解析与连接在浏览器内完成,不经过 DSH 对解析结果的公网 IP 校验,因此可绕过 fake-ip 导致的整站拦截。Chromium 136 起默认数据目录会忽略远程调试端口,插件因此始终用专用 --user-data-dir 启动 Edge,不复用日常窗口。

环境要求

  1. 已安装 DSH(桌面版或 CLI)。
  2. Windows + Microsoft Edge;其他 Chromium 内核浏览器可通过配置项 edgePath 指定。
  3. 在 DSH 外单独跑离线自测脚本时,需要 Node.js 22+(插件使用全局 WebSocket;DSH 自带运行时一般无需自行处理)。

安装与启用

安装前请自行查看仓库源码与许可证;Host 插件以当前 DSH 进程权限运行,仅在可信环境安装。

官方提供两种方式。README 建议新手优先用方式一;需要排查问题时用手动方式二。

方式一:交给 DSH agent 安装

  1. 将 整个 dsh-edge-search 文件夹拖入 DSH 对话框(或发送完整路径),确保 agent 能看到 package.json 与 index.js。
  2. 附上说明(README 提供可复制话术):复制到固定目录(如 D:\tools\dsh-edge-search)、登记 profile 的 dependencies 与 dsh.profile.bundles(包名 @local/dsh-edge-search),并将 skills/web-fallback 复制到 %DSH_HOME%\skills\。
  3. agent 会执行 dsh plugin --profile desktop add 等步骤;你必须完全退出 DSH 再重新打开,否则 Host 插件不会加载。

验证:

dsh plugin --profile desktop list

应出现 @local/dsh-edge-search@file:...。

方式二:手动安装

  1. 将插件目录放在固定路径(README 示例 D:\tools\dsh-edge-search),根目录含 package.json 与 index.js。

  2. 加入 profile:

dsh plugin --profile desktop add D:\tools\dsh-edge-search
  1. 在 %DSH_HOME%\profiles\desktop\package.json 的 dsh.profile.bundles 中加入 "@local/dsh-edge-search"(仅装依赖、不写 bundles 则插件不会加载)。

  2. 完全退出并重启 DSH,再次执行 dsh plugin --profile desktop list 确认。

若 dsh plugin add 不可用,可改 dependencies 为 file: 路径并执行:

dsh plugin --profile desktop install

然后重启 DSH。

可选配置

在 profile 的 cordis.patch.yml 中可配置:

- id: dsh-edge-search
  name: "@local/dsh-edge-search"
  config:
    port: 9222
    edgePath: "C:/Program Files (x86)/Microsoft/Edge/Application/msedge.exe"
    profileDir: "..."
键 默认 说明
port 9222 CDP 端口,需未被占用
edgePath 自动探测 msedge.exe 路径;文件不存在会直接报错
profileDir %LOCALAPPDATA%\dsh-edge-search\edge-profile 自动化专用 profile,可删以重置

配套技能 web-fallback

仓库内 skills/web-fallback 指导 agent 在 web_fetch 失败(如 WEB_BLOCKED_URL、non-public IP 报错)时切换到 edge_read / edge_search。不装也能调用工具;装上后更易被主动选用。复制到 %DSH_HOME%\skills\web-fallback\ 后新开会话验证。勿与同名或同功能的旧技能并存。

典型用法

在 DSH 对话中让 agent 读取网页或搜索,应能调用 edge_read、edge_search。

不经过 DSH 时,可在插件目录用自测脚本探查(需 Node 22+):

node selftest.mjs probe
node selftest.mjs read "https://example.com" 400
node selftest.mjs search "你好" bing 3

首次调用通常会弹出专用调试 Edge 窗口(独立 profile,无你的书签与登录态)。保持窗口打开可复用实例,关闭后下次调用会重新拉起,多耗数秒。

Windows 上可自测是否处于 fake-ip:Resolve-DnsName www.baidu.com 若返回 198.18.x.x,则内置 web_fetch 易全线失效,此时兜底工具更有意义。

适用场景与注意

适合谁

  • 开 VPN fake-ip 且依赖 DSH 联网读页、搜索的 Windows 用户。
  • 希望在无搜索 API Key、不接第三方服务的前提下,用本机浏览器完成有限网页访问的开发者。

限制与风险

  • 仅 Windows + Edge(或可指定的 Chromium)场景;速度慢于 web_fetch,宜作兜底。
  • 需登录或强 JS 单页应用可能提不到正文;专用 profile 读不到你日常浏览器的 Cookie,属设计行为。
  • CDP 监听 127.0.0.1,本机其他进程可连接;共享或不可信环境需留意,不用时可关闭调试 Edge 窗口。
  • 插件不向第三方上报数据;安装前仍建议审阅 GitHub 仓库 源码。

常见故障:出现 unknown tool "edge_read" 多为未重启 DSH 或未写入 bundles;端口占用可改 port 或检查 9222;edgePath 错误按 README 故障表处理。

结尾

dsh-edge-search 用本机 Edge 与 CDP,在 VPN fake-ip 与 DSH web_fetch SSRF 校验冲突时,为 agent 提供 edge_search、edge_read 两条纯文本兜底路径,无需 API Key。社区目录与 DeepSeek / 幻方无官方从属关系,属 DSH「一切皆插件」生态中的联网工具条目(GitHub 星标数以仓库为准)。

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

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

小夜