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)。

它的主要作用是:

  • 註冊一個 WebSearchProvider 到 ctx.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.yml 中 web-search-tavily row 來覆蓋配置字段。

需要注意:patch 會替換整個 config value,所以如果保留某些字段,需要重新寫出這些字段。

例如:

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

這個示例只覆蓋 searchDepth 和 includeAnswer。如果你還需要保留其他配置項,需要在這個 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_domains、exclude_domains、days 未暴露。
  • 沒有 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

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

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

小夜