# anysearch-dsh

> Integrate AnySearch into DeepSeek Harness to provide real-time web search, vertical domain search, and concurrent batch search capabilities.

## Metadata

- Author: [@anysearch-team](https://github.com/anysearch-team)
- Repo: <https://github.com/anysearch-team/anysearch-dsh.git>
- GitHub: [anysearch-team/anysearch-dsh](https://github.com/anysearch-team/anysearch-dsh)
- Stars: 162
- Language: TypeScript
- License: [MIT](https://spdx.org/licenses/MIT.html)
- Homepage: <https://www.anysearch.com>
- Topics: `agent-tools`, `anysearch`, `deepseek-harness`, `dsh`, `dsh-plugin`, `typescript`, `web-search`
- Forks: 6
- Open Issues: 0
- Last push: 2026-08-19T08:21:29.000Z
- Added: 2026-08-20T00:00:00.000Z

## Install

```bash
dsh plugin --profile web add github:anysearch-team/anysearch-dsh
```

## Wiki

## One-Line Pitch

Bring [AnySearch](https://anysearch.com)'s search capabilities as a plugin to [DeepSeek Harness](https://github.com/deepseek-ai/deepseek-harness), enabling Harness's built-in web search to use AnySearch's real-time data source, while adding vertical domain search and concurrent batch search tools.

## Core Capabilities

- Replace Harness's built-in `web_search` with AnySearch as the data source, returning results with title, summary, and URL for easy citation
- Provide `anysearch_capabilities` tool for models to discover searchable domains, vertical categories, and supported parameters in real-time
- Provide `anysearch_search` tool supporting vertical search by tags, region, language and dynamic parameters, with optional cleaned content
- Provide `anysearch_batch_search` tool for concurrent execution of 1-5 independent searches, where single failure doesn't affect other results
- Use DSH managed credentials parsing API Key; credential rotation takes effect on next request without restarting DSH
- Fall back to AnySearch anonymous quota when no API Key is present, enabling trial before registration

## Technical Implementation

- **Language**: TypeScript (ESM, `type: module`, `sideEffects: false`)
- **Key Dependencies**: `@deepseek-ai/cordis` (Cordis plugin runtime), `@deepseek-ai/dsh-tools` (tool registration), `@deepseek-ai/dsh-credentials` (credentials parsing), `@deepseek-ai/schemastery` (configuration schema)
- **Architecture Pattern**: Cordis plugin; `cordis.patch.yml` sets `searchProvider` to `anysearch` and registers `web-search-anysearch` entry; plugin `apply()` replaces default search Provider via `ctx.web.registerSearchProvider` and registers three advanced tools to `ctx.tools`
- **Entry File**: `src/index.ts` (exports `apply`, `Config`, `name = 'web-search-anysearch'`, `inject = ['web', 'credentials', 'tools']`)

## Use Cases

Harness users want more real-time and professional search results without the model leaving Harness — for example, queries across vertical data sources like finance, academia, law, code, or running multiple independent search tasks in the same turn. This plugin挂载 AnySearch's search infrastructure into Harness's tool system; regular prompts continue using `web_search`, while professional searches are automatically handled by the advanced tools when needed.

## Prerequisites and Compatibility

| Dependency | Minimum Version | Description |
|---|---|---|
| DSH (cordis/credentials/tools/web) | 0.1.0-rc.6+ (cordis ≥4.0.1-rc.1 <5) | From `peerDependencies` |
| Node.js | ^22.19.0 or >=24.0.0 | From `engines.node` |
| pnpm | 11.7.0+ | DSH `plugin` command relies on pnpm for profile management |
| Platform | macOS / Windows / Linux | README states same install command for all three platforms |
| Native Modules | None | Pure HTTP client, no `node-pty`, `node:sqlite` or other native dependencies |

## Installation

```bash
dsh plugin --profile web add github:anysearch-team/anysearch-dsh
```

## Configuration Options

| Config | Type | Description | Default |
|---|---|---|---|
| `apiKeyEnv` | String (credential reference name) | DSH credential reference; falls back to AnySearch anonymous quota on parse failure | `ANYSEARCH_API_KEY` |
| `baseURL` | String (absolute URL) | AnySearch API base address, must be http or https, cannot include user info | `https://api.anysearch.com` |
| `maxRenderedContentChars` | Integer (≥1) | Maximum cleaned content characters to show the model per advanced tool call | `12000` |

## FAQ

**Q: What does this plugin do?**

A: It integrates AnySearch into DeepSeek Harness, making Harness's built-in `web_search` and three new tools all use AnySearch's real-time data source; regular web search, vertical search, and batch search share the same credentials.

**Q: Is an API Key required?**

A: No. For quick trials without an API Key, requests use AnySearch's anonymous quota. After registering an AnySearch account and writing to `~/.dsh/.credentials.yaml` (key `ANYSEARCH_API_KEY: "as_sk_xxx"`) or a same-named environment variable, you get 1000 free daily calls.

**Q: What's the relationship with Harness's built-in `web_search`?**

A: After installation, `cordis.patch.yml` sets `web.searchProvider` to `anysearch`; regular queries still go through Harness's `web_search`, but the underlying data source is switched to AnySearch; professional searches are handled by the new tools `anysearch_search`, `anysearch_batch_search`, `anysearch_capabilities`.

**Q: How to uninstall?**

A: Run `dsh plugin --profile web remove @anysearch/anysearch-dsh`; Harness will remove the AnySearch Provider and fall back to the built-in search Provider; use `dsh plugin --profile web update @anysearch/anysearch-dsh` for updates.

**Q: Doesn't it support Windows / Linux / macOS?**

A: All three platforms are supported with the same install command, but requires Node.js, `npx`, and `pnpm` to be in `PATH`.

**Q: What to do when errors occur?**

A: All plugin errors are categorized under `AnySearchClientError`, with diagnostic fields like `request_id`, `httpStatus`, `retry-after`; use `dsh --profile web --dump-config` to check combined configuration (credential values are not output). If upstream issues are suspected, contact AnySearch with the returned `request_id` for investigation.

## Learning Curve

Beginner — one-click install command, works with default config, no manual YAML editing needed; configuration editing only required when custom API addresses or limits are needed.

## Known Issues and Limitations

- DeepSeek Harness is still in development preview and may release breaking changes (see README "Compatibility and limitations")
- Currently no `anysearch_extract` tool provided; extracting full pages requires using [AnySearch MCP](https://anysearch.com/docs)
- DSH settings page currently has no third-party Provider credential input field; API Key can only be configured via managed credentials file or environment variable
- Single batch search supports max 5 independent requests (`src/tools/batch.ts:16`); single tool timeout is 60 seconds (`src/limits.ts:2`)

---

This document is auto-generated by [deepseek-plugin.org](https://deepseek-plugin.org). HTML page: [anysearch-dsh](https://deepseek-plugin.org/plugins/anysearch-team/anysearch-dsh)
Wiki generated by AI (model: `MiniMax-M2.5`)
