Preface¶
The DSH plugin ecosystem emphasizes “Everything is a plugin”. For developers who need to use Tavily in DeepSeek Harness, the problem is often not about whether search requests can be sent, but whether search control parameters can be passed to the backend, whether the API key can be safely entered in settings, and whether patches can be checked and restored.
dsh-tavily-search-provider is a DeepSeek Harness plugin built around these issues. Below is an introduction to its positioning, core capabilities, installation methods, typical usage, and precautions. The DSH community plugin directory is a separate site and does not equal the DeepSeek official app store.
What is this¶
xiaohj233/dsh-tavily-search-provider is a DeepSeek Harness plugin, with package name dsh-tavily-search-provider and license MIT. The maintainer is xiaohj233.
Its one-sentence positioning is: Provide a Tavily search provider for DSH, including complete search control mapping, a credentials-based key UI, and protected rc.6 compatible patches.
It is not the first or only Tavily integration, does not replace the DSH provider registry, and does not scrape pages on its own.
Core Features¶
1. Register an independent tavily_search tool¶
- Register an independent
tavily_searchtool. - Return a result set in Tavily shape.
- Support fully declared search control parameters.
2. Optionally provide a Tavily backend for official web_search¶
- Provide a Tavily backend for the official DSH
web_searchtool. - Retain both official result and card shapes.
- Support
replaceOfficialSearchandsearchMaxResultssettings.
3. Map complete Tavily search control parameters¶
The plugin maps the following search control parameters:
search_depthtopictime_rangemax_resultsinclude_domainsexclude_domainsinclude_answerinclude_raw_content
Note that the official DeepSeek search provider ignores Tavily-specific controls. The focus of this plugin is to preserve these search controls under the Tavily path.
4. Provide TAVILY_API_KEY control in Settings¶
The plugin provides a read-only TAVILY_API_KEY control in Settings -> Plugins -> Tavily Search, based on DSH credentials.
Related behaviors include:
TAVILY_API_KEYmodifications take effect on call, no restart required.- Empty draft preserves the current value.
- Key set/unset is disabled over non-loopback plain HTTP; use
localhost/loopback or HTTPS.
5. Provide status routing¶
The plugin provides a /api/tavily-search-provider/status status route that returns status without carrying key values.
6. Provide protected rc.6 compatible patches¶
The plugin provides protected patches for the following targets:
@deepseek-ai/dsh-tool-web@0.1.0-rc.6@deepseek-ai/dsh-host-apiproxy@0.1.0-rc.6
Patch operations include status, apply, and restore. apply and restore are idempotent, and restore has strict version protection. The patch strategy defaults to adaptive; strict programmatic mode restores exact-version-only behavior.
7. Provide network resilience in DNS pollution/fake-IP scenarios¶
Starting from v0.3.5, the plugin provides a network resilience layer for DNS pollution/fake-IP scenarios, using DoH, IP literal queries, and fallback to system resolver.
Installation and Enablement¶
Environment Requirements¶
Using this plugin requires:
- DeepSeek Harness
0.1.0-rc.6 - Node.js
^22.19.0 || >=24 - pnpm
>=10 - Tavily API key
Installation¶
Use the official install command:
dsh plugin --profile web add "github:xiaohj233/dsh-tavily-search-provider#v0.2.0"
Note the version difference: the official install command is fixed to #v0.2.0, while package.json shows version 0.3.6, and the README mentions providing the network resilience layer since v0.3.5. Please still install according to the official command as is, and pay attention to the version tag differences.
Restart once after installation¶
A restart is required after installation to allow the guarded boot application to patch clean rc.6 targets.
Since patches may involve already loaded modules, a restart is needed when modifying loaded modules.
Typical Usage¶
Configure TAVILY_API_KEY¶
Open:
Settings -> Plugins -> Tavily Search
Enter and save TAVILY_API_KEY in it.
Note during configuration:
- This control is a read-only control based on DSH credentials.
- An empty draft preserves the current value.
- Key set/unset is disabled over non-loopback plain HTTP; it is recommended to use
localhost/loopback or HTTPS.
Check patch status¶
Run in the web profile directory:
pnpm --dir "$DSH_HOME/profiles/web" exec dsh-tavily-search-provider status
This command is used to check the current patch status.
Apply patches¶
After confirming the status, you can apply the patches:
pnpm --dir "$DSH_HOME/profiles/web" exec dsh-tavily-search-provider apply
This command is used to apply protected patches.
Restore patches¶
If you need to return to the unpatched state, run:
pnpm --dir "$DSH_HOME/profiles/web" exec dsh-tavily-search-provider restore
This command is used to restore patch targets.
Restore patches before uninstalling¶
If you are preparing to uninstall, restore patches first, then remove the plugin:
pnpm --dir "$DSH_HOME/profiles/web" exec dsh-tavily-search-provider restore
dsh plugin --profile web remove dsh-tavily-search-provider
inspect-only startup¶
If you only want to inspect and not automatically apply patches, set autoApplyPatches to false for an inspect-only startup.
Test commands¶
The repository provides the following test commands:
npm test
npm run check
npm pack --dry-run
Suitable Scenarios and Notes¶
Who is it for¶
This plugin is suitable for the following situations:
- Using DeepSeek Harness
0.1.0-rc.6. - Needing to integrate Tavily search into DSH while preserving full search control parameters.
- Wanting to manage
TAVILY_API_KEYvia DSH settings card. - Needing to check, apply, or restore rc.6 compatible patches.
- Focusing on search availability under DNS pollution/fake-IP scenarios.
Who is it not for¶
Be cautious in the following situations:
- When needing a version other than
0.1.0-rc.6: you need to verify yourself whether the patch targets match, as patches are only for rc.6. - When needing the plugin to scrape pages itself: this plugin does not scrape pages.
- When needing to treat domain filters as a Content Security Boundary:
include_domainsandexclude_domainsare search constraints, not security boundaries. - When using
include_raw_content: be aware that it may return more third-party page content to the model context.
Key and Permission Notes¶
TAVILY_API_KEYonly appears in the browser draft state andcredentials.setrequests created by this package.- The key is not stored in plugin settings, tool results, regular logs, or status responses.
- DSH plugins run with the current dsh process permissions; check source code and license before installing.
- This package is MIT licensed; patch targets are MIT licensed, see
THIRD_PARTY_NOTICES.md.
Conclusion¶
The value of dsh-tavily-search-provider lies not in simply adding a Tavily entry, but in putting complete search control mapping, credential settings cards, status checks, and protected patch management into a single checkable, recoverable workflow.
GitHub address: https://github.com/xiaohj233/dsh-tavily-search-provider