前言¶
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 注册一个 WebSearchProvider,id 为 firecrawl,但不注册 model-facing tool。
仓库 owner 为 elves-ai,许可证为 MIT。GitHub 仓库是:
https://github.com/elves-ai/dsh-web-search-firecrawl
核心能力¶
这个插件主要做以下几件事:
- 为 DSH 的
ctx.webseam 注册一个WebSearchProvider,id是firecrawl。 - 调用 Firecrawl 的
POST /v1/search。 - 把 Firecrawl 返回的
data[]映射成 seam 使用的 normalizedWebSearchResult。 - 支持从 DSH Settings 的 Firecrawl 页面配置 API key。
- 当 settings 页面里的 key 为空时,回退到环境变量
$FIRECRAWL_API_KEY。 - 支持通过
useFirecrawl在不重启的情况下切换 provider。
可配置字段包括:
useFirecrawl
apiKey
baseURL
limit
maxSnippetChars
其中 apiKey 会被写为 secret,settings 页面不会把保存的 key 回显出来。
安装前确认¶
资料中要求以下两项:
- 一个 DeepSeek Harness 安装,且处于官方包的
0.1.0-rc.6线。 - 一个 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:
- 在 API Key 字段粘贴
fc-...形式的 key。 - 保存。
保存后,API key 会按 secret 处理。页面只表示是否已配置 key,不会回显保存的明文。
如果 settings 页面里的 key 留空,provider 会尝试回退到环境变量:
export FIRECRAWL_API_KEY=fc-...
dsh --profile web
如果 settings key 和环境变量都不存在,provider 不可用。
切换 provider¶
useFirecrawl 用于在 Firecrawl 和原有 DeepSeek web search 之间切换。
useFirecrawl为true时,使用 Firecrawl。useFirecrawl为false时,切回原有 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 会在访问
Locationtarget 之前被拒绝。
适用场景¶
这个插件适合以下情况:
- 你已经有 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