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
dshweb 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¶
- Configure search APIs: Go to Settings -> “Search first” -> “Search APIs” and click “Test all connections” to test connectivity.
- 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). - 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
dshprocess; 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.