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_search tool.
  • Return a result set in Tavily shape.
  • Support fully declared search control parameters.
  • Provide a Tavily backend for the official DSH web_search tool.
  • Retain both official result and card shapes.
  • Support replaceOfficialSearch and searchMaxResults settings.

3. Map complete Tavily search control parameters

The plugin maps the following search control parameters:

  • search_depth
  • topic
  • time_range
  • max_results
  • include_domains
  • exclude_domains
  • include_answer
  • include_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_KEY modifications 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_KEY via 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_domains and exclude_domains are 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_KEY only appears in the browser draft state and credentials.set requests 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