Skip to main content

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