Back to home@lemoncat7

dsh-web-search

Configurable and secure multi-provider web search for DeepSeek Harness

Stars
0
Language
TypeScript
Created
Aug 25, 2026
Updated
Aug 25, 2026
GitHub repo

Introduction

@lemoncat7/dsh-web-search

Configurable web search for DeepSeek Harness. The plugin keeps DSH's native web_search tool stable while administrators select the actual backend in Settings.

Supported providers:

  • SearXNG — self-hosted, keyless general web search
  • Wikipedia — keyless encyclopedia search; Simplified Chinese by default
  • Tavily — agent-oriented API search
  • Brave Search — traditional web and news search
  • Gemini Grounded Search — Google Search grounding and URL Context for queries containing a URL

Only the selected provider receives each query. The plugin does not silently fan out requests or spend quota on fallback services.

Install

dsh plugin --profile web add @lemoncat7/dsh-web-search

Open Settings → Plugins → Plugin configuration → Web search to choose a provider, store API credentials, test the draft configuration, and save it without restarting DSH.

The default backend is keyless Chinese Wikipedia so a new installation can be verified immediately. Use SearXNG, Tavily, Brave, or Gemini for general web coverage.

Local SearXNG

docker compose -f deploy/searxng/compose.yml up -d
curl -fsS -X POST http://127.0.0.1:8080/search -d 'q=DeepSeek&format=json'

The included deployment binds to loopback only. Do not expose it publicly without authentication, rate limiting, and the controls recommended by SearXNG.

The settings card can read general-purpose engines from the configured instance, probe them with bounded concurrency, sort successful engines by latency, and save a per-client engine selection. Failed or empty searches can be retried from zero to three times.

Security

  • External JSON is schema-validated and capped at 2 MiB.
  • HTTP redirects are rejected.
  • API keys are resolved through DSH Credential Store and sent only in provider-defined authorization headers.
  • Browser settings routes enforce exact same-origin writes, cap request bodies, and never return secret values.
  • The plugin implements search only, not arbitrary URL fetching.

Proxy

Set DSH_WEB_SEARCH_PROXY to an absolute HTTP(S) proxy URL. This dispatcher is scoped to the plugin and does not change networking for model providers or other DSH plugins. Loopback and private IPv4 destinations bypass it; add custom direct hosts to the comma-separated DSH_WEB_SEARCH_NO_PROXY variable.

Development

npm install
npm run check

Attribution

Maintained as an MIT-licensed derivative of zmh2000829/dsh-web-search-multi. The original license notice is retained.