前言¶
给 DSH 接入联网能力时,一个常见的问题是:内置或已有方案可能要求先配置 API key,或者只能依赖单一后端,一旦后端限流,任务就停下来。fno2010/dsh-web-search-ext 解决的是这个问题:它是一个面向 DeepSeek Harness(DSH)的多后端 web_search 与 web_fetch provider,可以完全不带 API key 使用,也可以加入 key 来解锁更高限额。
下面介绍它的定位、能力、安装方式和使用时需要注意的点。
这是什么¶
fno2010/dsh-web-search-ext 是 DSH 的一个联网扩展插件,维护者为 fno2010,许可证为 MIT。
它提供两个后端:Exa 和 Firecrawl,用于 web_search 和 web_fetch。它的核心卖点是:
- 无需 API key 即可工作;
- 可选配置 API key,以提升限额;
- 在后端失败时自动切换后端;
- 对结果做存活校验,并在结果中展示来源、耗时、结果数和限制说明。
该插件要求 Node.js 版本为 >=22。它是 plain ESM JavaScript,没有 build step,也没有 postinstall / prepare 安装脚本。
核心能力¶
双后端与 keyless 路径¶
该插件同时使用 Exa 和 Firecrawl 两个后端。
对于 web_fetch,它提供 keyless 路径:先通过 Firecrawl scrape 抓取 URL,失败时回退到 Exa 的 anonymous MCP web_fetch_exa。
key 是可选的。配置优先级为:
settingsliteral- credentials service
- launch environment variable
这里有两个使用上的区别需要注意:
- keyless Exa MCP 是文档中公开的 fallback,但有限额,可能返回
HTTP 429; - Firecrawl keyless mode 是非官方模式,可能被限流或移除。
自动 failover 与 429 cooldown¶
当某个后端出现以下情况时,插件会自动切换到下一个后端:
429401/402/4035xx- network error
- malformed body
对于 429,插件会按后端做 cooldown。cooldown 时间会参考后端返回的 Retry-After 或 retry_after_seconds,并受 maxCooldownSec 限制。
结果校验与来源说明¶
默认启用 L0 liveness 校验。每个返回结果会被标记为以下状态之一:
alive
dead
blocked
timeout
unreachable
skipped
插件还提供实验性的 L1 content verification,可通过配置项开启:
"verifyLevel": "content"
搜索结果还会附带 provenance receipt,展示实际响应后端、耗时、结果数量,以及当前路径的限制说明。
插件支持 freshness window:
24h
7d
30d
只有当前端或后端支持时才会发送。
安装与启用¶
先安装插件:
dsh plugin --profile web add @fno2010/dsh-web-search-ext
如果你使用本地 checkout,也可以这样安装:
dsh plugin --profile web add ./path/to/dsh-web-search-ext
安装插件后,需要重启正在运行的 dsh web 进程。重启之后,再修改配置是 hot 的,不需要再次重启。
安装后,插件的 bundle selection 会设置:
web.searchProvider: web-search-ext
web.fetchProvider: web-search-ext
也就是说,web_search 和 web_fetch 都会指向 web-search-ext 这个 provider。
典型用法¶
经过上面的安装和重启,可以在 Web 端使用插件提供的配置入口。
使用 Web settings card¶
在 Web 的插件配置卡片中,可以配置六个核心配置字段,以及两个 API key。
注意 freshness window 仍然只在 settings.yaml 中配置,不在这个卡片中配置。
查看 Session Health¶
Session Health tab 使用这个接口:
GET /web-search-ext/health
health payload 只包含 counters,不包含 credentials、URLs 或 query text。
运行 connectivity probe¶
connectivity probe 使用这个接口:
POST /web-search-ext/probe
probe payload 只包含 plan literals 和 closed codes,不包含 vendor messages、URLs 或 keys。
使用 slash command¶
插件提供 /search-engine slash command,用于切换 preferred backend、查看 live status,并运行 connectivity test。
如果 /search-engine 已经被占用,插件会回退到:
/web-search-engine
适用场景与注意¶
这个插件适合以下场景:
- 你想在 DSH 中给
web_search和web_fetch增加多后端能力; - 你希望先不配置 API key 跑通链路;
- 你希望在某个后端限流或失败时,自动切到另一个后端;
- 你希望在结果中看到实际后端、耗时、结果数量和限制说明;
- 你希望在 Web 端通过 settings card、health tab 和 slash command 管理该 provider。
使用前注意以下几点:
- 该插件运行在当前
dsh进程权限下,安装前应检查源码和许可证; - keyless 路径可能有限额;
- Firecrawl keyless mode 是非官方模式,可能被限流或移除;
- 如果当前 web seam 没有 pin 到这个 provider,插件会优雅降级,不会声称其他 provider 的结果。
获取信息¶
社区目录页:
https://www.skillhub.cn/plugins/fno2010/dsh-web-search-ext
GitHub 仓库:
https://github.com/fno2010/dsh-web-search-ext