DeepSeek Harness is the open-source agent runtime DeepSeek shipped as a developer preview last week: models, tools, sessions, and even the agent loop itself are all plugins. What it did not ship with is a production-grade web search — until now. anysearch-dsh plugs AnySearch into Harness's web profile in two commands: no MCP server to deploy, no API key to start. This post walks through the install, the tools you get, and how to tune it for research-style agent workloads.
What the AnySearch plugin adds
The plugin mounts into the web profile and upgrades Harness's native web_search to AnySearch's real-time index, then layers three extra tools on top:
web_search— the native tool, now backed by AnySearch; returns titles, snippets, and source URLs so the agent can cite and verify.anysearch_capabilities— live discovery of domains, vertical tags, and supported parameters. The agent calls this first when it hits a specialized task, instead of you hardcoding tags into the prompt.anysearch_search— vertical or parameterized search (law, finance, security, academic, code, and more) using the tags and parameters discovered above.anysearch_batch_search— runs one to five independent searches concurrently; a single failure does not kill the batch.
Prerequisites
- Node.js 22.19+ (or 24+) and pnpm 11.7+ on PATH — the DSH plugin command uses pnpm to manage profile dependencies.
- DeepSeek Harness itself (
npx -y @deepseek-ai/dshpulls it on demand).
Two-command installation
Step 1 — add the plugin to the web profile:
npx -y @deepseek-ai/dsh plugin --profile web add @anysearch/anysearch-dshStep 2 — start Harness:
npx -y @deepseek-ai/dsh webThat is it. Ask the agent something time-sensitive, for example: "Search for the latest DeepSeek Harness updates and cite the sources." The bundled profile layer automatically wires AnySearch as the ctx.web provider and mounts the advanced tools — no extra configuration required.
Optional: configure an API key
Anonymous quota works for a quick try. For continuous use, register at anysearch.com (1,000 free searches per day for registered users) and store the key in $DSH_HOME/.credentials.yaml (~/.dsh/.credentials.yaml by default):
ANYSEARCH_API_KEY: "as_sk_your_key"The plugin resolves the managed credential on every operation, so key rotation applies to the next request without restarting DSH. An exported ANYSEARCH_API_KEY environment variable takes priority. Inspect the composed profile without leaking the key value:
npx -y @deepseek-ai/dsh --profile web --dump-configCustomize the search provider
To override defaults, replace the bundled web-search-anysearch entry in the profile's user configuration layer — keep the id, replace the whole config, and do not add a second AnySearch provider under a different id:
- id: web-search-anysearch
config:
apiKeyEnv: ANYSEARCH_API_KEY
baseURL: https://api.anysearch.com
maxRenderedContentChars: 12000maxRenderedContentChars caps how many characters of cleaned page content are rendered to the model per advanced tool call (default 12,000) — raise it for deep-research agents, lower it to save tokens.
Practical tips for agent builders
- Use batch search for research agents. Multi-source research, fact-checking, and competitive scans are exactly what
anysearch_batch_searchis for: fire up to five queries at once and let the model synthesize. - Discover before you hardcode. Domains, tags, and parameters change over time; have the model call
anysearch_capabilitiesfirst instead of shipping stale tags in the prompt. - Keep the plugin updated:
npx -y @deepseek-ai/dsh plugin --profile web update @anysearch/anysearch-dsh(swapupdateforremoveto uninstall). - Mind the preview caveat. Harness is developer preview and may introduce compatibility-breaking changes, so plan for plugin upgrades. If you are also squeezing performance out of open models, see our walkthrough on running Qwen3.8-27B efficiently.
Resources
- GitHub: anysearch-team/anysearch-dsh
- npm: @anysearch/anysearch-dsh
- DeepSeek Harness: deepseek-ai/deepseek-harness
- AnySearch: anysearch.com