Introduction¶
The plugin direction of DSH emphasizes “everything is a plugin”: the host maintains basic capabilities, while specific extensions are provided by plugins. For agent developers, web search and web scraping are common requirements, but the keys, interfaces, and result structures of different search services are inconsistent. dshsearch-multi unifies AnySearch, Bing, DuckDuckGo, Tavily, and Exa into DSH and provides web page body scraping capabilities. The community directory is a separate site and does not belong to the official app store.
What is this¶
dshsearch-multi is a DSH plugin maintained by abcdream-Lary with an MIT license. It provides multi-engine web search and web scraping for DeepSeek Harness (DSH). It does not modify DSH’s internal source code but registers functionality through public Provider interfaces, allowing for independent installation, configuration, and upgrades.
Core Features¶
Below are a few clearly defined capabilities.
Multi-Engine Search¶
- Unified support for AnySearch, Bing, DuckDuckGo, Tavily, and Exa.
- AnySearch, Bing, and DuckDuckGo do not require an API Key.
- Tavily and Exa are enabled after an API Key is configured.
- When search fails or returns no results, it automatically switches to other available engines in order; Tavily / Exa without a configured key will be skipped.
Web Scraping¶
- Provides
web.fetch(url)for scraping web page body content. - Scraping automatically falls back to multiple sources.
- Both AnySearch
extractand direct scraping have limits on body content length and do not support binary content such as PDFs, images, audio, video, and archives.
Query Intent Recognition¶
- Built-in deterministic query intent recognition that does not call an LLM.
- Query intent mode can be configured in settings, for example
intentMode: auto.
Web and CLI Configuration¶
- The DSH Web settings page provides Chinese/English setting cards, supporting both basic and advanced parameters.
- Includes the
dshsearch-multicommand-line configuration tool, suitable for headless or scripted scenarios.
Installation and Enablement¶
First, install to the target profile. Taking the web profile as an example:
dsh plugin --profile web add dshsearch-multi
If you want to try it quickly, you can first use a separate profile to avoid affecting existing configurations:
dsh plugin --profile test add dshsearch-multi
dsh --profile test --port 4000
Then open:
http://127.0.0.1:4000
Go to “Settings → Plugins”. After the steps above, you need to confirm that the plugin is installed in the currently running profile; if the setting card does not appear, restart DSH Web or refresh the page first, then check if the profile used in the installation command matches the running DSH.
Typical Usage¶
Configuring in DSH Web¶
Open “Settings → Plugins → Plugin Configuration”, find the “Web Search” card, and configure:
- Priority search engine
- Maximum number of results
- Tavily/Exa API Key and interface address
- Query intent mode
API Keys are saved via DSH’s credential service and are not sent back to the browser. Do not commit keys to a Git repository.
Using settings.yaml¶
You can also configure the dshsearch-multi node in DSH’s settings.yaml. For example:
dshsearch-multi:
provider: anysearch
intentMode: auto
maxResults: 5
The example above only sets the priority engine, query intent mode, and maximum number of results; refer to the setting card or plugin documentation for more configurations.
Configuring API Keys¶
Tavily and Exa require API Keys. You can fill them in the DSH Web settings card or write them to .credentials.yaml:
TAVILY_API_KEY: tlv-...
EXA_API_KEY: ...
When keys are not configured, the real-time interface capabilities of Tavily and Exa will be skipped or unavailable.
Using the Command Line Tool¶
The plugin comes with the dshsearch-multi command for managing independent local configurations:
dshsearch-multi config show
dshsearch-multi config set provider anysearch
dshsearch-multi config set maxResults 5
dshsearch-multi config path
dshsearch-multi config reset
Note: The CLI configuration file is an independent convenience configuration. The running dsh web reads DSH’s dshsearch-multi settings node, not this CLI configuration file.
Applicable Scenarios and Notes¶
dshsearch-multi is suitable for scenarios where web search and web page body scraping are needed within DSH, or where automatic fallback between multiple search engines is desired.
Notes before use:
- The plugin runs with the permissions of the current DSH process and participates in external search requests and web scraping; you should check the source code, license, and required permissions before installing.
- Bing and DuckDuckGo use public HTML pages and may be affected by rate limiting, verification, or page changes.
- Tavily and Exa require API Keys; when not configured, related capabilities will be skipped or unavailable.
- In the current version of DSH, the settings page does not provide remote read/write access to third-party namespaces outside the whitelist; if the setting card is not visible, you need the Host version to provide a mechanism for exposing third-party settings, or for the host to explicitly expose
dshsearch-multi. - After installation, you need to confirm that the plugin is installed in the currently running profile and restart DSH Web or refresh the page.
Conclusion¶
The value of dshsearch-multi lies in converging multi-engine web search and web scraping into a single DSH plugin, reducing the cost of integrating search services one by one. The license is MIT, GitHub address: dshsearch-multi. For the directory page, please search for dshsearch-multi in the DSH plugin directory; refer to the actual listing page.