Preface

When adding internet search capabilities to an agent, common practices include attaching another MCP, configuring a separate Skill, or having the model call a brand-new search tool. The resulting issues are: ordinary question answering requires selecting a tool first, citation cards do not match the built-in web_search, and API keys are scattered across multiple configuration files.

DeepSeek Harness (hereinafter referred to as DSH) splits its capabilities into detachable plugins. The official repository summarizes its core concept as “Everything is a plugin”: models, tools, sessions, and UI can all be replaced at the configuration layer without modifying the Harness source code. There is a community adaptation layer that specifically connects AnySearch to DSH’s existing web_search, while adding capability discovery, vertical search, and bounded batch search. This plugin is called anysearch-dsh, and it is listed in the independent community plugin directory deepseek-harness-plugin.com. This directory has no official affiliation with DeepSeek / HyperMind and is not an official app store.

This article is collated after cross-checking with the plugin directory page, GitHub repository README, package.json, Chinese usage guide, and DeepSeek Harness official repository: what it is, which installation command to use, how to use the four tools, and the permissions and capability boundaries to check before installation.

What It Is

anysearch-dsh is a search plugin for AnySearch targeting DeepSeek Harness. Its npm package name is @anysearch/anysearch-dsh. This document applies to version 0.1.1, maintained by the GitHub organization anysearch-team, with the repository address at anysearch-team/anysearch-dsh and licensed under MIT. The main language is TypeScript. The community directory categorizes it under “Interface Enhancement”, with an inclusion date of 2026-08-15. As of 2026-08-17, the GitHub repository has 74 stars.

The problem it solves can be summarized in one sentence: the Agent still calls DSH’s native web_search, and the plugin is responsible for sending requests to AnySearch and converting the results into sources that DSH can display and cite. According to the repository description, you do not need to teach the model a new general search tool, nor do you need to separately configure an MCP Server.

The built-in profile layer provided with the package sets AnySearch as the existing ctx.web Provider and mounts advanced tools. In the default configuration, the plugin entry has an id of web-search-anysearch, and the searchProvider in the web configuration is anysearch.

Core Features

Version 0.1.1 currently exposes four search entry points to the model:

Usage Scenario Harness Tool
General web search web_search
View available domains and tags anysearch_capabilities
Vertical or parameterized search anysearch_search
Execute 1 to 5 searches in one batch anysearch_batch_search

Verified capabilities based on the README and usage guide include:
- Use AnySearch via the built-in web_search, returning real-time sources with titles, summaries, and URLs for easy citation.
- anysearch_capabilities reads the real-time directory to obtain searchable domains, vertical categories, and supported parameters; the two-level capability directory results will retain the request ID for the model.
- anysearch_search can use tag, params, zone, and language for vertical or parameterized searches.
- anysearch_batch_search concurrently executes 1 to 5 complete search queries and returns them in input order; if individual searches fail, other successful results are retained. Each item undergoes independent authentication, rate limiting, and billing.
- Advanced search results can retain request IDs, latency, and cleaned body text with a character limit.
- Use AnySearch’s anonymous quota when no API Key is configured; use account-level quota after configuration.
- Credentials are parsed via DSH’s credential system for ANYSEARCH_API_KEY. After rotating the key in the managed credential file, the new value will be automatically used for the next search without restarting DSH. Startup environment variables have higher priority, and changing them requires restarting the process.
- In-progress searches will be aborted when the Agent cancels the operation. HTTP requests have a 55-second deadline, and the three advanced tools declare a 60-second budget.
- Refrain from forwarding queries or credentials to HTTP redirect targets.

web_search only submits portable fields to the general Web Search interface: title, url, and snippet. The full content will not be included in web_search results. To obtain cleaned body text, you need to use anysearch_search or the batch tool and pass includeContent: true. The total accumulated content of all results for a single search is capped at 200,000 characters; when displaying to the model, it will be truncated to the configuration item maxRenderedContentChars (default 12000). In batch searches, the 200,000-character limit applies to each individual search, and maxRenderedContentChars is shared across the entire batch.

The current version explicitly does not provide anysearch_extract, meaning there is no webpage body extraction tool. AnySearch MCP has a separate extract function; this DSH plugin path does not currently connect to it.

Installation and Activation

The installation command provided on the directory page can be run in the DeepSeek Harness terminal:

dsh plugin add github:anysearch-team/anysearch-dsh

For reproducible installations, the directory page recommends pinning the commit hash:

dsh plugin add github:anysearch-team/anysearch-dsh#commit

Replace commit with the actual commit hash from the repository. The plugin runs with the permissions of the current dsh process, and may execute code during installation. You should inspect the source code repository and license before installing.

The repository README and Chinese usage guide recommend installing the npm package into the web profile. The environment requirements are Node.js 22.19 or Node.js 24+, pnpm 11.7, and DeepSeek Harness that can be run via npx. DSH plugin commands use pnpm to manage profile dependencies, so pnpm must be directly available in the PATH. Windows, Linux, and macOS use the same installation command:

npx -y @deepseek-ai/dsh plugin --profile web add @anysearch/anysearch-dsh

Then start the service:

npx -y @deepseek-ai/dsh web

You can quickly experience the plugin without an API Key; unconfigured requests will use AnySearch’s anonymous quota. Anonymous quotas are subject to shared free limits and stricter rate limiting. After exhaustion or rate limiting, you need to retry later or configure an account key.

After installation, you can use the following command to check the final combined configuration, and no real keys should appear in the output:

npx -y @deepseek-ai/dsh --profile web --dump-config

