dsh-web-polysearch
Multi-source web search tool for DeepSeek Harness — queries DeepSeek / DuckDuckGo / Exa / Google / Bing in parallel, merges results, fetches page content. Part of the [dsh-plugin](https://github.com/topics/dsh-plugin) ecosystem.
- Stars
- 0
- Language
- TypeScript
- Created
- Aug 25, 2026
- Updated
- Aug 26, 2026
Introduction
dsh-web-polysearch
English · 中文
Multi-source web search tool for DeepSeek Harness (DSH).
Queries several search backends in parallel — DeepSeek, DuckDuckGo, Exa, Google, Bing — merges and deduplicates results, and returns a structured answer. Also fetches the full content of a single URL on demand.
Part of the DSH plugin ecosystem. Discovered via the dsh-plugin GitHub topic.
Features
- Parallel multi-engine search — all enabled backends are queried at once via
Promise.allSettled; results are merged and deduplicated by URL - Five built-in backends:
- DeepSeek — uses the DSH built-in
webservice (no key) - DuckDuckGo — scrapes
html.duckduckgo.com(no key) - Exa — connects directly to the keyless MCP endpoint at
https://mcp.exa.ai/mcp(no key) - Google Custom Search — requires API Key + Search Engine ID
- Bing Web Search — requires Azure API Key
- DeepSeek — uses the DSH built-in
- Direct page fetch — pass
urlinstead ofqueryto fetch a single page's full content - Optional content fetching — when
fetchContentis on, the top results' body text is fetched in parallel - Bilingual settings UI — Chinese and English, registered with the DSH locale service
- SSE parsing — handles MCP responses in plain JSON and SSE-framed formats
Installation
The plugin is distributed via GitHub. There is no npm release at the moment.
From GitHub (recommended)
dsh plugin --profile web add github:zeroUsr0721/dsh-web-polysearch
dsh plugin forwards the spec to pnpm, which downloads a tarball from GitHub and installs it into the profile. Built artifacts (lib/index.js, lib/client.js) are committed to this repository, so no prepare build step runs at install time and no pnpm-workspace.yaml allow-list is required.
From a local checkout (development)
git clone https://github.com/zeroUsr0721/dsh-web-polysearch.git
dsh plugin --profile web add ./dsh-web-polysearch
pnpm links the checkout via link:, so edits in the source tree take effect after a restart.
Manual edit
Add to your profile's package.json:
{
"dependencies": {
"dsh-web-polysearch": "github:zeroUsr0721/dsh-web-polysearch"
}
}
Then run pnpm install in the profile directory. Add "dsh-web-polysearch" to dsh.profile.bundles if it is not picked up automatically.
Via dshmarket
Once the plugin is admitted to the awesome-dsh-plugin curated registry, it will appear in Settings → Plugins → Plugin Market in the DSH Web GUI for one-click install.
Configuration
Open Settings → Plugins → Web Search Settings in the DSH Web GUI.
| Setting | Description | Default |
|---|---|---|
sources | Enabled backends (order matters for merge priority) | All five |
maxResults | Max results returned per call | 8 |
fetchContent | Whether to fetch body text for top results | false |
fetchCount | How many top results to fetch body for (1–5) | 3 |
googleApiKey | Google Custom Search API Key | — |
googleCx | Google Custom Search Engine ID | — |
bingApiKey | Bing Web Search API Key | — |
Tool: dsh-web-polysearch
Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
query | string | one of query / url | Search keywords |
url | string | one of query / url | URL whose body to fetch directly |
maxResults | integer | no | Max results (default: settings value) |
fetchContent | boolean | no | Fetch body text for top results (default: settings value) |
The tool always uses the backends configured in the settings page — the model cannot override the source list at call time.
Output
{
"summary": "Found 5 results (sources: exa, duckduckgo).",
"sources": [
{ "url": "https://...", "title": "...", "snippet": "...", "source": "exa" }
],
"sourceErrors": [
{ "source": "duckduckgo", "error": "fetch failed" }
],
"searchedSources": ["exa", "duckduckgo"]
}
Examples
Search across all configured backends:
{ "query": "DeepSeek Harness plugins", "maxResults": 10 }
Fetch a specific page's content directly:
{ "url": "https://github.com/topics/dsh-plugin" }
Architecture
- Host side (
src/index.ts) — registers thedsh-web-polysearchtool, implements each search backend, parses MCP/SSE responses, fetches page content - Client side (
src/client/index.ts) — the Web Search Settings UI: collapsible cards, toggle switches, secret inputs, i18n
The two halves ship as separate bundles (lib/index.js + lib/client.js) and are loaded by the DSH host and browser shell respectively.
Building from source
pnpm install
pnpm run build
Build output: lib/index.js (host) + lib/client.js (client).
Ecosystem
This repository carries the dsh-plugin GitHub topic. Adding the topic to your own plugin repository is the standard way to make a plugin discoverable by:
- The awesome-dsh-plugin directory and its mirror sites
- The community-maintained ecosystem indexes
- Other tooling that consumes the topic as a discovery signal
License
MIT