Introduction¶
In the plugin system of DeepSeek Harness (DSH), agents need to decompose search and content reading into replaceable, manageable underlying capabilities. Connecting to just one search interface often yields a single source; multi-source concurrency, failure isolation, content extraction, and local state management all need to be handled by the plugin itself.
Below is an introduction to mmzm0808/dsh-ventus-search. This is a search and content extraction plugin for DSH that integrates three search sources—Bing, 360, and Bilibili—into a single entry point, and provides content extraction, settings cards, local state APIs, and state file management.
What is it¶
Ventus Search is maintained by mmzm0808, the repository is named dsh-ventus-search, and the license is MIT.
It solves two things:
- Search: Organizes concurrent search results from the Bing, 360, and Bilibili engines into a returnable result set.
- Extraction: Performs extraction, blacklist filtering, mirror fallback, and volume control on web page content.
The plugin also comes with Ventus series settings cards, allowing you to control the global toggle, individual engine toggles, and view health status or execute test searches within the settings.
Core Capabilities¶
Multi-engine Search and Result Organization¶
The search side primarily includes the following capabilities:
- Concurrent search using Bing, 360, and Bilibili.
- Title match ×3 + Summary match ×2 − Ranking weight score.
- URL normalization and deduplication.
- Per-domain quota.
- Bing/360 redirect wrapper decoding.
- Query-level LRU cache with a TTL of 300s.
- Automatic retry on 429/5xx/timeout.
In failure handling, the plugin isolates single-engine failures to avoid affecting other engines; it also supports fallback query retries. When the overall timeout is reached, it returns existing partial results. When all engines fail, gracefulDegradation can return empty results instead of throwing an error.
Content Extraction¶
The extraction side handles the following regarding content acquisition:
- Ad/tracking domain blacklist.
- Readability-like content extraction.
- Mirror domain fallback.
- Volume cap.
If the Cookie for the Bilibili search request is empty, the built-in default buvid3 is used.
Settings Cards and Health Status¶
The plugin provides Ventus series settings cards, containing:
- Global toggle.
- Independent toggles for Bing, 360, and Bilibili per engine.
- Health status per engine: Green=Normal, Red=Failed, Grey=Untested, displaying the last successful time or failure reason.
- Test search button: Executes a real search and displays time taken, source count, and the result list.
Installation and Enabling¶
First, execute the installation command:
dsh plugin --profile web add github:mmzm0808/dsh-ventus-search
This command installs dsh-ventus-search into the DSH web profile. The repository has submitted the complete lib/ build artifacts, so no build script needs to be executed during installation. DSH plugin development uses pnpm; when distributed via GitHub, publishing to npm is not required.
Restart dsh after installation. Then enter:
Settings → Ventus Plugins → Ventus Search
Here, turn on the global toggle, and enable or disable Bing, 360, and Bilibili as needed.
Typical Usage¶
Below are some common operations.
1. Check the Global Toggle¶
View the global toggle status in the settings card. Once the global toggle is turned off, search and extraction capabilities are unavailable.
2. Control Engines Individually¶
You can enable or disable individually in the settings card:
- Bing
- 360
- Bilibili
For an engine to be actually enabled, two conditions must be met simultaneously:
config engines.<id> enabled
state file engines.<id>.enabled enabled
When both are met, the corresponding engine takes effect.
3. Execute a Test Search¶
Enter a keyword in the test search input box. The default keyword is:
DeepSeek Harness latest updates
After clicking test search, view the time taken, source count, and result list.
4. Call the Local State API¶
The state API is loopback-only, accessible only locally, and returns Cache-Control: no-store.
View current state:
GET /api/ventus-search/state
Modify enabled or engines:
PATCH /api/ventus-search/state
Perform a real test search:
POST /api/ventus-search/test
State File¶
The state file path is:
~/.dsh/plugins/ventus-search/state.json
Writing uses an atomic method: write to a temporary file first, then execute fsync, and finally rename. This reduces the risk of generating an incomplete state file during process exceptions.
Use Cases and Notes¶
Ventus Search is suitable for the following scenarios:
- Need to integrate multiple search sources (Bing, 360, Bilibili) into DSH.
- Hope the plugin handles failure isolation, retries, overall timeout, and partial result return.
- Need to use both search and content extraction capabilities simultaneously.
- Wish to manage plugin status via settings cards and local APIs.
Note before use: The plugin runs with the current DSH process permissions, accesses external search interfaces, scrapes web pages, and reads/writes local state files. Before installation, check the source code, dependencies, and MIT License. If the runtime environment is strict, use it under a trusted network and controllable account.
Conclusion¶
Ventus Search puts multi-engine search, result organization, content extraction, and local state management into a single DSH plugin, making it suitable for plugin development scenarios that require integrating internet search capabilities into DSH.
GitHub:
https://github.com/mmzm0808/dsh-ventus-search
Directory page link:
https://www.skillhub.cn/plugins/mmzm0808/dsh-ventus-search