Foreword¶
The web capabilities of DeepSeek Harness (hereinafter referred to as DSH) are exposed via the seam ctx.web. If you need to integrate web search into an agent workflow, you usually have to handle the backends, credentials, and settings of different search engines simultaneously, or even modify web.searchProvider.
dsh-web-search-plugin converges multiple search backends into a single plugin: it registers a WebSearchProvider with ctx.web, with the stable ID being dsh-web-search. After installation, you can switch engines in “Settings → Web Search” without having to change web.searchProvider.
What is this¶
Below is an introduction to its positioning, boundaries, and recommended usage methods.
Positioning¶
dsh-web-search-plugin is a unified web search plugin for the DeepSeek Harness web capability seam. It includes nine built-in backends: DeepSeek (official, default), Tavily, Brave Search, Serper, SerpApi, Exa, SearXNG, Scavio, and Firecrawl.
The plugin is maintained by X-C1811 under the MIT license.
Boundaries¶
- No built-in backends for TinyFish, Google CSE, SERPJET, or standalone DuckDuckGo.
- No custom session events written.
- Browser-side quota queries use read-only interfaces provided by the plugin and do not directly hit the upstream.
Core Features¶
Unified Provider¶
The plugin registers only one WebSearchProvider, with the stable ID:
dsh-web-search
At startup, you can select this ID via the environment variable:
DSH_WEB_SEARCH_PROVIDER=dsh-web-search
Switch Engines within Settings¶
After installation, switch engines in DSH’s:
Settings → Web Search
The top-level settings partition supports a two-column layout, unsaved drafts, and a save toast. The result count is a dropdown from 1 to 20.
Credentials and Redirects¶
Keyed providers in the settings card provide a link to the official API key; SearXNG and Tavily keyless do not render this link.
Configuration keys such as:
apiKey
deepseekApiKey
braveApiKey
…go through the credentials domain and are not echoed back.
Results and Errors¶
Results from each engine are normalized to the seam’s WebSearchResult and deduplicated by URL.
Errors are mapped to:
WEB_PROVIDER_ERROR
WEB_ABORTED
WEB_PROVIDER_CREDENTIAL_MISSING
Quota Display¶
Tavily keyed and Brave display quota progress bars in the settings card; DeepSeek official and Tavily keyless do not display them.
Tavily keyless is free, rate-limited, and requires no account. Tavily keyed requires:
TAVILY_API_KEY
Brave requires:
BRAVE_API_KEY
This is the Brave subscription token.
Brave has no usage/billing interface; billing credits can only be viewed in the Brave API Console.
Installation and Enablement¶
Requirements¶
- DeepSeek Harness
0.1.2-alpha.4(latest main) or later. pnpm, used to install the plugin into a profile viadsh plugin.
Install from npm¶
First, confirm the DSH profile is available, then execute:
dsh plugin --profile web add dsh-web-search-plugin
This package is a bundle. It sets up web.searchProvider = dsh-web-search via cordis.patch.yml and disables the built-in web-search-deepseek Host plugin to avoid duplicate provider registration and the old card.
When there is no bundle declaration, dsh plugin add only writes dependencies, and the plugin will not mount.
Specify at Startup¶
If you want to select this seam ID for the current session, you can set:
DSH_WEB_SEARCH_PROVIDER=dsh-web-search
After the steps above, the plugin will take effect under DSH’s web capability seam and provide the “Settings → Web Search” entry.
Typical Usage¶
Switch Engines after Installation¶
- Install the plugin.
- Open DSH’s “Settings → Web Search”.
- Select one of the built-in engines, such as DeepSeek (official, default), Tavily, Brave Search, Serper, SerpApi, Exa, SearXNG, Scavio, or Firecrawl.
- If using Tavily keyless, you can enter keyless mode directly; if using Tavily keyed, configure
TAVILY_API_KEY. - Save settings and perform a search.
Tavily Base URL¶
When baseURL is not set, the Tavily base URL falls back to:
$TAVILY_BASE_URL
Browser-side Quota Query¶
Browser read-only:
GET /dsh-web-search/usage
Does not hit the upstream directly.
Tavily keyed Reconciliation¶
Tavily keyed requests:
include_usage
And uses:
GET /usage
To reconcile quotas.
Brave Billing¶
Brave’s billing credits can only be viewed in the Brave API Console.
Notes on Local Installation¶
If you install from local source code, pay attention to the path behavior of dsh plugin add.
Do not use an absolute path with dsh plugin add for Windows cross-drive installations; instead, snapshot to the same drive as the profile and use file:.
Applicable Scenarios and Notes¶
Suitable for developers who need to unify access to multiple web search backends in DSH. It fits scenarios where search switching, result normalization, credential redirects, and quota display are maintained within the same settings partition.
Check the source code and license before installing. The plugin runs with the current dsh process permissions, reads configuration, calls search services, and queries quotas. Please confirm DSH version meets requirements and the selected backend, key, and proxy environment meet your security boundaries before use.
Conclusion¶
The value of dsh-web-search-plugin lies in converging multiple search backends into a single DSH web seam: one stable ID, one settings partition, one set of result specifications.
Repository address:
https://github.com/X-C1811/dsh-web-search-plugin
If your environment uses the DSH community directory, please understand this as an independent site, not the official app store; it has no official affiliation with DeepSeek or High-Flyer.