前言¶
DeepSeek Harness(DSH)里,智能体若要查资料、打开网页,通常依赖 ctx.web 上的搜索与抓取 provider,再由预设里的 tool-web 暴露 web_search、web_fetch。默认组合未必满足「专用搜索 API + 结构化 Markdown 抓取」或「多 Key 轮询、429/额度冷却」这类运维需求。@skillre/dsh-plugin-tavily-firecrawl 向 @deepseek-ai/dsh-web 注册 Tavily 搜索与 Firecrawl 抓取两个 provider,并在 bundle 里把 Cordis 的 searchProvider / fetchProvider 分别钉到 tavily / firecrawl,同时禁用自带的 web-search-deepseek,避免两个搜索 provider 争抢。包状态为 experimental,维护者为 skillre,分类属于联网工具。
这是什么¶
一句话:把 DSH 的联网能力换成 Tavily 搜索 + Firecrawl 抓取,并支持多 API Key 轮询;一个 bundle 包含 Host 侧两个 ctx.web provider 与一张浏览器配置页,Key 可在 设置 → 插件 填写。
本包不注册工具本身:web_search / web_fetch 由 agent 预设里的 tool-web(fetch: true)决定,本包只提供 provider。不 fork 官方预设、不写入 $DSH_HOME/.agent-presets/,不修改 DSH 本体;凭据由 DSH 凭据服务写入,插件不直接写文件系统。
对接接口(资料原文):
- 搜索:
POST https://api.tavily.com/search→web_search - 抓取:
POST https://api.firecrawl.dev/v1/scrape(返回 markdown)→web_fetch
npm 包名:@skillre/dsh-plugin-tavily-firecrawl(当前版本 0.1.0)。Cordis 行 id:skillre-tavily-firecrawl。engines.dsh 声明范围外,资料中实际挂载验证过的 DSH 版本为 0.1.7-rc.2(2026-09-28)与 0.2.0-rc.2(2026-09-30)。
核心功能¶
Provider 与 bundle 行为¶
随包 cordis.patch.yml(经 package.json#dsh.bundle.patch 发布)会:
- 插入插件行
skillre-tavily-firecrawl,并把search.searchDepth显式设为basic; - 将
web行的searchProvider/fetchProvider设为tavily/firecrawl; - 禁用
web-search-deepseek。web-fetch-http仍注册,但fetchProvider已钉住,不会被选中。
多 Key 轮询与凭据¶
搜索侧、抓取侧各自维护 Key 池。一次调用可在配置的上限内轮换 Key;遇到 429 或额度类错误会进入可配置的冷却(含指数退避上限)。凭据解析顺序(每侧独立,资料原文):
- 插件行
config中的search.apiKeys/fetch.apiKeys(显式最高) - 单 Key 写法
search.apiKey/fetch.apiKey(仍兼容) - 凭据引用
TAVILY_API_KEYS/FIRECRAWL_API_KEYS(配置页保存即写入此类引用) - 单 Key 引用
TAVILY_API_KEY/FIRECRAWL_API_KEY
多 Key 可用逗号、分号或空白(含换行)分隔;配置页保存后会规范为一行逗号分隔列表。配置页保存后无需重启,下一次搜索/抓取即生效;「清除已保存的密钥」只删存储值,环境变量里若仍有 Key 会继续生效。
浏览器侧 UI¶
仅注册 设置 → 插件 → 本 bundle 一张配置页(platform: web,槽位 plugins.bundle.config),用于填写或清除 Tavily / Firecrawl API Key。无聊天内装饰、无额外浏览器代码。
可配置项(节选)¶
未在 patch 里写的键沿用默认值;拼写错误或 schema 不允许的键会在加载时抛错,整行不会挂载。下表为资料中的默认值摘要:
| 键 | 默认值 | 说明 |
|---|---|---|
search.baseURL |
https://api.tavily.com |
请求路径追加 /search |
search.searchDepth |
basic |
advanced 为 2 credits |
search.includeAnswer |
true |
Tavily 摘要进入结果的 content |
search.timeoutMs |
30000 |
每次尝试 |
fetch.baseURL |
https://api.firecrawl.dev |
追加 /v1/scrape |
fetch.maxBodyChars |
200000 |
超出截断并标记 truncated |
fetch.onlyMainContent |
true |
只取正文 |
searchEnabled / fetchEnabled |
true |
false 则不注册该侧 provider |
更完整的 YAML 示例与冷却、maxAttempts 等字段见 GitHub README「配置」一节。
安装与启用¶
交付与兼容性确认后,由用户在 DSH Desktop Client 或 Web UI 的 Plugins/插件管理 中选择来源、安装/更新并启用;不应由 agent 在用户 profile 代装。
发布且目标版本兼容、管理器确认可安装时,可输入 npm 包名:
@skillre/dsh-plugin-tavily-firecrawl@<version>
GitHub 仓库是本包支持的安装来源:git 树内带有构建产物 lib/(含 lib/client.js),从 GitHub 安装不执行构建脚本。未发布 npm 时,若管理器支持,也可提供已构建、验证可用的本地包目录或 .tgz 绝对路径。安装解析到的是某个提交 SHA;要新功能需对应提交已在 GitHub 上。
下列命令仅用于开发者自有、可丢弃的非 Desktop profile 的内环测试(须打包 tarball,不要用 dsh plugin ... add . 链源码目录):
npm install
npm run check
npm pack
dsh plugin --profile <dev-profile> add ./skillre-dsh-plugin-tavily-firecrawl-<version>.tgz
dsh --profile <dev-profile> --dump-config
测试结束须按 README 清理:停止进程,卸载本次 bundle/依赖或隔离 profile,并核验无残留。用户真实 Desktop/Web profile 的试验须事先同意,且只撤销测试新增状态。
典型用法¶
推荐:插件配置页填 Key¶
- 在插件管理界面安装并启用本 bundle。
- 打开 设置 → 插件,进入本 bundle 配置页。
- 在 Tavily、Firecrawl 输入框粘贴一个或多个 Key(逗号、分号或换行分隔),点「保存」。
- 在已启用
tool-web的 agent 预设下,由模型调用web_search、web_fetch;Host 会走 Tavily / Firecrawl provider。
Key 写入 DSH 凭据存储,不出现在 dsh --dump-config 的 profile 配置里。
备选:环境变量(需重启对应 DSH 进程)¶
进程启动时读取一次;改环境变量后需重启。下列 dsh web 仅为独立 Web UI 启动示例,Desktop Client 须核实其实际环境变量入口:
# 任选:进程环境、<调用目录>/.env、$DSH_HOME/.env
TAVILY_API_KEY=tvly-xxxx
FIRECRAWL_API_KEY=fc-xxxx
dsh web
更新:在同一 Plugins/插件管理 中选择经验证兼容的新版本。卸载与回滚见仓库 UNINSTALL.md。
适用场景与注意¶
适合谁:已在 DSH 中使用或计划使用 web_search / web_fetch,希望搜索走 Tavily、页面抓取走 Firecrawl(Markdown、正文裁剪),并需要用多 Key 分担限流与额度的开发者或团队。
权限与安全:插件以当前 DSH 进程权限运行;安装前应阅读源码与 MIT 许可证,并理解会向 Tavily、Firecrawl 官方 API 发送请求与 Key。本包不提供 install.sh,也不使用 --patch 叠加层。
非目标(资料原文):不提供会话级 UI;不覆盖官方预设;不修改 DSH 本体。
元数据:插件卡片标题为 Tavily Search + Firecrawl Fetch;随包 locale 目前仅 locale/en.json,卡片标题/描述在界面可能仍为英文。GitHub 仓库星标数为 0(目录页线索,以站点为准)。
结尾¶
@skillre/dsh-plugin-tavily-firecrawl 把 DSH ctx.web 的搜索与抓取后端替换为 Tavily + Firecrawl,并用 bundle patch 固定 provider 选择;凭据可在设置页维护且保存后即时生效。进一步了解与 issue 见 GitHub;社区目录页:
- 目录:https://www.skillhub.cn/plugins/skillre/dsh-plugin-tavily-firecrawl
- 仓库:https://github.com/skillre/dsh-plugin-tavily-firecrawl