前言¶
在 DeepSeek Harness(dsh)中,web-search 能力通過 provider 註冊到 ctx.web 這個 seam。若希望在 Tavily 與 DeepSeek search 之間切換,直接修改 web 行會觸發生命週期上的副作用:改變 web 行配置會重啓 dsh-web 插件,並釋放已註冊的 provider。
dsh-web-search-tavily 是一個 Tavily-backed search provider bundle,由 nitrazepam01 維護,爲 dsh 註冊 Tavily backend,並提供一個可熱切換的 backend selector。下面介紹它解決的問題、安裝方式、配置方法和注意事項。
這是什麼¶
dsh-web-search-tavily 是一個用於 DeepSeek Harness 的插件包,核心目標是:
- 爲
ctx.webweb-search seam 註冊 Tavily backend; - 在
web行後方放置search-switch這個委託 provider; - 讓後端選擇保存在 settings 層,從而支持 Tavily / DeepSeek search 的熱切換。
該插件許可證爲 MIT。
核心功能¶
Tavily provider¶
Tavily provider 調用 POST /search,並將結果規範爲:
{ url, title, snippet, publishedAt }
當 backend 選擇爲 tavily 時,結果攜帶 content excerpts。當 backend 選擇爲 deepseek-official 時,會委託到隨包提供的 web-search-deepseek provider,結果不帶 excerpts。
熱切換 backend selector¶
search-switch 是一個 delegating provider,它位於 web 行之後,並在每次搜索時從 web-search settings section 解析當前 backend。
保存 web-search section 後即時生效:
- no restart;
- no loader-row reload。
之所以採用委託 provider,而不是直接改 web 行,是因爲修改 web 行配置會重啓 dsh-web 插件,並釋放所有已註冊 provider。search-switch 將選擇保留在 settings 層,避開這個副作用。
憑證解析鏈¶
憑證解析鏈爲:
literal apiKey -> credentials service -> launch environment
其中 apiKey 是 literal key,屬於 secret,通過 credentials domain 存儲;apiKeyEnv 的默認值是 TAVILY_API_KEY。
錯誤類型¶
插件支持完整的 WebError taxonomy,包括:
WEB_PROVIDER_ERRORWEB_PROVIDER_CREDENTIAL_MISSINGWEB_ABORTED
安裝與啓用¶
從 git 安裝:
dsh plugin --profile web add github:nitrazepam01/dsh-web-search-tavily
按名稱安裝:
dsh plugin --profile web add dsh-web-search-tavily
從本地 checkout 安裝:
dsh plugin --profile web add ./dsh-web-search-tavily
安裝完成後,需要重啓 dsh web,因爲 bundle layers are frozen at boot。
卸載:
dsh plugin --profile web remove dsh-web-search-tavily
資料說明該插件是 plain JS,無 build step,無 allowBuilds 要求。
典型用法¶
1. 配置憑證¶
將 Tavily key 存入 $DSH_HOME/.credentials.yaml:
TAVILY_API_KEY: tvly-your-key
這一步是爲 credential service 提供可用的 TAVILY_API_KEY,供憑證解析鏈使用。
2. 選擇 backend¶
在 $DSH_HOME/settings.yaml 的 web-search section 中設置 backend:
web-search:
backend: tavily # tavily | deepseek-official
可選值爲:
tavily:使用本插件的 Tavily provider,結果帶 content excerpts;deepseek-official:委託到 shippedweb-search-deepseekprovider,結果不帶 excerpts。
保存該 section 後即時生效,無需重啓,也無需 loader-row reload。
3. Tavily options¶
Tavily options 位於 web-search-tavily section,包含以下配置項:
web-search-tavily:
apiKey:
apiKeyEnv: TAVILY_API_KEY
baseURL:
maxResults:
字段說明:
apiKey:literal key,屬於 secret,通過 credentials domain 存儲;apiKeyEnv:credential reference name,默認值爲TAVILY_API_KEY;baseURL:Tavily REST endpoint;maxResults:每次搜索的最大結果數。
4. 檢查組合配置¶
不啓動服務,只查看組合後的配置:
dsh --profile web --dump-config
這一步用於確認 web-search、web-search-tavily 等 section 是否按預期進入組合配置。
適用場景與注意¶
適合以下情況:
- 使用
dsh,希望爲ctx.web增加 Tavily 搜索; - 希望在
tavily與deepseek-official之間切換 backend; - 希望切換 backend 時不重啓、不觸發 loader-row reload;
- 希望憑證通過
apiKey、credentials service 或 launch environment 解析。
注意事項:
- 安裝後必須重啓
dsh web,因爲 bundle layers are frozen at boot; apiKey是 secret,不應隨意提交到倉庫;- 改變
web行配置會重啓dsh-web插件,並釋放已註冊 provider; - 不要把插件目錄理解爲 DeepSeek / 幻方官方應用商店;本文只討論
dsh插件本身; - 插件以當前
dsh進程權限運行,安裝前應檢查源碼與許可證。
鏈接¶
GitHub 倉庫:
https://github.com/nitrazepam01/dsh-web-search-tavily
目錄頁 URL 未在已覈實資料中提供,本文不給出。