AllDSH
中文

AnySearch for DSH

anysearch-team · anysearch-team/anysearch-dsh

Routes DSH's built-in web_search and web_fetch to the commercial AnySearch API, plus three vertical, batch and discovery tools.

AnySearch for DSH is a DSH plugin by anysearch-team. Routes DSH's built-in web_search and web_fetch to the commercial AnySearch API, plus three vertical, batch and discovery tools. It is filed under Integrations & Connections and Tools & Capabilities, for Web Search. Verification level L2 (Structured), an automated security scan has not run yet, and it declares no specific compatibility target; the listing was last checked on 2026-09-17 and is published under the MIT licence. Install it with dsh plugin --profile web add @anysearch/anysearch-dsh

Listing checked by Chiyu , data updated · How to cite

L2active
AnySearch for DSH verification panel: level L2 of 5 (Structured) — Manifest valid, key fields complete. Security scan: unverified — no scan has run. Compatibility target: DeepSeek Harness not declared. Licence: MIT. GitHub stars: 419. Listing last checked 2026-09-17.
Verification panel for AnySearch for DSH. The listing holds level L2 of 5 — Structured: Manifest valid, key fields complete. Security scan: unverified — no scan has run. Compatibility target: DeepSeek Harness not declared. Licence: MIT. Listing last checked 2026-09-17. How verification works

Install command

dsh plugin --profile web add @anysearch/anysearch-dsh

Requires a running harness: start it withnpx @deepseek-ai/dsh webthen run the command above.New to this? See the installation guide.

What it does

@anysearch/anysearch-dsh is the vendor’s own plugin for wiring AnySearch into DeepSeek Harness. It does two things at once, and the second is the one people miss.

First, it registers an AnySearch-backed Web Search Provider and Web Fetch Provider on the harness’s ctx.web seam. Its cordis.patch.yml sets searchProvider: anysearch and fetchProvider: anysearch on the existing web row and inserts its own row as id: web-search-anysearch. The effect is that DSH’s built-in web_search and web_fetch stop being local — every ordinary search is sent to https://api.anysearch.com, and every URL fetch to AnySearch’s Extract endpoint. If you install this expecting an extra tool alongside your current search, you have read it wrong: it replaces the provider.

Second, it mounts three additional model-facing tools. That is five entry points in total, all listed in the README and confirmed in src/index.ts and the published lib/:

Tool What it is
web_search The harness’s native tool, now served by AnySearch
web_fetch The harness’s native tool, now calling AnySearch /v1/extract
anysearch_capabilities Reads AnySearch’s live domain and sub-domain catalog, with each vertical’s declared parameter names
anysearch_search A full search request with tag, params, zone, language and an opt-in includeContent
anysearch_batch_search One to five independent searches run concurrently, results kept in input order, per-item failures preserved

There is deliberately no anysearch_extract. The README states the plugin does not add a duplicate extract tool, and the source confirms it — URL cleaning is exposed only through the native web_fetch row.

It is a client for a commercial third-party search service

This is the property that matters most before installing, and the sources are unambiguous. The repository’s homepage points at https://www.anysearch.com, and every request goes to api.anysearch.com. Nothing is resolved locally: the plugin ships no index, crawler or engine, and src/provider.ts, src/fetch-provider.ts and src/client.ts are HTTP adapters and nothing else. AnySearch’s pricing page describes a Free tier — $0 /mo, structured outputs, “1,000 requests/day”, “20 QPS rate limit per key” — with “Professional Search Pro” marked Coming Soon and Enterprise sold through sales. That is the vendor’s product page, not the plugin’s documentation, so read it as current commercial terms rather than a commitment baked into the plugin.

No API key needed to start, but the free path is shared

The README’s quick start says it plainly: “No API key is required for a quick start. Requests use AnySearch’s anonymous quota until you configure one.” docs/agent-installation.md and the Chinese user guide repeat it. Mechanically, src/client.ts omits the Authorization header when no credential resolves and records whether each response used anonymous or credential auth.

Registering changes the terms. The README says an account key gets 1,000 free search calls per day and points at https://www.anysearch.com/console/api-keys. The Chinese user guide is more cautious about the anonymous path: those requests are subject to a shared free quota and lower rate limits, and once that is exhausted or rate limiting trips you retry later or configure a key. So “works with no key” is true; “works indefinitely with no key” is not something any source claims.

