DeepSeek Harness(DSH)采用“一切皆插件”的架构。在构建智能体或进行需要实时信息的任务时,一个稳定且可配置的网络搜索后端是基础。dsh-websearch-stack 旨在解决多源搜索和配置管理的问题,它为 DSH 注册了一个搜索提供者,并在其后端之上构建了一个有序的降级链。
是什么¶
这是一个为 DeepSeek Harness (dsh) 提供多提供商网络搜索的插件。该插件在 ctx.web 接口上注册一个搜索提供者,运行你启用的后端组成的有序降级链。
- 维护者: orfeomorello
- 许可证: MIT
- 当前版本: v0.1.0 (MVP)
核心功能¶
多后端支持
插件实现了六个搜索后端:
* Tavily: 支持无密钥模式。
* Parallel MCP: 无需凭据。
* SearXNG: 支持自托管。
* Brave, TinyFish, Exa: 需要对应的 API 密钥或本地实例。
有序降级链
当请求发生可恢复错误(如网络超时、速率限制、响应异常)时,系统会自动切换到链中的下一个后端;如果发生不可恢复错误,则中止并报错;如果所有后端均失败,错误信息会列出每一次尝试的详情。
动态配置
* 密钥无需重启: 四个需要密钥的后端(Tavily, Brave, TinyFish, Exa)可以通过 Web 客户端的 Plugins 页面配置,写入宿主的凭据存储中,并在下一次请求时生效。
* 启动时配置: 链的顺序、SearXNG URL、结果上限、超时时间和缓存 TTL 等字段是易失字段,需要通过配置层设置。
安装与启用¶
安装命令如下:
dsh plugin --profile web add github:orfeomorello/dsh-websearch-stack
安装完成后,重启对应的 profile。默认的降级链 ['tavily', 'parallel-mcp'] 无需任何配置即可工作:Tavily 运行在无密钥模式下,Parallel MCP 不需要凭据。重启 profile 后,直接询问需要当前信息的任务,web_search 将通过这个链返回结果。
配置¶
配置分为两个层面,因为 Web 客户端的 Plugins 页面目前只能写入凭据。
1. 动态密钥配置(无需重启)¶
在 Web 客户端的 Plugins 页面找到该插件,通过设置卡片输入 API 密钥(如 TAVILY_API_KEY)。这些密钥会通过宿主的凭据存储解析,无需重启 profile 即可在下一次请求中生效。
2. 启动时配置(需重启)¶
在 dsh-client-ui-plugin-manager 0.2.0-rc.2 版本中,Web 客户端的 Plugins 页面渲染 plugins.bundle.config 时不包含该 Bundle 自身字段的配置表单。因此,链的顺序、SearXNG URL 等字段需要通过配置层设置。
通常通过 profile 的 cordis.patch.yml 或 --patch 覆盖层来配置。以下是一个启用 SearXNG 的示例:
# ~/.dsh/profiles/web/cordis.patch.yml
- id: websearch-stack
name: dsh-websearch-stack
config:
enabled_providers: [searxng, tavily]
searxng_url: http://localhost:8080
default_max_results: 5
配置项说明:
* enabled_providers: 降级链顺序,默认 ['tavily', 'parallel-mcp']。支持 tavily, parallel-mcp, searxng, brave, tinyfish, exa。
* searxng_url: SearXNG 实例的基础 URL(如 http://localhost:8080)。
* default_max_results: 默认每查询返回的结果数量(1–20),默认为 5。
* default_timeout_ms: 后端请求超时时间(毫秒),默认为 10000。
* cache_ttl_seconds: 缓存相同查询的过期时间(秒),默认为 60。
SearXNG 自托管设置:
如果你使用自托管 SearXNG,需要在 core-config/settings.yml 中启用 JSON 格式(默认只有 HTML):
search:
formats:
- html
- json
适用场景与注意¶
- 适用场景:需要从多个搜索引擎获取信息,或希望在不同后端间实现容错的场景。
- 版本限制:Web 客户端的配置表单目前仅支持写入凭据,复杂的启动时配置仍需依赖 patch 文件。
- 验证状态:插件目前处于 MVP 阶段。已验证可用的后端包括 Tavily (无密钥) 和 Parallel MCP。Brave, TinyFish, Exa 需要相应的 API 密钥或本地实例,但目前尚未验证。
结语¶
dsh-websearch-stack 提供了在 DSH 中进行多源网络搜索的基础设施,通过有序的降级链和灵活的配置方式,降低了构建联网智能体的门槛。
- GitHub: https://github.com/orfeomorello/dsh-websearch-stack
- 目录页: https://www.skillhub.cn/plugins/orfeomorello/dsh-websearch-stack