前言¶
DeepSeek Harness(DSH)采用插件化架构。原生的 web_search 工具在处理复杂查询或特定需求时,功能相对固定。dsh-web-search 插件旨在替换这一原生后端,引入一个可配置的多提供商回退链,以增强搜索的灵活性和可靠性。
插件定位¶
此插件由 ForeverYoungPp 维护,是一个为 DSH 提供多提供商网络搜索能力的插件。它将 DSH 原生的 web_search 工具重定向至一个由 8 个搜索服务组成的回退链中,支持按需配置和顺序尝试。
安装与启用¶
安装前请确保环境满足以下依赖要求:
- Node.js 版本:
^22.19或>=24 - DeepSeek Harness 版本:
0.2.0-rc.2
使用以下命令安装插件(该命令会激活 --profile web 配置文件):
dsh plugin --profile web add @ian_p/dsh-web-search
安装完成后,需要重启 DSH 进程以加载新插件。
核心功能¶
插件集成了 8 个搜索提供商,通过回退链机制工作,具备以下特性:
- 多提供商支持:支持 Tavily、Brave、Exa、Firecrawl、Jina、Kagi、SearXNG 和 DuckDuckGo。
- 原生工具替换:直接替换 DSH 原生的
web_search工具,无需修改调用代码。 - 失败大声机制:当回退链中的所有提供商均失败时,会报告明确的错误,而非静默降级。
- 宿主原生 UI:提供本地化的设置页面,使用宿主的设计令牌,支持拖拽排序。
- 可审计日志:日志会记录每一个被跳过或失败的提供商,以及最终成功的服务。
配置与使用¶
插件的配置和凭证管理通过 DSH 的凭证记录进行,不依赖环境变量。
配置提供商¶
在设置页面中,你可以为 API 密钥类提供商(如 Tavily、Brave、Exa、Firecrawl、Jina、Kagi)添加密钥,或为 SearXNG 配置实例端点。DuckDuckGo 无需密钥,作为最后的兜底选项。
调整回退顺序¶
通过设置页面的拖拽功能,可以自定义提供商的尝试顺序。配置会保存到 dsh-web-search/config 凭证记录中。
搜索行为¶
搜索流程是顺序进行的,而非并行竞速:
1. 检查当前提供商的可用性(本地检查,无网络调用)。
2. 发起搜索请求(默认超时 60 秒)。
3. 如果成功(返回非空结果),立即返回结果并停止尝试后续提供商。
4. 如果失败(HTTP 错误、无效 JSON 等),记录错误并尝试下一个提供商。
注意:插件不实现竞速、结果合并、重试或缓存机制。
注意事项¶
- 权限与安全:插件作为 DSH 进程的一部分运行,请确保从可信来源安装并检查源码。
- 许可证:本项目采用 MIT 许可证开源。
- 特定提供商细节:
- Tavily:配置中需设置
chunks_per_source: 1以获取页面片段而非完整页面内容。 - SearXNG:需要配置实例端点,且其时间单位映射可能需要调整(如
week映射为month)。 - DuckDuckGo:不使用密钥,但会解析 HTML 前端,可能遇到机器人验证页面导致无结果。
- Tavily:配置中需设置
插件目录:SkillHub
GitHub 仓库:ForeverYoungPp/dsh-web-search