Introduction¶
DeepSeek Harness (DSH) adopts a plugin-based architecture, modularizing features to extend capabilities. When developing web search or content-fetching features, a single search engine often cannot meet the need for data breadth and lacks main-content extraction capabilities. The dsh-ventus-search plugin registers Bing, 360, and Bilibili into DSH’s ctx.web, providing multi-engine concurrent search, result scoring and deduplication, and Readability-like main-content fetching.
Core Features¶
- Multi-engine concurrency: Supports concurrent search across Bing, 360, and Bilibili. Supports redirect URL decoding and per-domain limits (maximum number of results returned for a single domain).
- Result quality control: Scoring mechanism based on hit weights (title ×3 + snippet ×2), with automatic URL normalization and deduplication.
- Fault tolerance: Failed individual engines are automatically isolated without affecting other engines. Supports fallback query retry and an overall timeout safeguard.
- Caching and performance: Provides query-level LRU caching (default TTL 300s) and supports AbortSignal.
- Main-content fetching: Integrates a Readability-like algorithm, supports filtering via ad/tracking domain blacklists, and supports fallback to mirror domains.
- Security and stability: The API is local-loopback-only, and state files use atomic writes (fsync + rename).
Installation and Enablement¶
Install via the official DSH plugin command:
dsh plugin --profile web add github:mmzm0808/dsh-ventus-search
After installation, restart DSH. The repository already includes complete build artifacts, so no build scripts need to be run.
Usage¶
- Enter the settings card: In the DSH UI, click “Settings” -> “Ventus Plugin” -> “Ventus Search” in order.
- Control availability:
- Master switch: Controls the global availability of search and fetching providers.
- Engine switches: Individually enable or disable Bing / 360 / Bilibili.
- Testing and monitoring:
- Enter a keyword in the input box and click “Test Search” to view actual results, elapsed time, and source count.
- Check the health status of each engine (green = healthy, red = failed, gray = untested) and the most recent success/failure details.
Configuration Options¶
The plugin provides detailed configuration options. Default values are shown in parentheses:
| Key | Default Value | Description |
|---|---|---|
| enabled | true | Master switch |
| engines.bing | true | Enable Bing |
| engines.so360 | true | Enable 360 Search |
| engines.bilibili | true | Enable Bilibili |
| maxResults | 8 | Maximum number of returned sources |
| maxDomainResults | 2 | Maximum retained results per domain |
| requestTimeoutMs | 8000 | Single request timeout per engine |
| overallTimeoutMs | 15000 | Overall search timeout |
| gracefulDegradation | true | Return empty results instead of throwing errors when all engines fail |
| cache.enabled | true | Enable query-level LRU cache (TTL 300s) |
| fetch.enabled | true | Enable main-content fetching provider |
Note: The actual enabled state of an engine is jointly determined by engines.<id> in the configuration file and engines.<id>.enabled in the runtime state file.
API and Data¶
The plugin provides a local API (Loopback-only, Cache-Control: no-store):
- GET /api/ventus-search/state: Retrieve current state (master switch, engine switches, health status).
- PATCH /api/ventus-search/state: Update state (the Body contains
enabledorenginesfields). - POST /api/ventus-search/test: Test search (the Body contains a
querystring).
The state file path is ~/.dsh/plugins/ventus-search/state.json.
Ecosystem Background¶
The DSH philosophy is “Everything is a plugin.” dsh-ventus-search is merely a community plugin, maintained by developer meto-ventus, and follows the MIT License.
- GitHub repository: https://github.com/meto-ventus/dsh-ventus-search
- Directory page: https://www.skillhub.cn/plugins/meto-ventus/dsh-ventus-search