在 DeepSeek Harness(DSH)中开发智能体时,联网能力往往受限于单一搜索提供商的稳定性或配额。web_search 工具若遇到上游服务不可用或密钥失效,通常会导致调用失败。本文介绍 chendefine/dsh-web-search-aggregation,它将 AnySearch、TinyFish、Tavily 等多个搜索提供商整合为单一入口,通过优先队列和有序回退机制提升可用性。
核心功能¶
- 优先队列与有序回退:插件将多个搜索提供商按顺序排入队列。发起搜索时,请求从队列顶部向下尝试,第一个成功返回结果的提供商胜出;若失败,则自动回退至下一个提供商。
- 多密钥池轮换:每个提供商支持配置多个 API 密钥(用逗号分隔)。插件会自动轮换使用这些密钥,以分散负载和配额压力。
- 预算感知与透明失败:每个搜索尝试都有独立的超时截止时间(默认 10 秒),避免上游服务挂起占用全局预算。当所有尝试均失败时,错误信息会报告每个提供商的失败详情,便于排查。
- 密钥卫生与实时配置:插件不会在日志中记录密钥的具体内容,仅引用引用标签。所有队列顺序、密钥、端点和超时设置均可通过设置卡片实时编辑,无需重启服务。
安装与启用¶
环境要求:Node.js ≥ 22.19。
通过 npm 安装:
dsh plugin --profile web add dsh-web-search-aggregation
通过 GitHub 安装:
dsh plugin --profile web add github:chendefine/dsh-web-search-aggregation
或者通过 DSH 界面安装:设置 → DSH插件市场。
注意:安装后必须重启 dsh web 进程才能加载插件。
配置说明¶
配置入口:设置 → 插件 → 插件配置 → 聚合网页搜索。
在配置卡片中,可以调整以下内容:
- Providers(优先队列):包含 AnySearch、TinyFish、Tavily、Brave、Exa、Firecrawl、Jina、SerpApi、Serper 等条目。每个条目可启用/禁用,或覆盖默认端点。顺序决定了请求的尝试顺序。
- Attempt Timeout Ms(超时设置):单次尝试的截止时间(毫秒),范围 1-60000,默认为 10000。
注意事项¶
- AnySearch 支持匿名访问,无需配置密钥即可尝试。
- Tavily、TinyFish、Brave、Exa、Firecrawl、Jina、SerpApi、Serper 等提供商需要配置对应的 API 密钥。
- 卸载命令:
dsh plugin --profile web remove dsh-web-search-aggregation
该插件通过聚合多个上游服务,解决了单一提供商不可用时的中断问题,适合需要高可用联网能力的 DSH 智能体场景。