dsh-web-search-firecrawl:把 DSH 的 web_search 接到 Firecrawl

前言

DeepSeek Harness(DSH)的 web 能力通过 ctx.web 这个 seam 暴露给插件。如果希望 DSH 内置的 web_search 不走原有的 DeepSeek route,而是调用 Firecrawl 的搜索 API,可以用 @elves-ai/dsh-web-search-firecrawl

下面介绍它的定位、核心能力、安装命令、配置方式,以及安装前需要确认的事项。

这是什么

@elves-ai/dsh-web-search-firecrawl 是一个 Firecrawl-backed search provider,面向 DeepSeek Harness 的 web capability seam(ctx.web)。

它把 DSH 内置的 web_search tool 接到 Firecrawl 的 search API,而不是 shipped DeepSeek route。它向 seam 注册一个 WebSearchProvideridfirecrawl,但不注册 model-facing tool。

仓库 owner 为 elves-ai,许可证为 MIT。GitHub 仓库是:

https://github.com/elves-ai/dsh-web-search-firecrawl

核心能力

这个插件主要做以下几件事:

  • 为 DSH 的 ctx.web seam 注册一个 WebSearchProvideridfirecrawl
  • 调用 Firecrawl 的 POST /v1/search
  • 把 Firecrawl 返回的 data[] 映射成 seam 使用的 normalized WebSearchResult
  • 支持从 DSH Settings 的 Firecrawl 页面配置 API key。
  • 当 settings 页面里的 key 为空时,回退到环境变量 $FIRECRAWL_API_KEY
  • 支持通过 useFirecrawl 在不重启的情况下切换 provider。

可配置字段包括:

useFirecrawl
apiKey
baseURL
limit
maxSnippetChars

其中 apiKey 会被写为 secret,settings 页面不会把保存的 key 回显出来。

安装前确认

资料中要求以下两项:

  1. 一个 DeepSeek Harness 安装,且处于官方包的 0.1.0-rc.6 线。
  2. 一个 Firecrawl API key。

如果没有 API key,搜索会失败,错误标识为:

WEB_PROVIDER_CONFIGURED_UNAVAILABLE

另外,插件会以当前 dsh 进程的权限运行。安装前建议检查源码和许可证,确认你信任它将要执行的行为。

安装

资料给出两种安装入口。请根据你当前的环境选择其中一种。

如果你使用 global dsh CLI:

dsh plugin --profile web add @elves-ai/dsh-web-search-firecrawl@latest

如果你在 deepseek-harness source checkout 中,dsh 是 pnpm workspace script,从 workspace root 执行:

pnpm dsh plugin --profile web add @elves-ai/dsh-web-search-firecrawl@latest

安装完成后,需要重启 dsh web,然后强制刷新页面,让浏览器端和 settings page 重新加载:

dsh web

强制刷新快捷键是 Cmd/Ctrl+Shift+R

启用 Firecrawl

安装插件后,web seam 的 searchProvider 默认会切到 firecrawl

接下来打开 DSH Settings → Firecrawl:

  1. 在 API Key 字段粘贴 fc-... 形式的 key。
  2. 保存。

保存后,API key 会按 secret 处理。页面只表示是否已配置 key,不会回显保存的明文。

如果 settings 页面里的 key 留空,provider 会尝试回退到环境变量:

export FIRECRAWL_API_KEY=fc-...
dsh --profile web

如果 settings key 和环境变量都不存在,provider 不可用。

切换 provider

useFirecrawl 用于在 Firecrawl 和原有 DeepSeek web search 之间切换。

  • useFirecrawltrue 时,使用 Firecrawl。
  • useFirecrawlfalse 时,切回原有 DeepSeek web search。

这个切换不需要重启 DSH 进程。

更新

使用 global dsh CLI 更新:

dsh plugin --profile web update --latest @elves-ai/dsh-web-search-firecrawl

如果插件安装在 deepseek-harness source checkout 的 profile 中,可以从 workspace root 使用 pnpm 入口:

pnpm dsh plugin --profile web update --latest @elves-ai/dsh-web-search-firecrawl

更新后同样需要重启 dsh web,然后强制刷新页面。

卸载

使用 global dsh CLI 卸载:

dsh plugin --profile web remove @elves-ai/dsh-web-search-firecrawl

deepseek-harness source checkout 中:

pnpm dsh plugin --profile web remove @elves-ai/dsh-web-search-firecrawl

卸载会移除插件包和对应 mount,但不会删除 settings 页面里保存的值。如果你希望删除已保存的 API key,需要先到 DSH Settings → Firecrawl 页面清除 key。

配置字段说明

以下是资料中列出的字段和约束。

useFirecrawl

用于选择是否使用 Firecrawl。

  • true:使用 Firecrawl。
  • false:切回原有 DeepSeek web search。

apiKey

Firecrawl API key。

  • 可以从 DSH Settings → Firecrawl 页面保存。
  • 保存后按 secret 处理,不会回显。
  • 如果 settings 页面里的 key 为空,回退到 $FIRECRAWL_API_KEY
  • 如果两者都不存在,provider 不可用。

baseURL

Firecrawl endpoint 的 base URL。

  • POST /v1/search 会追加到这个 base URL 后面。
  • 如果 baseURL 无法解析,provider 不可用。

limit

默认结果数。

  • 当请求没有携带 maxResults 时,可以使用这个默认值。
  • 如果设置,必须是正整数。

maxSnippetChars

用于限制单条 snippet 的最大字符数。

  • 如果设置,必须是正整数。

错误与边界行为

资料中列出以下行为:

  • 无可用 API key 时,搜索失败,错误标识为 WEB_PROVIDER_CONFIGURED_UNAVAILABLE
  • provider 失败会表现为 WebError,错误标识为 WEB_PROVIDER_ERROR
  • 请求被 abort 时,错误标识为 WEB_ABORTED
  • HTTP redirect 会在访问 Location target 之前被拒绝。

适用场景

这个插件适合以下情况:

  • 你已经有 DSH 的 web capability seam。
  • 你希望 web_search 使用 Firecrawl 的搜索 API。
  • 你需要通过 settings 页面快速切换 Firecrawl 和原有 DeepSeek route。
  • 你接受 DSH 插件运行方式,并会先检查插件源码和许可证。

它不是一个新的模型工具,而是把 DSH 已有 web_search 的后端搜索来源切到 Firecrawl。

结尾

dsh-web-search-firecrawl 的价值在于:它不改变 DSH 的 web_search 接口体验,而是把底层搜索 provider 切到 Firecrawl,并允许通过 settings 页面在线切换。

目录页链接未在当前资料中确认。可直接查看 GitHub 仓库:

https://github.com/elves-ai/dsh-web-search-firecrawl
羽毛球分组比赛记分
小程序二维码

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

小夜