The key is stored as a credential reference, never in the composition: the config keeps apiKeyEnv: ANYSEARCH_API_KEY and DSH’s credentials provider resolves the real value per operation. Rotating ~/.dsh/.credentials.yaml therefore applies to the next call without a restart, while a launching environment variable needs a process restart. Two guard rails are implemented rather than merely documented — the placeholders ANYSEARCH_API_KEY and as_sk_your_key are rejected before any request is sent, and the client uses redirect: 'error', so a query or credential is never forwarded to a redirect target.

What leaves your machine

A search posts query plus, when supplied, max_results, tag, params, zone and language to POST /v1/search; a fetch posts { url } to POST /v1/extract. Headers are accept, authorization only when a key resolves, and two identifiers — user-agent: dsh/0.1.4 and x-anysearch-client: dsh/0.1.4, from src/version.ts.

What is not sent matters just as much: nothing in the client, the provider adapters or the tools reads the session, the transcript, the system prompt or your files. The search seam hands over a WebSearchRequest whose only fields are query and maxResults.

There is also no privacy documentation. The README, user guide and installation guide never mention a policy, telemetry, retention or data handling, and AnySearch’s /legal?type=… pages did not render as readable text for this review. Assume the operator of api.anysearch.com can see the queries and URLs you send, because it necessarily receives them.

