Skills Plugins MCP Prompt Model 导航 博客 资讯 我的中心
工具与能力 #deepseek-harness#dsh-plugin#tavily

dsh-plugin-web-search-tavily

DeepSeek Harness 的 Tavily 搜索提供商:向 ctx.web 注册 WebSearchProvider,让内置 web_search 工具由 Tavily 服务。

coderdailyone @coderdailyone ⬇ 1 ★ 1 main

安装

dsh plugin --profile web add github:coderdailyone/dsh-plugin-web-search-tavily
下载安装清单

需要可复现安装时,可在仓库后追加 #commit 固定提交。

DeepSeek Harness 的 Tavily 搜索提供商:向 ctx.web 注册 WebSearchProvider,让内置 web_search 工具由 Tavily 服务。

该插件未提供要点说明,请参考仓库 README。

deepseek-harnessdsh-plugintavily
  1. 安装并启动 DeepSeek Harness:npx @deepseek-ai/dsh web
  2. 在终端执行上面的安装命令(CLI 会解析插件并核验来源)
  3. 用 dsh plugins list 确认已安装,必要时重启 Harness 生效

插件以当前 dsh 进程的权限运行,安装时可能执行代码。请先通读仓库源码与许可证,确认无破坏性命令与越权访问;本站只做索引,不对第三方插件安全性作担保。

代码仓库github.com/coderdailyone/dsh-plugin-web-search-tavily
许可证MIT
主要语言main
下载量1
GitHub 星标1
最近推送2026-08-14
收录日期2026-09-19
分类工具与能力

事实信息来自公开插件目录快照(2026-10-01),介绍文案由本站再加工。

以下为插件仓库 README 全文(原始内容,由公开目录抓取整理)。

# dsh-plugin-web-search-tavily

English | [中文](README.zh.md)

A community [Tavily](https://tavily.com) search provider for [DeepSeek Harness](https://github.com/deepseek-ai/deepseek-harness) (`dsh`). It registers a `WebSearchProvider` into the `ctx.web` capability seam, so the shipped `web_search` tool can be served by Tavily without touching any model-facing schema.

Ships as a **dsh bundle**: installing it into a profile inserts its plugin row automatically.

## Install

```sh
dsh plugin --profile web add dsh-plugin-web-search-tavily
```

Provide the API key through the environment (`TAVILY_API_KEY`, e.g. in `$DSH_HOME/.env`) or through plugin config. When more than one search provider is usable in your composition, pin the selection with `$DSH_WEB_SEARCH_PROVIDER=tavily` or by patching the `web` row's `searchProvider` in your profile's `cordis.patch.yml`; with Tavily as the only usable provider, selection is automatic.

Verify without booting, then boot:

```sh
dsh --profile web --dump-config   # shows a "# == dsh-plugin-web-search-tavily" layer
dsh --profile web
```

## Config

Override any field by patching the `web-search-tavily` row in your profile's `cordis.patch.yml` (a patch replaces the whole `config` value — restate the fields you keep):

| Key | Default | Meaning |
|---|---|---|
| `apiKey` | `$TAVILY_API_KEY` | Tavily API key. Empty makes the provider registered-but-unavailable. |
| `baseURL` | `https://api.tavily.com` | Endpoint base; `/search` is appended. |
| `searchDepth` | `basic` | Tavily `search_depth`. `advanced` returns richer snippets at extra credit cost. |
| `topic` | `general` | Tavily `topic` vertical (`general` or `news`; `news` populates `publishedAt`). |
| `includeAnswer` | `true` | Request Tavily's generated answer; it surfaces as the search result's `content`. |
| `numResults` | *(omitted)* | Default result count when a request carries no `maxResults`. The seam still enforces the tool-layer bound either way. |

```yaml
- id: web-search-tavily
  config:
    searchDepth: advanced
    includeAnswer: false
```

## Behavior

- `POST {baseURL}/search` with `Authorization: Bearer `, honoring the request `AbortSignal`; redirects are refused.
- `results[].content` maps to `snippet`, `published_date` to `publishedAt`; entries without a non-blank snippet are dropped rather than padded with invented text.
- A non-blank `answer` maps to the result's `content`; nothing is fabricated when Tavily returns none.
- Cancellation surfaces as `WebError` code `WEB_ABORTED`; every other failure (transport, non-2xx, unprocessable body) is `WEB_PROVIDER_ERROR` with the richest provider detail available and a preserved `cause` chain. A non-2xx JSON error body's `detail.error` / `detail` / `error` / `message` fields are tried in that order.
- `available()` is a cheap local check (key present, base URL parseable, bounds valid) and never touches the network.

## Model Experience

### What the model sees

Nothing from this package directly. The model-facing `web_search` schema and rendering belong to `@deepseek-ai/dsh-tool-web`; this provider only changes which backend serves the call. Result `content` (Tavily's generated answer, when enabled) and per-source `title`/`snippet`/`publishedAt` flow through the tool's ordinary rendering.

### Token effect

`includeAnswer: true` adds one provider-generated answer paragraph to each search result the model reads. `searchDepth: advanced` tends to return longer snippets. Both are provider-output effects; the tool-layer `maxResults` bound is enforced by the seam regardless of provider.

### KV Cache effect

None. Search results enter the conversation as ordinary tool results; this package contributes no prompt sections and changes no request prefix.

## Development

```sh
npm install
npm run build
npm test                      # keyless: loopback double asserts wire shape and error taxonomy
TAVILY_API_KEY=tvly-... npm test   # adds the live smoke (self-skips without the key)
```

Keyless tests drive the real provider against a loopback HTTP double and assert the exact request shape (method, path, bearer header, user-agent, body fields), response mapping, the error taxonomy, and cancellation. The live smoke verifies the wire contract against the real API and self-skips without a key; it last passed against the live Tavily API at v0.1.1 (2026-08).

## Known Limitations and Deferred Work

- **The Tavily wire contract is pinned to its 2026-08 public documentation.** Field names (`search_depth`, `include_answer`, `max_results`) are this package's responsibility to track; the live smoke is the drift detector, last green against the live API at v0.1.1.
- **`include_domains` / `exclude_domains` / `days` are not exposed.** The seam's request carries only `query` and `maxResults` today; domain filtering would be provider config rather than a per-call control, and no consumer has asked for it yet.
- **No retry policy.** A transient Tavily failure surfaces as one `WEB_PROVIDER_ERROR`; retrying is left to the caller or a future seam-level policy, matching the in-tree providers.
- **dsh is in developer preview.** This package pins `@deepseek-ai/dsh-web` to the currently published pre-release; expect lockstep bumps while upstream iterates.

## License

MIT

数据来源:公开的 DeepSeek Harness 插件目录与各插件 GitHub 仓库。本站为独立第三方目录,与 DeepSeek、幻方(High-Flyer)及插件作者均无隶属或背书关系。

每日精选 Skill 推荐,免费送到你邮箱

输入邮箱,每天接收一个精选 AI Agent 技能推荐。完全免费,持续更新。

提交后我们会发送一封确认邮件,点击邮件里的链接才会开始收信。

完全免费,取消任意时间。我们不会发送垃圾邮件。