前言¶
在 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,不复用日常窗口。
环境要求¶
- 已安装 DSH(桌面版或 CLI)。
- Windows + Microsoft Edge;其他 Chromium 内核浏览器可通过配置项
edgePath指定。 - 在 DSH 外单独跑离线自测脚本时,需要 Node.js 22+(插件使用全局
WebSocket;DSH 自带运行时一般无需自行处理)。
安装与启用¶
安装前请自行查看仓库源码与许可证;Host 插件以当前 DSH 进程权限运行,仅在可信环境安装。
官方提供两种方式。README 建议新手优先用方式一;需要排查问题时用手动方式二。
方式一:交给 DSH agent 安装¶
- 将 整个
dsh-edge-search文件夹拖入 DSH 对话框(或发送完整路径),确保 agent 能看到package.json与index.js。 - 附上说明(README 提供可复制话术):复制到固定目录(如
D:\tools\dsh-edge-search)、登记 profile 的dependencies与dsh.profile.bundles(包名@local/dsh-edge-search),并将skills/web-fallback复制到%DSH_HOME%\skills\。 - agent 会执行
dsh plugin --profile desktop add等步骤;你必须完全退出 DSH 再重新打开,否则 Host 插件不会加载。
验证:
dsh plugin --profile desktop list
应出现 @local/dsh-edge-search@file:...。
方式二:手动安装¶
-
将插件目录放在固定路径(README 示例
D:\tools\dsh-edge-search),根目录含package.json与index.js。 -
加入 profile:
dsh plugin --profile desktop add D:\tools\dsh-edge-search
-
在
%DSH_HOME%\profiles\desktop\package.json的dsh.profile.bundles中加入"@local/dsh-edge-search"(仅装依赖、不写 bundles 则插件不会加载)。 -
完全退出并重启 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 星标数以仓库为准)。