Introduction

DeepSeek Harness supports extending search capabilities through plugins. For scenarios that require calling third-party search services (such as AnySearch), manually configuring a Provider often requires modifying configuration files and makes it difficult to handle multi-key rotation and failover. The jpa957/dsh-web-search-anysearch plugin registers a ctx.web Seam to provide the AnySearch search interface, and it includes built-in key rotation and per-key cooldown failover mechanisms, which are configured through a browser-side UI.

Plugin Overview

This plugin is maintained by JPA957 and is an AnySearch-based search provider. It has the following core capabilities:

  • AnySearch search provider: Registers the anysearch search backend.
  • API key rotation: Supports round-robin usage of multiple API keys.
  • Per-key cooldown failover: When a key returns a 429/401/403 error, that key enters a cooldown period, and the plugin tries the next key, with up to 6 retries.
  • Browser-side UI configuration: Provides a settings page with cards and tabs, allowing management of API keys, Endpoint, and result count without editing configuration files.

Installation

Use the following command to install the plugin. This command registers the Provider automatically through the Bundle’s Patch layer.

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

Configuration and Usage

After installation, configure the plugin in the settings page:

  1. Open the Web App’s Settings → AnySearch tab.
  2. API key: The key is entered only through the credential store and is not sent back to the browser.
  3. Key reference: The credential name for the API key, defaulting to ANYSEARCH_API_KEY. Using comma-separated values creates a key pool and enables load balancing.
  4. Endpoint base: The API endpoint address, defaulting to https://api.anysearch.com.
  5. Max results: The number of results returned per search (1–10).

After saving the configuration, you can set searchProvider: anysearch in the configuration document to make it the default backend.

Failover and Security Mechanisms

At runtime, the plugin exhibits the following behaviors and security features:

  • Cooldown policy: When the API returns 429 (rate limiting), 401 (authentication failure), or 403 (insufficient permissions), the corresponding key enters a cooldown period (default 60 seconds; authentication/quota failures are 10 minutes).
  • Retry logic: Within the same search request, if the current key fails, the plugin automatically switches to the next key and continues retrying until it reaches the maximum retry count or all keys are in cooldown.
  • Secure storage: Keys are entered only through the credential store (Settings page or environment variables) and are not sent back to the browser. In diagnostic information, only the first 10 characters of the key are displayed.
  • Anonymous search: If the key pool is empty, the plugin performs anonymous searches.
  • Data cleansing: Entries from the API response that lack a URL are discarded, and duplicate URLs are merged.

Enabling It as the Default Backend

To set AnySearch as the default search backend for the Web Seam, you must specify it in the configuration. Add the following to your Patch configuration (note: ensure this configuration is after the Bundle’s Patch layer):

- id: web
  config:
    searchProvider: anysearch
    fetchProvider: http

Notes

  • The plugin runs with the current DSH process permissions. It is recommended to review the source code before installation.
  • Dependencies require node >= 20.
  • This plugin is open source under the MIT License and is a community plugin. It has no official affiliation with DeepSeek / High-Flyer.

Summary

This plugin provides standard AnySearch search capabilities for DeepSeek Harness, focusing on solving multi-API-key management and automatic failover. Configuration through the browser-side UI lowers the barrier to use. For more details and source code, refer to the GitHub repository.