Add Live Web Search to DeepSeek Harness in 2 Commands

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/dsh pulls 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-dsh

Step 2 — start Harness:

npx -y @deepseek-ai/dsh web

That 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-config

Customize 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: 12000

maxRenderedContentChars 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_search is 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_capabilities first instead of shipping stale tags in the prompt.
  • Keep the plugin updated: npx -y @deepseek-ai/dsh plugin --profile web update @anysearch/anysearch-dsh (swap update for remove to 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

Leave a Comment

Scroll to top