DeepSeek Harness 插件

dsh-tavily-search-libinghu

Tavily-backed web search provider plugin for the DeepSeek Harness (dsh), with a GUI configuration card for the API key and an on/off switch.(英文原文)

跳到安装方式

来源信息

GitHub 仓库
libinghui55/dsh-tavily-search
最近更新
2026年8月20日
分类
文档与渲染
GitHub stars
0
载体类型
plugin
目录证据
上游声明已找到 dsh.bundle
证据路径
package.json#dsh.bundle
核对版本
0.1.0-rc.8
上游核对日期
2026-08-20

该证据由上游目录提供。本站没有安装、运行或安全审核这个插件。

安装

默认先复制一段 Prompt,让 Agent 读 GitHub 仓库和源码;需要自己装时再切到命令。

复制这段 Prompt,发给 DSH、Codex 或其他 Agent,让它先读 GitHub 仓库和源码。

请先不要安装或执行任何命令。阅读这个插件的 GitHub 仓库、README 和关键源码,然后用清楚、直接的方式回答以下问题,帮助我判断它是否适合我的需求:

1. 这个插件是什么,解决什么问题;
2. 适合哪些用户和典型使用场景;
3. 安装后如何使用,并给出一个最小使用示例;
4. 有哪些已知限制,以及隐私、安全、兼容性或维护风险;
5. 给出“推荐 / 有条件推荐 / 不推荐”的明确建议和理由。

请区分仓库明确说明、根据源码推断和未知信息。证据不足时请明确说明,不要猜测或照抄 README。

GitHub:https://github.com/libinghui55/dsh-tavily-search
插件名:dsh-tavily-search-libinghu
作者:libinghui55

检查来源文件

安装前先看这个插件目录里的 README 和其他文件。

文件资源管理器3 个文件
README.md来源说明 · 只读预览

dsh-tavily-search

A Tavily-backed web search provider plugin for the DeepSeek Harness (dsh). It routes the harness web-search seam through the Tavily API and ships a GUI configuration card in Settings → Plugins where you can toggle the provider on/off and store your Tavily API key.

Everything is a plugin: this package composes a Cordis host plugin (the search provider) and a web client bundle (the settings card).

Features

  • Registers a web-search provider with id tavily and points the harness

web seam at it via the bundle patch (cordis.patch.yml).

  • GUI configuration card (设置插件) named tavily-search with:

- an on/off switch — when off, the provider reports itself unavailable and refuses to search; - an API key field written through the harness credentials service (never stored in the settings file or echoed back to the client).

  • API key resolution order:

1. a literal apiKey configured in the web-search-tavily settings section; 2. the harness credentials service, under the credential reference named by apiKeyEnv (default TAVILY_API_KEY); 3. the launching environment (TAVILY_API_KEY).

  • Configurable Tavily endpoint via baseURL (default https://api.tavily.com).

Requirements

  • A DeepSeek Harness (dsh) installation where the web search seam is composed.
  • A Tavily API key from <https://app.tavily.com>.

Installation

A dsh plugin is an npm package that composes into a profile via the profile's dsh.profile.bundles layer stack — there is no separate "plugin directory" to drop folders into. Everything this package needs is declared in its own dependencies (pinned to exact versions, see package.json), so a single install into a profile is sufficient.

Target a profile whose web-search seam is already composed — the default web profile (bundles @deepseek-ai/dsh-base + @deepseek-ai/dsh-web-app) is the usual one.

From a source checkout:

git clone https://github.com/libinghui55/dsh-tavily-search.git
cd dsh-tavily-search
npm ci

Then add the package to a profile with the dsh CLI:

dsh plugin --profile web add <path-to-dsh-tavily-search>

(<path-to-dsh-tavily-search> can be an absolute path, link:..., a git spec, or an npm registry name if you publish it.)

What dsh plugin does:

1. Initializes the profile on first use. 2. Runs pnpm add <spec> inside the profile directory, installing the package (and its exact pinned dependencies) into the profile's node_modules. 3. Reconciles the profile's dsh.profile.bundles layer stack against the installed state: any installed dependency whose manifest declares dsh.bundle — this one does — is appended as a profile layer in dependency order, and a later dsh plugin --profile web remove dsh-tavily-search drops it back out.

Because this package declares dsh.bundle.patch: ./cordis.patch.yml, joining the layer stack pulls in the bundled patch, which:

1. sets web.searchProvider = tavily so the web seam searches through Tavily; 2. inserts a web-search-tavily host-plugin row whose config points apiKeyEnv at TAVILY_API_KEY.

Manual alternative (no dsh CLI)

Add the package to the target profile's package.json by hand and run pnpm install there:

{
  "dependencies": { "dsh-tavily-search": "0.1.0" },
  "dsh": { "profile": { "bundles": ["@deepseek-ai/dsh-base", "@deepseek-ai/dsh-web-app", "dsh-tavily-search"] } }
}

pnpm install in the profile materializes it, and the harness applies cordis.patch.yml because the package is listed in dsh.profile.bundles.

Provide your API key

Choose one of these:

A. GUI (recommended) — open 设置插件, expand tavily-search, and enter your key in the API key field, then Save. The key is written through the harness credentials service (e.g. ~/.dsh/.credentials.yaml).

B. Credentials file — add a line to your credentials store:

TAVILY_API_KEY: tvly-xxxxxxxx

C. Environment — export TAVILY_API_KEY in the launching environment.

> Note on environment shadowing: if TAVILY_API_KEY exists in the process > environment, the credentials service reports it as inherited (writable: > false), so the GUI card disables its key field — an env-provided value cannot > be overwritten from the UI. Store the key in the file (option A or B) rather > than the environment if you want to edit it from the card.

Configuration

The plugin owns a settings namespace web-search-tavily with the schema:

FieldTypeDefaultDescription
enabledbooleantrueMaster switch; false makes the provider unavailable.
apiKeysecretLiteral API key (written via credentials).
apiKeyEnvstringTAVILY_API_KEYCredential reference resolved when no literal key is set.
baseURLstringhttps://api.tavily.comTavily endpoint override.

Example .yml config:

# dsh.config / bundle patch
web-search-tavily:
  enabled: true
  apiKeyEnv: TAVILY_API_KEY

Bundle contents

  • index.js — host-side web search provider (TavilySearchProvider) and the

web-search-tavily settings section.

  • client.js — web client bundle: the plugin configuration card

(settings.plugin.item slot, keyed on the web-search-tavily namespace).

  • cordis.patch.yml — bundles the provider into the web seam and resolves the

API key reference.

Development

Run the offline smoke test from the profile that has the plugin installed (it imports the profile-installed copy so @deepseek-ai/* deps resolve). The smoke script is a local-only, gitignored helper; point it at the profile where the package is installed:

node <profile>/node_modules/dsh-tavily-search/smoke.mjs

The test verifies: provider id tavily, availability, a real Tavily search, and that enabled: false makes the provider unavailable and refuse to search.

Because the web client is served from its own bundle, changes to client.js require a harness restart to be reloaded by dsh-client-modules.

License

MIT