前言¶
在 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.webcapability 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 的能力接縫層,而不是直接替換模型看到的工具定義。
服務已有 web_search 工具¶
插件使用 Tavily 服務 dsh 已帶的 web_search 工具,並且不會觸碰 model-facing schema。對於使用者來說,工具層面對模型的接口保持不變,變化的是底層搜索服務提供方。
支持 Tavily 搜索相關配置¶
插件支持以下配置項:
apiKeybaseURLsearchDepthtopicincludeAnswernumResults
其中 apiKey 爲空時,provider 會處於“已註冊但不可用”的狀態。
available 檢查不訪問網絡¶
available() 是一個廉價的本地檢查,不會訪問網絡。
錯誤與取消行爲¶
- 取消會表現爲
WebErrorcode: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