nitrazepam01/dsh-web-search-tavily
用于DeepSeek Harness(dsh)的Tavily支持的网页搜索提供商捆绑包,支持热切换后端(Tavily / DeepSeek搜索)
Project Overview项目介绍
dsh-web-search-tavily is a Tavily-backed search provider bundle for DeepSeek Harness. It calls the Tavily /search endpoint and normalizes results into { url, title, snippet, publishedAt }, letting the model quote excerpts directly. The bundle's core capability is a hot-switchable delegating provider (search-switch) that routes the web row between Tavily and the shipped DeepSeek official provider via the web-search.backend setting, applying on save without restart or loader-row reload. Configure Tavily credentials through the standard credentials domain; the default maxResults is 5.
dsh-web-search-tavily 是 DeepSeek Harness 的 Tavily 搜索插件包,封装 Tavily POST /search 接口,将结果归一化为 { url, title, snippet, publishedAt },模型可直接引用摘要文本。其核心能力是内置一个 search-switch 委托后端,通过 web-search.backend 在 Tavily 与 DeepSeek 官方搜索之间热切换,保存设置即可立即生效,无需重启或重新加载 loader 行。需要为 dsh-web 配置文件存储 Tavily 凭据;底层默认 maxResults=5。
请帮我了解并安装插件:【dsh-web-search-tavily】【https://github.com/nitrazepam01/dsh-web-search-tavily】
Send this message to DSH in your current session. CLI install commands may not be accurate across systems — DSH will figure it out for you.把上面这条消息直接发给当前会话里的 DSH,让它帮你了解并安装。安装命令不一定准确,发给 DSH 更稳。
Or use CLI install (for developers)或使用命令行安装(适合开发者)
CLI Install命令行安装
dsh plugin --profile web add dsh-web-search-tavily
把 nitrazepam01/dsh-web-search-tavily 加入你的 DSH 配置(web profile)即可启用。
READMEREADME
dsh-web-search-tavily
A Tavily-backed search provider bundle for DeepSeek Harness (dsh). It registers a Tavily backend for the ctx.web web-search seam and ships a hot-switchable backend selector (Tavily / DeepSeek search).
Features
- Tavily provider — calls
POST /searchand normalizes results to{ url, title, snippet, publishedAt }. Tavily returns content excerpts, so the model can quote snippets directly. - Hot backend switcher — a delegating provider (
search-switch) sits behind thewebrow and resolves the active backend from theweb-searchsettings section on every search. Saving the section takes effect immediately: no restart, no loader-row reload. - Full
WebErrortaxonomy (WEB_PROVIDER_ERROR/WEB_PROVIDER_CREDENTIAL_MISSING/WEB_ABORTED). - Credential resolution chain: literal
apiKey→credentialsservice → launch environment. - Settings sections:
web-search-tavily—apiKey/apiKeyEnv/baseURL/maxResultsweb-search—backendselection (tavily|deepseek-official)
Install
# From git (recommended — plain JS, no build step, no allowBuilds required)
dsh plugin --profile web add github:nitrazepam01/dsh-web-search-tavily
# From npm
dsh plugin --profile web add dsh-web-search-tavily
# From a local checkout
dsh plugin --profile web add ./dsh-web-search-tavily
Restart dsh web after installing (bundle layers are frozen at boot). To uninstall: dsh plugin --profile web remove dsh-web-search-tavily.
Configuration
1. Credential
Store your Tavily key in $DSH_HOME/.credentials.yaml:
TAVILY_API_KEY: tvly-your-key
2. Backend selection
The web row's searchProvider is set to search-switch (the delegating provider) by this bundle. The active backend lives in the web-search section of $DSH_HOME/settings.yaml and hot-reloads on save:
web-search:
backend: tavily # tavily | deepseek-official
tavily— this plugin's Tavily provider (results carry content excerpts)deepseek-official— delegates to the shippedweb-search-deepseekprovider (DeepSeek Anthropic-compatible Messages endpoint; no excerpts)
3. Tavily options (web-search-tavily section)
| Field | Default | Description |
|---|---|---|
apiKey |
none | Literal key (secret, stored via the credentials domain) |
apiKeyEnv |
TAVILY_API_KEY |
Credential reference name |
baseURL |
https://api.tavily.com |
Tavily REST endpoint |
maxResults |
5 |
Max results per search |
How it works
web_search tool → ctx.web (searchProvider: search-switch)
→ switcher delegates by web-search.backend:
tavily → this plugin's provider → POST https://api.tavily.com/search
deepseek-official → shipped provider → Anthropic Messages + web_search_20250305
Why a delegating provider instead of editing the web row directly? Changing the web row's config restarts the dsh-web plugin and disposes every registered provider (Cordis Fiber.update → restart semantics). The switcher keeps the selection in the settings layer only, sidestepping that hazard entirely.
Development
# Install a local checkout into a profile
dsh plugin --profile web add ./dsh-web-search-tavily
# Inspect the composed config without booting
dsh --profile web --dump-config
dsh web
anysearch-team/anysearch-dsh
DDDMUC/dsh-free-search
wxkingstar/SpecFusion
A3Boy/dsh-web-tools
cyijun/dsh-surfing-plugin
gxpppp/dsh-search-mcp