How to use dsh-free-search
For DeepSeek Harness: 10 web search engines with no API key required, featuring built-in time filtering, platform search, and web settings interface.
This article is auto-derived from indexed fields (wiki / faq / compatibility_json), not freshly AI-generated.
This article is derived from the plugin's already-indexed fields (wiki / faq / compatibility_json / readme), not freshly generated by AI. Source field is noted at the end of each section.
Quick start
dsh-free-search
— source: plugin_wiki.wiki_content
Install & verify
dsh plugin --profile web add dsh-free-search
Run the command above in your DSH Web Profile. Then enable the plugin in the plugin list.
— source: plugins.install
Key points
- 没有(或不想用)DeepSeek 官方 key,
- 用的是 opencode-go 这类网关(其 OpenAI 兼容端点不支持
web_search工具), - 零成本 —— 多个免费引擎,无需 key、无需注册
- 多引擎可选:DuckDuckGo(html/lite)、Bing、SearXNG(元搜索,支持自定义实例)、AnySearch、Exa、Tavily、Keenable、Perplexity、DeepSeek 官方
- 网页设置页 —— 引擎切换 + API key 配置(UI 中 key 脱敏显示"已配置")+ 中英文切换
— source: plugin_wiki.readme_en (fallback readme_raw)
FAQ
Do I need to configure an API key after installation?
No, you don't. The default engine is free Bing, which can be used for web search immediately after installation. Exa/Tavily/Keenable can still use anonymous quotas even without a key, while Perplexity and DeepSeek official are paid engines that require a key.
Where do I switch to a different search engine?
Two ways: In the web settings page, go to Settings → Plugins → Configurable → Free Search card dropdown to switch; or type /free-search-engine in the chat box to pop up the engine selection window and make your selection.
What happens if one search engine returns no results?
The plugin uses a unified fallback chain: when the primary engine fails, it automatically tries other engines in order (paid engines with configured keys → keyless Exa/Tavily/Keenable → remaining free engines). The actual engine used will be noted in the results.
How do I search for "recent weekly news" or "updates since July"?
Let the agent describe your needs (e.g., "search news from the last 3 days"), and the agent will call the advanced_search tool with a timeRange parameter (e.g., 3d, 2mo, 2026-07-01, etc.).
Can the web_fetch tool read webpage content directly?
Yes. The plugin enables the official dsh-web-fetch-http provider, which automatically follows redirects and converts HTML to plain text. Note that it has no SSRF protection, so agents can theoretically access internal network addresses.
Do I need to configure a proxy for domestic use?
DuckDuckGo and other engines may need a proxy. On Node 24+, you need to set NODE_USE_ENV_PROXY=1 and configure HTTPS_PROXY/HTTP_PROXY environment variables, otherwise fetch won't use the system proxy.
How do I uninstall it?
Remove the plugin entry from the DSH configuration directory and restart dsh web. All key settings are stored in ~/.dsh/settings.yaml under the free-search namespace.
What is the relationship with the official web_search?
The plugin implements the official WebSearchProvider interface and redirects the host's web.searchProvider to the plugin's provider (id=ddg), so DSH's built-in web_search tool will automatically use this plugin's multi-engine logic.
— source: plugin_wiki.faq_json
Compatibility
- DSH: >=0.1.0-rc.6
- Node: >=20
— source: plugin_wiki.compatibility_json
Pitfalls
Review the upstream repo before installing. This guide is auto-derived from indexed fields and may lag the latest release. If anything contradicts the official docs, treat the upstream source as authoritative.
— source: general rule