dsh-web-polysearch
开发工具 活跃维护

dsh-web-polysearch

zeroUsr0721/dsh-web-polysearch

支持同时向DeepSeek、DuckDuckGo、Exa、Google、Bing发起搜索请求,自动合并各平台搜索结果并抓取目标网页内容,无需切换多平台即可获取更全面的网页信息。

0
Stars 标星
0
Forks 分支
0
Watchers 关注
0
Open Issues
TypeScript
主要语言
MIT
开源协议
54 KB
仓库大小
1 个月前
最后推送
一键安装扩展 / 插件指令
dsh plugin --profile web add github:zeroUsr0721/dsh-web-polysearch
git clone https://github.com/zeroUsr0721/dsh-web-polysearch.git
git clone git@github.com:zeroUsr0721/dsh-web-polysearch.git
README.md main

dsh-web-polysearch

English · 中文

License: MIT
DSH plugin

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 web service (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
  • Direct page fetch — pass url instead of query to fetch a single page's full content
  • Optional content fetching — when fetchContent is 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 the dsh-web-polysearch tool, 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