Configuring dsh-free-search
DeepSeek Harness loads dsh-free-search as a web-profile plugin. The plugin registers a provider through ctx.web and stores its settings in ~/.dsh/settings.yaml under free-search.
| Key |
Meaning |
provider |
Preferred engine; the default is bing |
lang |
Settings-page language, zh or en |
bingMarket |
Bing market; the documented example is zh-CN |
region |
Optional DuckDuckGo region, such as cn-zh |
searxngInstances |
Optional list of custom SearXNG instance URLs |
exaApiKey, tavilyApiKey, keenableApiKey |
Optional credentials for those providers |
perplexityApiKey |
Credential for Perplexity |
deepseekApiKey |
Credential for DeepSeek Official |
The settings page can select an engine, save credentials in masked form, test the current engine without fallback, enable platform search and set the result-cache duration from zero to five minutes. A zero-minute cache disables caching. dsh-free-search also documents DEEPSEEK_API_KEY for the official DeepSeek provider, and the paid providers require their corresponding API keys.
Commands and tools
DeepSeek Harness exposes the plugin’s search through web_search. Enter /free-search-engine in the chat box to choose and save the preferred engine. The free_search_test tool tests every engine individually. advanced_search accepts timeRange values such as day, week, 3d, 2mo or 2026-07-01, and can explicitly select engine. The plugin also provides web_fetch and platform_search for supported public platforms.
How dsh-free-search behaves
The preferred engine runs first. On failure, dsh-free-search tries other configured or keyless-capable providers and then the remaining free engines, reporting the engine that actually returned the result. Exa, Tavily and Keenable can be attempted without a key using their documented anonymous paths, while Perplexity and DeepSeek Official require credentials.
Requirements and limits
DeepSeek Harness must provide the @deepseek-ai/dsh-settings and @deepseek-ai/dsh-tools peer dependencies as single runtime instances. The search providers are external services: free engines can be rate-limited, and paid engines can fail when keys are absent or invalid. The README documents no additional runtime platform requirement.
Written from the project's own documentation and kept in sync with it. Where the two disagree, the source is authoritative — read the README on GitHub