Back to home@delef

dsh-free-web-search

No description

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

Introduction

dsh-free-web-search

Free web search plugin for DeepSeek Harness. No API keys required — works out of the box with Bing, DuckDuckGo, and SearXNG. Optional paid engines (Exa, Tavily, Keenable, Perplexity, DeepSeek Official) activate when you add a key.

Features

  • 10 search engines with automatic fallback — if one fails, the next one picks up
  • Time-filtered search via advanced_search tool (last day/week/month/year, or custom ranges like 3d, 2mo, 2026-07-01)
  • Platform search — GitHub repos and Reddit threads via platform_search tool
  • Engine diagnosticsfree_search_test tool to check which engines work
  • Web Settings UI — engine selection, API key management, cache TTL config
  • Result caching — LRU cache (50 entries, configurable TTL up to 5 min) to reduce rate limiting

Install

dsh plugin --profile web add github:delef/dsh-free-web-search

If pnpm blocks the build script, add the key it prints to allowBuilds in your profile's pnpm-workspace.yaml and retry.

Engines

EngineCostKey required
BingFreeNo
DuckDuckGo (HTML / Lite)FreeNo
SearXNGFreeNo
AnySearch AIFreeNo
ExaFree tier / paidOptional
TavilyFree tier / paidOptional
KeenableFree tier / paidOptional
PerplexityPaidYes
DeepSeek OfficialPaidYes

Default engine: Bing (most stable). Change it in Settings > Plugins > Free Web Search, or type /free-search-engine in chat.

Tools

web_search (built-in, powered by this plugin)

Standard harness web search. Uses the configured engine with automatic fallback.

advanced_search

query: "rust async runtime"
timeRange: "week"        # day | week | month | year | 3d | 2mo | 1y | 2026-07-01
engine: "exa"            # optional, override preferred engine
maxResults: 5

platform_search

platform: "github"       # github | reddit
query: "deepseek harness plugins"
maxResults: 5

web_fetch

url: "https://docs.example.com/guide"
maxLength: 50000                       # optional, default 50000 chars

Fetches a single page, strips HTML, returns plain text. For reading articles, docs, or any URL.

free_search_test

Tests engine availability. No arguments tests all engines.

Configuration

Settings are managed through the web UI (Settings > Plugins > Free Web Search) or settings.yaml:

free-search:
  provider: bing
  bingMarket: en-US
  cache: true
  cacheTtl: 5
  platforms:
    - github
    - reddit
  searxngInstances:          # optional, overrides default public instances
    - https://your-instance.example.com
  # Optional API keys
  exaApiKey: ""
  tavilyApiKey: ""
  keenableApiKey: ""
  perplexityApiKey: ""
  deepseekApiKey: ""

License

Apache-2.0