dsh-web-search-tavily:爲 DeepSeek Harness 增加 Tavily 搜索與後端切換

前言

在 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.web web-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_ERROR
  • WEB_PROVIDER_CREDENTIAL_MISSING
  • WEB_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:委託到 shipped web-search-deepseek provider,結果不帶 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 未在已覈實資料中提供,本文不給出。

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

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

小夜