Multi-engine web search for DSH with fallback, platform and vertical search, video search, web fetching, and configurable free or API-backed engines.
Free Search
Multi-engine search, fallback, platform and vertical lookups, videos, page fetching and research for DeepSeek Harness. Start with a keyless engine or configure your own API providers.
Get started
Install the pinned package dsh-free-search@0.9.23 in DSH Plugins, enable it and reload when prompted. Open Plugins → Installed → free-search → web-search-free, choose an engine and save. Bing is the default keyless engine; availability, regional access and rate limits depend on each service.
- Use
/free-search-engine in chat to switch engines.
- Ask the agent to run
free_search_test for the engines you intend to use.
- Configure API credentials in plugin settings. Keep keys out of chat, shared URLs and research reports.
- Node.js 20+ is required. Persistent body caching without experimental flags needs Node.js 22.13+. Upstream declares DSH >=0.1.7-rc.1. Activation in the actual desktop host has not been verified.
Engines and controls
| Need |
Options |
| Start without a key |
Bing, DuckDuckGo HTML/Lite, SearXNG and AnySearch; instance rules and access still apply |
| Your own Degoog |
Supply trusted instance URLs and an optional instance Bearer key; no shared public instance is included |
| API-backed services |
Exa, Tavily, Keenable, Firecrawl, Parallel, Perplexity, SerpBase, Serply, DeepSeek, You.com, Baidu, Kimi, Aliyun, Doubao and Zhihu, subject to each provider's credentials and quotas |
| Model-based search |
OpenAI, Gemini and Claude only when explicitly selected; usage may be billed |
| Several sources |
Multi runs searches concurrently, merges and deduplicates results, and uses more provider quota |
Settings let you enable engines, order fallback and configure Chinese/English pools. Disabled engines are excluded from normal search, automatic selection, multi-search and engine testing. Test an engine directly to distinguish its failure from fallback behavior.
Degoog, added in 0.9.16
Provide a trusted instance you operate or are authorized to use. Set provider: degoog and degoogInstances: [https://your-instance.example]; configure degoogApiKey only when the instance requires authentication. Requests use /api/search with query, language and time filtering. Multiple configured instances are tried in order. Requests have a timeout and reject redirects. You must supply a working instance; this feature does not include a hosted public service.
Tools
| Tool |
Purpose |
web_search |
Discover candidate web sources |
advanced_search |
Select an engine or time window |
multi_search |
Compare several sources with merged and deduplicated results |
platform_search |
Find content on supported code, forum, video and other platforms |
domain_search |
Query supported academic, package, finance, security and public-data sources |
video_search |
Find videos to watch |
web_fetch |
Fetch the body of a selected URL |
research |
Search and fetch a few relevant sources into a cited brief |
cache_search |
Find previously fetched bodies still within the retention period |
free_search_test |
Check engine configuration and availability |
Search results identify candidate URLs. Fetch and verify selected pages when you need source text or evidence. Treat all external content as untrusted data, not as instructions to the agent.
Fetching, research and cache
Fallback uses only enabled and configured engines. Network errors, quotas and invalid credentials can still exhaust the chain. Multi increases requests and may increase costs. Fetching can fail on authentication, CAPTCHAs, dynamic sites or access restrictions.
Research is bounded by time and search budgets (upstream defaults: 90 seconds and up to 12 searches). It is not an exhaustive review. Body cache retention is seven days; caching may be unavailable when the local SQLite capability is absent. Check publication dates and freshness even for cached results.
DSH 0.2.x provider settings and removal
The plugin can persist web.searchProvider: ddg and web.fetchProvider: fs-quality-fetch. Here ddg is the registered provider ID; it does not force the DuckDuckGo engine. The plugin takes over when the search provider is unset or is the official default; other custom search providers are preserved. Set fetchProviderTakeover: false to preserve an explicitly configured HTTP fetch provider.
Before disabling or uninstalling, check whether host settings still reference these plugin providers. Remove or replace only those references using the host's supported configuration flow, preserving unrelated custom settings. Stale references can leave search or fetching unavailable.
Troubleshooting
- For timeouts or empty results, test the engine directly and check connectivity, region, credentials, quota and your instance.
- If saved settings appear inactive, confirm the correct component, enabled-engine list and current engine, then reload if prompted.
- Use credentials for the correct service and account permissions.
- Cache search only covers previously fetched bodies within retention and depends on local SQLite support.
- After disabling the plugin, repair any remaining search/fetch provider references as described above.
MIT licensed. Each external service controls its own terms, quotas and availability.
Updates and X search
Use the host plugin page to check for updates. X platform search requires the local Grok Build CLI and a suitable login; it is unavailable without them.
Prompts and tools
Choose a built-in English or Chinese prompt or a custom page in settings; an empty page injects no prompt. Individual plugin tools can be disabled. Settings sections provide shareable links.