dsh-plugin-web-search-tavily:为 DSH 增加 Tavily 搜索后端

前言

在 DeepSeek Harness(dsh)的智能体开发里,一个常见需求是:希望内置的 web_search 工具由 Tavily 提供服务,但不希望插件改动模型可见的 tool schema。coderdailyone/dsh-plugin-web-search-tavily 就是面向这个需求的一个 DSH 插件 bundle。

它把 Tavily 作为一个 WebSearchProvider 注册到 ctx.web 这个能力接缝中,让 dsh 已带的 web_search 工具可以走 Tavily 后端。插件以 dsh bundle 形式发布,安装到某个 profile 后会自动插入对应的 plugin row。

这是什么

dsh-plugin-web-search-tavily 是一个 Tavily search provider bundle,用于 DeepSeek Harness(dsh)。

它的主要作用是:

  • 注册一个 WebSearchProviderctx.web capability seam。
  • 让 dsh 自带的 web_search 工具由 Tavily 提供服务。
  • 不改动 model-facing schema。
  • 作为 dsh bundle 发布;安装到 profile 后自动插入 plugin row。

仓库路径为 coderdailyone/dsh-plugin-web-search-tavily,许可证为 MIT,package.json 版本为 0.1.2

核心能力

下面介绍这个插件已核实的几项能力。

注册 WebSearchProvider

插件会向 ctx.web 注册一个 WebSearchProvider。也就是说,它进入的是 dsh 的能力接缝层,而不是直接替换模型看到的工具定义。

插件使用 Tavily 服务 dsh 已带的 web_search 工具,并且不会触碰 model-facing schema。对于使用者来说,工具层面对模型的接口保持不变,变化的是底层搜索服务提供方。

支持 Tavily 搜索相关配置

插件支持以下配置项:

  • apiKey
  • baseURL
  • searchDepth
  • topic
  • includeAnswer
  • numResults

其中 apiKey 为空时,provider 会处于“已注册但不可用”的状态。

available 检查不访问网络

available() 是一个廉价的本地检查,不会访问网络。

错误与取消行为

  • 取消会表现为 WebError code:WEB_ABORTED
  • 其他失败会表现为 WEB_PROVIDER_ERROR

版本与环境

插件当前已核实的环境与依赖信息如下。

{
  "version": "0.1.2",
  "license": "MIT",
  "engines": {
    "node": "^22.19.0 || >=24.0.0"
  },
  "peerDependencies": {
    "@deepseek-ai/cordis": "^4.0.1",
    "@deepseek-ai/dsh-web": "0.0.1-rc.1",
    "@deepseek-ai/schemastery": "^3.18.1"
  }
}

需要注意的是:DSH 目前处于 developer preview;这个包将 @deepseek-ai/dsh-web 固定在 0.0.1-rc.1

安装与启用

下面按顺序介绍安装和启用步骤。

1、安装到 profile

使用下面命令把插件安装到 web profile:

dsh plugin --profile web add dsh-plugin-web-search-tavily

由于它是 dsh bundle,安装到 profile 后会自动插入 plugin row。

2、提供 Tavily API Key

可以通过环境变量提供 API key,例如:

TAVILY_API_KEY

文档示例提到可以把它放在:

$DSH_HOME/.env

也可以通过 plugin config 提供。

如果 apiKey 为空,provider 会处于“已注册但不可用”的状态。

3、多个搜索 provider 时固定选择

如果你的组合中不止一个搜索 provider 可用,可以固定选择 Tavily:

$DSH_WEB_SEARCH_PROVIDER=tavily

也可以通过 patch 当前 profile 的 cordis.patch.yml,修改 web row 的 searchProvider

如果 Tavily 是唯一可用的 provider,选择是自动的。

4、先验证配置,再启动

先做配置检查:

dsh --profile web --dump-config

再启动:

dsh --profile web

典型用法

下面是根据已核实示例整理的最小使用流程。

先安装:

dsh plugin --profile web add dsh-plugin-web-search-tavily

然后准备 TAVILY_API_KEY。可以放在环境变量里,也可以放在 $DSH_HOME/.env 中。

如果存在多个搜索 provider,固定选择:

$DSH_WEB_SEARCH_PROVIDER=tavily

最后检查配置并启动:

dsh --profile web --dump-config
dsh --profile web

配置示例

可以通过 patch 当前 profile 的 cordis.patch.ymlweb-search-tavily row 来覆盖配置字段。

需要注意:patch 会替换整个 config value,所以如果保留某些字段,需要重新写出这些字段。

例如:

- id: web-search-tavily
  config:
    searchDepth: advanced
    includeAnswer: false

这个示例只覆盖 searchDepthincludeAnswer。如果你还需要保留其他配置项,需要在这个 patch 中重新列出。

适用场景与注意

这个插件适合这类场景:

  • 你在使用 DSH 构建智能体。
  • 你希望 web_search 的底层搜索服务使用 Tavily。
  • 你不想让插件改动 model-facing schema。
  • 你希望通过 profile 方式管理不同工具组合。

使用前需要注意:

  • 插件会以当前 dsh 进程权限运行,安装前应检查源码与许可证。
  • 许可证为 MIT。
  • 它属于 DSH 插件生态,不是官方应用商店。
  • DSH 目前处于 developer preview。
  • 本包将 @deepseek-ai/dsh-web 固定在 0.0.1-rc.1
  • include_domainsexclude_domainsdays 未暴露。
  • 没有 retry policy;一次临时 Tavily 失败会表现为一次 WEB_PROVIDER_ERROR

结尾

dsh-plugin-web-search-tavily 的定位比较具体:它不改 dsh 的 web_search 模型接口,而是把后端切到 Tavily,并通过 ctx.web 这个能力接缝注册 WebSearchProvider

如果你需要在 DSH profile 中启用 Tavily 搜索,可以先按上面的步骤安装、配置 API key,并用 --dump-config 检查最终配置。

GitHub 仓库:

https://github.com/coderdailyone/dsh-plugin-web-search-tavily

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