← Back to home@u9521

dsh-cust-search

Custom Web Search plugin for DeepSeek Harness (DSH), replacing web-search-deepseek with multi-engine sequential fallback.

Stars
0
Language
TypeScript
Created
Sep 15, 2026
Updated
Sep 15, 2026

Introduction

dsh-cust-search

License: MIT DSH Compatibility Node Version

English | 中文

Custom Web Search plugin for DeepSeek Harness (DSH) WebUI. Searches through configured engines in order, automatically trying the next engine if one fails or times out.


UI Preview

1. Configuration View

Configuration View

2. Sorting Mode

Sorting Mode

3. Search Testing

Search Testing


Core Features

  • Sequential Search: Searches engines one by one in your configured order. If an engine encounters a network error, invalid key, or timeout, it automatically moves to the next enabled engine until it gets results.
  • 11 Search Engines Supported: Built-in support for official DeepSeek bridge, free search engines (Bing, DuckDuckGo, SearXNG), and AI search engines (Tavily, Exa, Firecrawl, Parallel, Perplexity, etc.).

Supported Search Engines

EngineIDTypeCredentialDescription
DeepSeek OfficialdeepseekBridgeOfficial plugin settingsDirect bridge to official deepseek-official provider
BingbingFreeNoneRegion/locale-driven web search
DuckDuckGoddgFreeNoneHTML primary channel with Lite fallback
SearXNGsearxngFreeNoneRotates public instances or custom endpoints
TavilytavilyKeyedTAVILY_API_KEYHigh-quality API when keyed, shared channel when keyless
AnySearchanysearchFreeNoneKeyless structured AI search
ExaexaKeyedEXA_API_KEYNeural search; REST when keyed, public MCP when keyless
KeenablekeenableKeyedKEENABLE_API_KEYReal-time search; REST when keyed, free MCP when keyless
FirecrawlfirecrawlKeyedFIRECRAWL_API_KEYDeep scraping; anonymous quota when keyless
ParallelparallelKeyedPARALLEL_API_KEYAI search; anonymous Streamable HTTP MCP when keyless
PerplexityperplexityKeyedPERPLEXITY_API_KEYSonar generative search with source citations

DSH Version Compatibility

Plugin VersionCompatible DSH VersionNotes
main (Current)>= 0.1.5-rc.1Fully aligned with DSH official specifications; redirects global searchProvider

Quick Install (Recommended / One-Line)

Install directly from the GitHub dist branch (pre-built by CI, no local compilation needed):

dsh plugin --profile web add github:u9521/dsh-cust-search#dist

Then restart web (dsh web) and hard-refresh your browser (Cmd+Shift+R or Ctrl+F5). The plugin appears as Web Search in Settings.

Upgrade

Pull the latest release using the dsh plugin update command:

dsh plugin --profile web update @local/dsh-cust-search

Then restart web and hard-refresh the browser.


Storage & Configuration

Configuration is stored in an isolated user directory without modifying system settings:

  • Storage Path: ~/.dsh/storages/cust_search.json
  • Schema Details: For complete schema specifications and field definitions, see Storage Schema Specification.

Local Development & Manual Build

Prerequisites

  • pnpm: npm install -g pnpm
  • Node.js: ^22.19 || >=24

1. Clone & Build

git clone https://github.com/u9521/dsh-cust-search.git ~/.dsh/plugins/dsh-cust-search
cd ~/.dsh/plugins/dsh-cust-search
pnpm install
pnpm run build

2. Local Install

dsh plugin --profile web add ~/.dsh/plugins/dsh-cust-search

Then restart web (dsh web) and hard-refresh the browser.

3. Local Upgrade

Upgrading local sources only requires pulling the latest commit and rebuilding:

cd ~/.dsh/plugins/dsh-cust-search
git pull
pnpm run build

Development Commands

CommandDescription
pnpm run buildFull build (runs tsc type check + generates lib/ bundles)
pnpm run checkType check only (tsc --noEmit)
pnpm run lintFull lint check (ESLint + TypeScript + Prettier)
pnpm run lint:fixAutomatically fix ESLint rules and format code
pnpm run fmtFormat source and config files with Prettier

Uninstall

dsh plugin --profile web remove @local/dsh-cust-search

Restart web and hard-refresh the browser afterwards. If local sources are no longer needed:

rm -rf ~/.dsh/plugins/dsh-cust-search

License

MIT © 2026 u9521