DeepSeek Harness (DSH) injects web capabilities into the model through ctx.web. The deepseek-official search provider included with DSH consumes the model API’s billing quota. Tavily is an independent search API with its own quota system. The dsh-web-search-tavily plugin registers a Tavily backend with ctx.web, allowing the model to use Tavily for retrieval when calling the web_search tool.
Core Features¶
This plugin registers a tavily provider with the DSH web surface. The main capabilities include:
- Search depth and configuration: Supports
basicandadvancedsearch depth settings, and allows controlling the number of returned results and request timeout viamaxResultsandtimeoutMs. - API Key management: Supports resolving
TAVILY_API_KEYfrom an environment variable or a credentials file (~/.dsh/.credentials.yaml). It also supports providing a literal value directly in the configuration (the literal takes precedence over credential resolution). - Result normalization: Returns structured results
{url, title?, snippet?, publishedAt?}, supports URL deduplication, and remains consistent with other web providers in DSH. - Error handling and cancellation: Throws a standard
WebError(with codes such asWEB_PROVIDER_CREDENTIAL_MISSING,WEB_PROVIDER_ERROR, andWEB_ABORTED). Supports cancellation viaAbortSignal; the cancellation signal is merged with the plugin’s owntimeoutMs, enabling in-flight requests to be truly terminated.
Installation and Activation¶
Before installing, the following prerequisites must be met:
- DSH version >= 0.1.2-alpha.2
gitandpnpmare available onPATH- A web surface profile exists (the default name in DSH is
web)
Use the official installation command:
dsh plugin --profile web add github:my-dsh/dsh-web-search-tavily
Restart DSH after installation for the configuration to take effect.
Configuration¶
Credential Configuration¶
Provide TAVILY_API_KEY using one of the following methods:
- Environment variable:
export TAVILY_API_KEY=tvly-...
- Credentials file:
Edit~/.dsh/.credentials.yamland add the following underrefs:
TAVILY_API_KEY: tvly-...
Parameter Configuration¶
Override the default configuration through the user patch layer (~/.dsh/profiles/<name>/cordis.patch.yml):
- id: web-search-tavily
name: '@my-dsh/dsh-web-search-tavily'
config:
# Search depth: basic (1 credit) or advanced (2 credits)
searchDepth: advanced
# Maximum number of results returned per request (default 8)
maxResults: 5
# Request timeout in milliseconds (default 30000)
timeoutMs: 20000
# Literal API key (leave empty to use credential/environment variable resolution)
# apiKey: tvly-...
Use Cases¶
This plugin is suitable for scenarios where you need to separate “model billing” from “search service billing,” or where you need precise control using Tavily’s independent quota.
Ecosystem Background¶
DSH follows an “everything is a plugin” architecture. The community catalog has no official affiliation with DeepSeek or High-Flyer. This plugin is maintained by my-dsh and is released under the MIT License.