Preface¶
In DeepSeek Harness (dsh), the web-search capability is registered to the ctx.web seam via a provider. If you wish to switch between Tavily and DeepSeek search, directly modifying the web line triggers lifecycle side effects: changing the web line configuration restarts the dsh-web plugin and releases the registered providers.
dsh-web-search-tavily is a Tavily-backed search provider bundle maintained by nitrazepam01. It registers a Tavily backend for dsh and provides a hot-swappable backend selector. Below is an introduction to the problems it solves, installation methods, configuration, and precautions.
What is it¶
dsh-web-search-tavily is a plugin bundle for DeepSeek Harness. Its core goals are:
- Register a Tavily backend for the
ctx.webweb-search seam; - Place a delegating provider named
search-switchbehind thewebline; - Keep backend selection in the settings layer to support Tavily / DeepSeek search hot-switching.
The plugin is licensed under MIT.
Core Features¶
Tavily provider¶
The Tavily provider calls POST /search and normalizes the results to:
{ url, title, snippet, publishedAt }
When the backend is selected as tavily, the results carry content excerpts. When the backend is selected as deepseek-official, it delegates to the web-search-deepseek provider provided with the bundle, and results do not include excerpts.
Hot-switch backend selector¶
search-switch is a delegating provider located after the web line. It parses the current backend from the web-search settings section on every search.
Takes effect immediately after saving the web-search section:
- No restart;
- No loader-row reload.
The reason for using a delegating provider instead of directly modifying the web line is that modifying the web line configuration restarts the dsh-web plugin and releases all registered providers. search-switch keeps the selection in the settings layer to avoid this side effect.
Credential parsing chain¶
The credential parsing chain is:
literal apiKey -> credentials service -> launch environment
Where apiKey is a literal key, belonging to a secret, stored via the credentials domain; the default value for apiKeyEnv is TAVILY_API_KEY.
Error types¶
The plugin supports the full WebError taxonomy, including:
WEB_PROVIDER_ERRORWEB_PROVIDER_CREDENTIAL_MISSINGWEB_ABORTED
Installation and Enabling¶
Install from git:
dsh plugin --profile web add github:nitrazepam01/dsh-web-search-tavily
Install by name:
dsh plugin --profile web add dsh-web-search-tavily
Install from local checkout:
dsh plugin --profile web add ./dsh-web-search-tavily
After installation, you need to restart dsh web because bundle layers are frozen at boot.
Uninstall:
dsh plugin --profile web remove dsh-web-search-tavily
Documentation indicates this plugin is plain JS, no build step, no allowBuilds requirement.
Typical Usage¶
1. Configure credentials¶
Store the Tavily key in $DSH_HOME/.credentials.yaml:
TAVILY_API_KEY: tvly-your-key
This step provides the TAVILY_API_KEY available to the credential service for the credential parsing chain.
2. Select backend¶
Set the backend in the web-search section of $DSH_HOME/settings.yaml:
web-search:
backend: tavily # tavily | deepseek-official
Optional values:
tavily: Uses the Tavily provider from this plugin, results include content excerpts;deepseek-official: Delegates to the shippedweb-search-deepseekprovider, results do not include excerpts.
Takes effect immediately after saving the section, no restart required, and no loader-row reload.
3. Tavily options¶
Tavily options are located in the web-search-tavily section, containing the following configuration items:
web-search-tavily:
apiKey:
apiKeyEnv: TAVILY_API_KEY
baseURL:
maxResults:
Field descriptions:
apiKey: literal key, belongs to a secret, stored via the credentials domain;apiKeyEnv: credential reference name, default value isTAVILY_API_KEY;baseURL: Tavily REST endpoint;maxResults: maximum number of results per search.
4. Check combined configuration¶
Start the service, and only view the combined configuration:
dsh --profile web --dump-config
This step is used to confirm that sections like web-search and web-search-tavily enter the combined configuration as expected.
Use Cases and Precautions¶
Suitable for the following situations:
- Using
dshand wishing to add Tavily search toctx.web; - Wishing to switch backends between
tavilyanddeepseek-official; - Wishing to switch backends without restarting or triggering a loader-row reload;
- Wishing credentials to be parsed via
apiKey, credential service, or launch environment.
Precautions:
- Must restart
dsh webafter installation, because bundle layers are frozen at boot; apiKeyis a secret and should not be committed to a repository at will;- Changing the
webline configuration restarts thedsh-webplugin and releases registered providers; - Do not interpret the plugin directory as the DeepSeek / Huanquan official app store; this article only discusses the
dshplugin itself; - The plugin runs with the permissions of the current
dshprocess; source code and license should be checked before installation.
Links¶
GitHub repository:
https://github.com/nitrazepam01/dsh-web-search-tavily
The directory page URL was not provided in verified materials, so it is not included in this article.