Introduction

The philosophy of DeepSeek Harness (DSH) is “everything is a plugin.” When developing agents or using large models for complex tasks, models can easily hallucinate or lack real-time information. The dsh-search-first plugin addresses the lack of timeliness and accuracy in responses by enforcing multi-source search during the agent/pre-step stage.

Plugin Positioning

This is a DeepSeek Harness (DSH) Cordis plugin, following the principle of “Search first, verify facts, reply last”. It takes over the host model’s pre-response phase, handles query extraction, unified search, page fetching, result organization and caching, and finally injects the organized real-time intelligence into the host model. The final answer is still generated by the host model.

Core Features

  • Configurable query extraction model: The sub-model used to extract search intent is customizable; if left blank, it follows the session model.
  • Citation format guidance: It enforces a standardized citation format on the host model, facilitating traceability.
  • Multi-source ranking and fetching: It ranks search results from multiple sources and selectively fetches page content to return to the host model.
  • End-to-end execution: It covers query extraction, unified search engine, page fetching, result organization, caching, and runtime persistence.

Installation and Activation

Requirements

  • Mount the dsh web profile; the version must be >= 0.1.1-rc.2.
  • Node.js must be installed on the system; the version must be >= 22.

Installation Command

dsh plugin --profile web add https://github.com/v587d/dsh-search-first.git

After installation, you must restart dsh web.

Uninstall

dsh plugin --profile web remove dsh-search-first

Typical Usage

  1. Configure search APIs: Go to Settings -> “Search first” -> “Search APIs” and click “Test all connections” to test connectivity.
  2. Set API keys: You must configure at least one API key (AnySearch / Tinyfish / Tavily is supported). Keys can be configured in environment variables (e.g., TAVILY_API_KEY) or $DSH_HOME/.credentials.yaml. AnySearch supports anonymous mode (no Bearer header required).
  3. Usage toggle: Find the “Search First” toggle below the conversation input field to control enablement for a single session. Right-click the toggle to reset to the global default setting.

Configuration Details

The settings path is: Settings -> Search first.

Configuration Description
General Default enable toggle, failure policy (continue/block), injection mode, overall timeout.
Query Extraction Specifies the sub-model for query extraction, timeout, and maximum token count.
Cache Cache directory (default $DSH_HOME/search-first; takes effect for root after restart), search/fetch validity period, and clear button.
Limits Maximum number of search results, maximum number of pages to fetch, and maximum number of injected characters.
Search APIs Run mode (sequential failover/parallel fan-out merge), toggles and priority for the three main search engines, per-provider timeout, ctx.web fallback, and local HTTP fallback.

Use Cases and Precautions

  • Usage cost: The free tier is usually sufficient for use.
  • Permission risk: The plugin runs with the permissions of the current dsh process; please inspect the source code and license before installation.
  • Ecosystem note: DeepSeek Harness (DSH) follows the “everything is a plugin” philosophy. This plugin is listed in the community directory and has no official affiliation with DeepSeek or High-Flyer.

Summary

By enforcing search and fact checking before responding, the plugin can effectively improve the reliability of agent responses. For more details and the source code, refer to the project homepage.