You should see the following in the configuration:

- id: web
  config:
    searchProvider: anysearch

And the plugin entry:

- id: web-search-anysearch
  name: '@anysearch/anysearch-dsh'

Updating and removing (from repository README):

npx -y @deepseek-ai/dsh plugin --profile web update @anysearch/anysearch-dsh
npx -y @deepseek-ai/dsh plugin --profile web remove @anysearch/anysearch-dsh

Configuring the API Key

The API Key is optional. For continued usage or to access account-level quotas, the repository recommends registering and logging in at anysearch.com, then obtaining a key at API Keys. We recommend writing it to the credential file managed by DSH, with the default location at ~/.dsh/.credentials.yaml; if DSH_HOME is set, the path is $DSH_HOME/.credentials.yaml:

ANYSEARCH_API_KEY: "as_sk_your_key"

as_sk_your_key is a placeholder and must be replaced with a valid key. If saved as-is, the plugin will reject it before sending HTTP requests; to continue using anonymous access, delete this entire configuration entry. The default Windows path corresponds to C:\Users\<username>\.dsh\.credentials.yaml.

The plugin configuration only saves the credential reference name ANYSEARCH_API_KEY, not the actual key. DSH’s standard local credential provider resolves same-name references in the following order: startup environment, $DSH_HOME/.credentials.yaml, .env in the current working directory, and $DSH_HOME/.env. Never write real API Keys to Git repositories, screenshots, logs, or issue reports.

The current DSH Web settings page does not automatically generate an input field for AnySearch keys for third-party providers, so you can only use the managed credential file or environment variables. The official base profile already includes the standard credentials service required by the plugin.

The default API address is https://api.anysearch.com. To change to a test environment or self-hosted compatible service, override the same id: web-search-anysearch entry in the target profile’s user configuration layer, keep the id unchanged, and fully replace the config instead of adding a second AnySearch Provider with a different ID:

- id: web-search-anysearch
  config:
    apiKeyEnv: ANYSEARCH_API_KEY
    baseURL: https://api.anysearch.com
    maxRenderedContentChars: 12000

apiKeyEnv is the credential reference name, not the literal key. baseURL must be an HTTP or HTTPS address.

Typical Usage

After installation, ask questions to DeepSeek Harness as usual. General online queries will continue to use web_search. The usage guide provides the following prompt examples:

Search for the latest release changes of DeepSeek Harness and attach source links.
Find important news about open-source Agent Harness today and compare three sources.
Verify the current installation method of a certain GitHub project and cite the official documentation.

When you need professional data, first call anysearch_capabilities to read the real-time directory, then pass the returned tags and parameters to anysearch_search, and do not guess the tag or parameter names on your own. When you need to execute multiple independent queries simultaneously, use anysearch_batch_search, with a maximum of five items at a time. Prompt examples from the usage guide:

Query the latest market price of AAPL. First obtain the finance domain capabilities, then use accurate tags and parameters for the search.
Retrieve recent CVEs and retain AnySearch's request ID and search latency.
Search for the latest versions of three open-source Agent Harness projects separately and retain the request ID for each item. Use batch search.

For ordinary queries, let Harness automatically select web_search. Use anysearch_search only when vertical tags, structured parameters, or complete metadata are valuable.

If the provider is not registered, Harness will report that the configured search provider is missing; if AnySearch returns an error, the tool will display a security error message or HTTP status description. When WEB_PROVIDER_ERROR occurs, the usage guide recommends checking in order: whether baseURL is correct, whether the network can access api.anysearch.com, whether the API Key is valid or expired, whether anonymous/account quotas are exhausted, and whether the server returns 429 or 5xx errors. When reporting issues, provide the error message and occurrence time, and do not provide the real API Key. Upstream business error text will be truncated to a maximum of 2,000 characters, escaped as a JSON string, and preceded by a note that this is untrusted upstream data rather than an instruction.

Applicable Scenarios and Notes

This plugin is suitable for users who are already using DeepSeek Harness, want AnySearch to be their default search provider, and prioritize the native web_search display and citation functionality. The repository categorizes four access methods: DSH plugin, AnySearch Skill, AnySearch MCP, and direct HTTP, as different adaptation layers on the same search backend: use this plugin if you only want to use it within DSH and replace the built-in search; if you currently need Extract functionality, you should configure AnySearch MCP separately instead of expecting this plugin to provide extraction tools.

You need to accept these boundaries before use:
- DeepSeek Harness is still in the development preview stage, and incompatible changes may be released, so the plugin may need to be updated synchronously.
- This plugin currently does not provide anysearch_extract.
- The general web_search only supports query terms and result counts; cleaned body text and complete metadata require dedicated tools.
- anysearch_batch_search sends multiple independent HTTP requests, which may partially succeed, partially face rate limiting or quota shortages, which is different from batch processing handled uniformly by an MCP server.
- The plugin runs with the permissions of the current dsh process. Inspect the source code and license before installation; pin the commit hash for reproducible installations.
- The community plugin directory is an independent website, and included information such as star counts may lag behind GitHub. Verify versions and commands against the repository and package.json.

Summary

anysearch-dsh provides a very thin adaptation layer tailored to DSH: ordinary searches still use web_search, vertical and batch capabilities are supplemented by three dedicated tools, and keys only enter the configuration as reference names. The current version is 0.1.1, licensed under MIT, maintained by anysearch-team.

Directory page: https://deepseek-harness-plugin.com/zh-CN/plugins/anysearch-dsh/

GitHub: https://github.com/anysearch-team/anysearch-dsh