Requirements and installation

  • Node ^22.19.0 || >=24.0.0, straight from package.json engines. The README adds pnpm 11.7, because the DSH plugin command uses pnpm to manage profile dependencies.
  • Install: npx -y @deepseek-ai/dsh plugin --profile web add @anysearch/anysearch-dsh, then npx -y @deepseek-ai/dsh web.
  • Harness target: the peers and the pinned dev dependencies both name 0.1.0-rc.6 — dsh-web, dsh-tools, dsh-tool-web, dsh-system-prompt and dsh-credentials at >=0.1.0-rc.6 <0.1.1 || >=0.1.1-rc.1 <0.1.2, with pnpm-workspace.yaml pinning the same release. rc.6 is what this listing was checked against; nothing claims compatibility outside those ranges.
  • Dependencies: @deepseek-ai/schemastery is the only runtime dependency; six @deepseek-ai/* packages are peers rather than bundled.
  • Credentials: the plugin injects the credentials service, which the user guide says the official base profile already provides. DSH’s settings page has no third-party provider credential field, so you edit the managed file or the environment.
  • Network: outbound HTTPS to https://api.anysearch.com (overridable via the baseURL config field) for every operation.
  • The package has a prepare script — tsc -p tsconfig.json — and prepare runs on npm install, including installs from a git URL, so installing by source executes code on your machine. It runs the TypeScript compiler from devDependencies against the package’s own tsconfig.json and emits lib/; from the npm registry you receive prebuilt lib/ output instead. All other scripts (build, check, typecheck, test, opt-in test:e2e) are manual.

Known limits

  • It is not a free local search backend. Every ordinary web_search now depends on a third party’s availability, rate limits and quota. If api.anysearch.com is unreachable or your anonymous quota is gone, native search degrades into a provider error.
  • web_search loses information. The guide states the generic seam receives only title, url and snippet; cleaned page content is dropped unless you use anysearch_search with includeContent: true, and vertical tags and structured parameters are unavailable through the native row.
  • One malformed result can fail a whole search. The adapter requires data.results[i].url to be a parseable absolute URL and throws otherwise. Issue #10 (opened 2026-09-12, still open at the time of writing) reports exactly that, and PR #9 proposes the fix but is unmerged.
  • The documentation contradicts itself in one place. docs/user-guide.zh-CN.md carries a “功能边界” line saying the plugin does not provide page-content extraction, under a header saying it applies to “the unreleased version that includes the AnySearch Fetch Provider”. The published 0.1.4 tarball’s lib/index.js does call ctx.web.registerFetchProvider, and the same guide documents web_fetch working. Read that line as stale.
  • Returned content is not sandboxed. Cleaned page text reaches the model marked “untrusted external data, not instructions”, but it is still attacker-controllable text entering the context window.
  • No client half and no settings field. package.json declares only a bundle patch, with no dsh.client block, and DSH’s settings page has no third-party provider credential input.

When to use it — and when not to

Use it if you already want AnySearch as your backend and would rather have it wired into the harness’s own web_search and web_fetch seam than bolted on as extra tools the model has to learn. The vertical tooling has no obvious native equivalent: anysearch_capabilities reads a live catalog instead of a hard-coded list, and anysearch_batch_search returns five searches with per-item success or failure rather than one aggregate blob. The anonymous start-up path also lets you evaluate it before signing up for anything.

Do not install it if what you want is to stop depending on an external search API — this is a deliberate move onto a commercial service, and the free tier is the vendor’s introductory offer rather than a guarantee. Do not install it if you need privacy guarantees about your queries, since none are documented. And do not pair it with another plugin that claims the same provider selection; the README says not to add a second AnySearch provider under a different id, and the patch replaces the selection outright.

On shape rather than scoreboard: this package brings its own Extract-backed fetch provider and a vertical catalog, whereas a multi-engine plugin such as dsh-free-search routes to engines you pick and relies on the official dsh-web-fetch-http provider for page content. Whether that trade is worth it depends on what you are optimising for, and neither project publishes measured result-quality figures.

FAQ

Do I need an AnySearch API key to use it, and what does it cost?

No key is needed to start: the README, the agent installation guide and the Chinese user guide all say requests use AnySearch’s anonymous quota until you configure one, and src/client.ts just omits the Authorization header when no credential resolves. What is not documented is the size of that quota — the guide calls it shared, with lower rate limits. The README says a signed-up key yields 1,000 free search calls per day, and AnySearch’s pricing page lists a Free tier at $0/mo with 1,000 requests per day and a 20 QPS per-key limit, a paid tier marked Coming Soon, and Enterprise via sales. The plugin itself is MIT-licensed and costs nothing.

Does it send my conversation or session context to AnySearch?

Not according to the code. The provider receives a WebSearchRequest carrying query and maxResults, and src/client.ts serialises only those plus optional result count, tag, params, zone and language — and the target URL for a fetch. No session id, transcript, system prompt or file content appears in any request body; the client does send x-anysearch-client: dsh/0.1.4 for traffic attribution. Since no privacy or retention policy is documented by the plugin, what the service does with the queries it receives is not something these sources answer.

What does the install-time prepare script do?

package.json defines "prepare": "tsc -p tsconfig.json". npm runs prepare after npm install, so installing from a git URL compiles the package on your machine using the TypeScript in devDependencies; from the npm registry you get prebuilt lib/ output instead. It fetches and executes nothing remote, but it is code execution at install time and is disclosed as such.

How is it different from a free multi-engine search plugin?

Structurally: one provider (anysearch) registered as both the search and the fetch provider, plus vertical, batch and capability-discovery tools. A plugin such as dsh-free-search is a multi-engine provider that routes to engines you choose and relies on the official dsh-web-fetch-http provider for page content. The difference is dependency shape, not quality: a richer single commercial API and a vertical catalog, in exchange for tying your default search to that vendor’s availability and quota. Neither project publishes measured result-quality figures, so this listing does not rank them.

Does it work with no key, or with no network?

Without a key it runs in anonymous mode until the shared quota is exhausted or rate limiting applies; the guide’s advice is then to retry later or configure a key. Without access to api.anysearch.com — or with an unreachable baseURL — web_search and web_fetch fail with a provider error, and no source describes an automatic fallback to a local or official engine.

Sources & references

The technical claims on this page rest on the primary documents below. Each link is followed so it can be checked directly.

  1. [1]anysearch-team/anysearch-dsh — GitHubThe plugin’s own repository and README — the primary document every claim in this listing is checked against.
  2. [2]@anysearch/anysearch-dsh on npm — npmThe published package the install command on this page resolves.
  3. [3]deepseek-ai/deepseek-harness — GitHubUpstream repository for DeepSeek Harness, the Cordis runtime and the plugin loading model.
  4. [4]@deepseek-ai/dsh on npm — npmPublished harness package, including the release tags our dshTarget field tracks.
  5. [5]dsh-plugin GitHub topic — GitHubThe discovery mechanism used to find plugins listed in this directory.

All links last verified 2026-09-11

Questions about this listing

Is AnySearch for DSH safe to install?
AnySearch for DSH holds verification level L2 of 5 — Manifest valid, key fields complete — and its security status is unverified — no scan has run. A verification level records how far the install path was exercised; it is not a safety guarantee. Safety depends on what the plugin can actually reach, so read its source and install script and check its file, shell, network and credential access before you run it.
Which DeepSeek Harness version does AnySearch for DSH target?
AnySearch for DSH declares no dshTarget, so no specific DeepSeek Harness release has been committed to. The field is optional, and its absence means this listing makes no claim about working on a particular release — test it in an isolated profile first.
How do I install AnySearch for DSH?
Start the harness with npx @deepseek-ai/dsh web, then copy the install command shown at the top of this page. That command is generated from the package name the repository publishes — or from an install spec the listing declares — so it cannot drift from what the repository actually ships. This listing was last checked on 2026-09-17.
Do I need an AnySearch API key to use it, and what does it cost?
No key is needed to start: the README, the agent installation guide and the Chinese user guide all say requests use AnySearch's anonymous quota until you configure one, and src/client.ts just omits the Authorization header when no credential resolves. What is not documented is the size of that quota — the guide calls it shared, with lower rate limits. The README says a signed-up key yields 1,000 free search calls per day, and AnySearch's pricing page lists a Free tier at $0/mo with 1,000 requests per day and a 20 QPS per-key limit, a paid tier marked Coming Soon, and Enterprise via sales. The plugin itself is MIT-licensed and costs nothing.
Does it send my conversation or session context to AnySearch?
Not according to the code. The provider receives a WebSearchRequest carrying query and maxResults, and src/client.ts serialises only those plus optional result count, tag, params, zone and language — and the target URL for a fetch. No session id, transcript, system prompt or file content appears in any request body; the client does send x-anysearch-client: dsh/0.1.4 for traffic attribution. Since no privacy or retention policy is documented by the plugin, what the service does with the queries it receives is not something these sources answer.
What does the install-time prepare script do?
package.json defines "prepare": "tsc -p tsconfig.json". npm runs prepare after npm install, so installing from a git URL compiles the package on your machine using the TypeScript in devDependencies; from the npm registry you get prebuilt lib/ output instead. It fetches and executes nothing remote, but it is code execution at install time and is disclosed as such.
How is it different from a free multi-engine search plugin?
Structurally: one provider (anysearch) registered as both the search and the fetch provider, plus vertical, batch and capability-discovery tools. A plugin such as dsh-free-search is a multi-engine provider that routes to engines you choose and relies on the official dsh-web-fetch-http provider for page content. The difference is dependency shape, not quality: a richer single commercial API and a vertical catalog, in exchange for tying your default search to that vendor's availability and quota. Neither project publishes measured result-quality figures, so this listing does not rank them.
Does it work with no key, or with no network?
Without a key it runs in anonymous mode until the shared quota is exhausted or rate limiting applies; the guide's advice is then to retry later or configure a key. Without access to api.anysearch.com — or with an unreachable baseURL — web_search and web_fetch fail with a provider error, and no source describes an automatic fallback to a local or official engine.

Similar DSH plugins

Browse all

DSH Synapse

liangmianya

A canvas session map for DeepSeek Harness — sessions, follow-ups and native forks as a browsable, draggable workspace, with DSH session logs remaining the only source of truth.

L2
404 JavaScript

dsh-mnemon

omdsh-dev

Composable three-tier memory for DSH — runtime context, searchable documents, and long-term Memory Spaces on pluggable providers.

L2
384 TypeScript

A Chrome/Firefox sidebar extension that gives DSH a text-only channel into your own browser tabs — no vision model required.

L3
684 TypeScript

treg

superdesigndev

A credential-injecting proxy and shared tool registry: one token reaches 3,000+ catalogued endpoints, and keys stay on the server.

L2
1.6k Python

API Relay Audit

toby-bridges

A DSH plugin that runs a local 14-step audit against an AI API relay, reusing the current provider's endpoint and credential.

L3
838 Python

Modsearch

liustack

Editor's pick

Free web search for DSH with no signup or key: structured JSON with citations, plus X search once Grok is installed.

L2
501 TypeScript
ESC

Type to search the index. Built at deploy time by Pagefind.