moguiyu/dsh-tavily
Tavily Search for DSH:多API密钥、轮换/故障转移、用量仪表盘、设置卡片。
项目介绍Project Overview
dsh-tavily 是 DeepSeek Harness 的可选 Tavily 网页搜索插件,在不替换内置 web_search 的前提下提供额外搜索能力。支持多 API Key 管理、轮询与 401/429 自动故障切换、实时用量仪表盘,并在设置 → 插件中提供配置卡片。高级 tavily_search 工具默认关闭,可按需启用以使用深度、主题、域名过滤等 Tavily 原生参数。需要 DSH 0.1.0-rc.7 或更高版本。
dsh-tavily is an opt-in Tavily web search plugin for DeepSeek Harness that adds search capability without replacing the built-in web_search. It supports multiple API keys with round-robin rotation and automatic failover on HTTP 401/429, a live per-key usage gauge, and a native settings card under Settings → Plugins. The advanced tavily_search tool is off by default and exposes Tavily-native parameters independently of web_search. Requires DSH 0.1.0-rc.7 or newer.
请帮我了解并安装插件:【dsh-tavily】【https://github.com/moguiyu/dsh-tavily】
把上面这条消息直接发给当前会话里的 DSH,让它帮你了解并安装。安装命令不一定准确,发给 DSH 更稳。Send this message to DSH in your current session. CLI install commands may not be accurate across systems — DSH will figure it out for you.
或使用命令行安装(适合开发者)Or use CLI install (for developers)
命令行安装CLI Install
dsh plugin --profile web add github:moguiyu/dsh-tavily
把 moguiyu/dsh-tavily 加入你的 DSH 配置(web profile)即可启用。
READMEREADME
dsh-tavily
English | 简体中文
Tavily web search for DeepSeek Harness (DSH) as an opt-in extra search tool — with multiple API keys, rotation/failover, live usage gauge, and a settings card in the Plugins configuration tab.
The built-in web_search tool is never replaced: Tavily is an option on top of the native search, not a swap-in for it. This plugin registers no web-search provider and never rewrites web.searchProvider.
Highlights
- 🧩 Plugin-config settings card — a native card under Settings → Plugins → plugin configuration: add, remove and reveal keys, pick the key-usage strategy, and opt into the advanced
tavily_searchtool. - 🔑 Multiple Tavily API keys — manage a flat key list from the DSH settings UI.
- 🔁 Key rotation & failover — round-robin across keys; automatically retries on HTTP 401/429.
- 📊 Live usage gauge — per-key Tavily usage and totals, fetched server-side without exposing keys.
- 🚫
web_searchuntouched — noctx.webprovider is registered; the card switch only enables/disables the extratavily_searchtool.
Install
One command installs the workspace bundle, which composes the combined dsh-tavily row:
dsh plugin --profile web add github:moguiyu/dsh-tavily
After refreshing the browser, the Tavily Search card appears under Settings → Plugins → plugin configuration. It only appears when the Host half is actually composed — the configuration tab dispatches the card keyed by the namespace the Host serves.
Requirements — DSH is a development preview (
0.1.0-rc.x); the keyed plugin-config card needs 0.1.0-rc.7 or newer. The npm name is the scoped@moguiyu/dsh-tavily, not the similarly-named communitydsh-tavilyprovider-swap plugin.
Packages
| Package | Role |
|---|---|
@moguiyu/dsh-tavily |
Recommended plugin: tavily_search tool + settings card + local backend + tavily-search namespace |
@moguiyu/dsh-tavily-backend |
Standalone settings backend (key manager, usage, tool switch) |
@moguiyu/dsh-tool-tavily-search |
Standalone advanced tavily_search tool (no UI) |
Credentials
TAVILY_API_KEYS— comma-separated key list;tavily_searchrotates through it, retrying on HTTP 401/429.TAVILY_API_KEY— primary key auto-synced to the first key.
Both are managed automatically by the settings card. Keys never leave the server unmasked, and no state file holds key material.
Key usage strategy
- Rotate each key — round-robin; on 401/429 the next key is tried.
- Lowest usage first / Highest usage first — re-order keys by live Tavily usage on save.
Advanced tavily_search tool
The advanced model-facing tool is opt-in and off by default. It exists for direct Tavily-only parameters (search_depth, topic, days, domain filters, include_answer, include_raw_content) and is independent of web_search:
- enabling it never changes the default
web_search(the built-in DeepSeek provider stays, along with its native schema); - disabling it only unregisters the extra
tavily_searchtool.
The switch lives in the tavily-search settings namespace (settings.yaml) and is mirrored to ~/.dsh/tavily-tool.json so every restart reads the same value.
State files
~/.dsh/tavily-manager.json— saved key dates + strategy~/.dsh/tavily-tool.json— advanced tool{ "enabled": boolean }(mirror of the settings namespace)~/.dsh/tavily-toggle.json— legacy pre-0.2 tool state; read for migration only
Mode 600, no secrets stored.
Development
pnpm install
pnpm test
pnpm build
License
MIT
nexu-io/open-design
ruvnet/ruflo
amruthpillai/reactive-resume
esengine/DeepSeek-Reasonix
volcengine/OpenViking
Molunerfinn/PicGo
titanwings/distilly
titanwings/colleague-skill