把内置搜索换成 Tavily,并加上爬站与深度研究工具
30/100
综合分
0
GitHub 星标
—
npm 周下载
—/5
用户评分
数据截至 2026/10/12 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add wjh-ux/dsh-mcp-tavily该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:待复验
是什么
dsh 原生插件 · search
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 20 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码v2.7.0🟢 扫描:未发现敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0静态扫描未发现敏感能力:最多只发网络请求、读取自身元数据或只读文件,未发现执行命令、文件写入或敏感信息读取。
发起外部网络请求
查看扫描证据(共 1 处,展示前 1 条)
- 发起网络请求index.js:207
res = await fetch(`${TAVILY_HOST}/search`, {
扫描于 2026/11/2(0 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
依赖的 DSH / Cordis 模块
@deepseek-ai/schemastery@deepseek-ai/cordis@deepseek-ai/dsh-credentials@deepseek-ai/dsh-launch-environment@deepseek-ai/dsh-web给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
功能亮点
- 提供网页搜索
- 提供爬站工具
- 提供深度研究工具
Tavily 网页搜索插件,把 Tavily 远程 MCP 服务器接进 DeepSeek Harness(dsh),以插件包形式提供
README
由 DeepSeek 最新模型翻译生成dsh-mcp-tavily
给 DeepSeek Harness(dsh)用的 Tavily 联网搜索 —— 一个插件包,分两半:让内置的 web_search 改由 Tavily 的 API 供货,并桥接 Tavily 托管的远程 MCP 服务器,用于 crawl / map / research。API Key 在插件面板的小卡片里填。不用本地服务器,不用 npx,不用构建。
Why / 为什么
DSH 内置的 web_search 由 DeepSeek 自己的端点供货:每次搜索都是一整轮辅助模型调用,按你 DeepSeek 账户的 token 计费。本插件包把这条缝改指向 Tavily,并在上面加上 Tavily 的 MCP 工具,于是日常检索花的是 Tavily 的免费月度额度(1,000/月),重活 —— crawl / map / research —— 也才用得上。
Tools added / 新增工具
| Tool | What it does / 作用 |
| web_search | 内置工具,对模型来说没变 —— 现在由 Tavily 作答。
展开完整文档(README 剩余 1 节)
dsh-mcp-tavily
给 DeepSeek Harness(dsh)用的 Tavily 联网搜索 —— 一个插件包,分两半:让内置的 web_search 改由 Tavily 的 API 供货,并桥接 Tavily 托管的远程 MCP 服务器,用于 crawl / map / research。API Key 在插件面板的小卡片里填。不用本地服务器,不用 npx,不用构建。
Why / 为什么
DSH 内置的 web_search 由 DeepSeek 自己的端点供货:每次搜索都是一整轮辅助模型调用,按你 DeepSeek 账户的 token 计费。本插件包把这条缝改指向 Tavily,并在上面加上 Tavily 的 MCP 工具,于是日常检索花的是 Tavily 的免费月度额度(1,000/月),重活 —— crawl / map / research —— 也才用得上。
Tools added / 新增工具
| Tool | What it does / 作用 |
| web_search | 内置工具,对模型来说没变 —— 现在由 Tavily 作答。 |
| mcp__tavily__tavily_search | 联网搜索 —— 支持 include_domains、exclude_domains、time_range、search_depth: advanced |
| mcp__tavily__tavily_extract | 提取指定 URL 的可读内容(markdown / text) |
| mcp__tavily__tavily_map | 列出站点的 URL 结构 |
| mcp__tavily__tavily_crawl | 爬取整个站点并提取内容 |
| mcp__tavily__tavily_research | 多来源研究报告 |
服务器暴露资源时,还能读 MCP 资源(list_mcp_resources / read_mcp_resource)。
Install / 安装
from GitHub (recommended)
dsh plugin --profile web add github:wjh-ux/dsh-mcp-tavily
or from a local checkout
dsh plugin --profile web add link:/absolute/path/to/dsh-mcp-tavily
重启一次 dsh —— 插件包和它们的补丁在启动时解析。
Visual configuration / 可视化配置
Key 直接在 UI 里输入,不需要环境变量。
Plugins -> dsh-mcp-tavily —— 卡片就在插件包页面上,夹在描述和它的行之间。同一张表单也能从那一行的 Configure 控件进入。
| Control | Meaning |
| API Key | Tavily 的 key(tvly-...),以密钥形式写入凭据层(TAVILY_API_KEY)—— 绝不写进设置文件,也绝不写进本仓库。 |
| Show / Hide | 保存前先看一眼草稿。 |
| Save / Clear key | 存下或清除凭据。 |
状态行读的是凭据存储,所以它说的正是当前生效的是哪个来源:
| Status | Meaning |
| Tavily API key configured | 已存在凭据层 —— 卡片管着它,可以替换或清除。 |
| Supplied by the launch environment's TAVILY_API_KEY (read-only here) | key 来自启动 dsh 那个进程的环境。凭据库拒绝遮蔽它,所以保存按钮是禁用的:想让卡片接管这个 key,先删掉那个环境变量。 |
| No key on the credentials plane ... | 两个来源都没有 key;搜索走 Tavily 免费的限流无 key 模式。 |
生效时机:内置 web_search 每次请求都重新解析 key,所以卡片里保存后立即生效;MCP 工具在挂载时固定请求头,新 key 需要下次重启才对它们生效。
Key 解析顺序
1. 插件配置里显式写的 apiKey,前提是某个设置界面能提供;
2. 凭据库,按 apiKeyEnv 引用查找(默认 TAVILY_API_KEY);
3. 进程环境,同一个引用;
4. 都没有,就走 Tavily 免费的限流无 key 模式。
两半用的是同一个函数,所以卡片也能给 MCP 工具配 key。
不用卡片配置
Windows — then fully restart dsh setx TAVILY_API_KEY "tvly-..." macOS / Linux
export TAVILY_API_KEY=tvly-...
在 <https://app.tavily.com> 领免费 key(每月 1,000 credits,不用信用卡)。什么都不配,两半也能靠 Tavily 的无 key 模式跑起来——只支持 search 和 extract(没有 crawl / map / research),限流也更低。
计费
- 免费:每月 1,000 credits;basic 搜索 = 1 credit,advanced 搜索 = 2 credits;
- 超出免费额度:每 credit $0.008(Tavily 定价,可能变动);
- 用量面板:<https://app.tavily.com>。
兼容性
- 已在 Windows 上对照 dsh 0.2.0-rc.2 验证(@deepseek-ai/dsh-mcp-client 0.2.0-rc.2)。
- 宿主那一半依赖 MCP 客户端的 serverName / transport / url / headers 配置字段,以及 ctx.web 的搜索服务商接缝。
- 卡片需要 dsh 的客户端支持 plugins.bundle.config 槽位,并且包级有 dsh.client manifest。旧版本上宿主两半照样能跑,只是没有卡片。
- @deepseek-ai/schemastery 是可选的:没有它,服务商照样运行,只是不暴露由 schema 生成的设置表单。
安全
- 本仓库里没有密钥,补丁里也没有。 key 放在凭据库($DSH_HOME/.credentials.yaml,或你的 dsh 挂载的存储)里,或者放在你的环境里。
- key 绝不写进 URL,否则会泄漏到日志和代理里。
- 出站流量只有一条 HTTPS 连接,指向 https://mcp.tavily.com/mcp/,外加 api.tavily.com 搜索端点;发过去的只有你的查询和本插件的 user agent(适用 Tavily 自己的条款)。
安装时不运行任何脚本,安装阶段不编译任何东西。
Implementation notes / 实现要点
这个包里有四件事,是因为 dsh 自身的模块与服务接线要求才存在的。也正因如此,这个 bundle 才是有用的参考,而不只是五个 YAML 文件。
1. 客户端那一半必须自注册。 client.js 开头就是
window.__ModuleLoader__.load({ id: "dsh-mcp-tavily", factory: (require) => { ... } })。dsh 的浏览器
侧是一张懒加载 CJS 模块表;一个只导出 factory 的文件(或者顶层写 return module.exports)在那里就是语法错误,报错会以 web boot: 1 entry did not activate 的形式出现 —— 而 Web UI 还在正常加载,很容易看错。
2. exports.inject 接收的是服务名,不是包名。 client.js 声明的是 ["slots", "locale", "remote", "remote.credentials"]。必须先加载的包列在 package.json 的 dsh.client.inject 下;把包名写进模块的 inject,会让 cordis 去找根本不存在的服务。
3. 用 link: 安装的插件,没法用普通 import() 加载 harness 包。 Node 从这个包自己的目录开始解析,而 link 安装在那里没有 @deepseek-ai/dsh-mcp-client。Cordis loader 可以,因为它按 harness 自己的模块根目录解析 —— 补丁插入的那一行正是这样按名字找到包的。所以 index.js 用的是
ctx.loader.internal.import(name, ctx.loader.baseUrl, {})。
4. credentials 服务商在插件之后才挂载。 因此在 apply 期间解析密钥会找不到服务,静默降级成无密钥,卡片里保存的密钥看起来就像「被忽略了」。index.js
用 ctx.inject(["credentials"], (child) => ...) 等待,并带一个有界回退,这样即使某个组合没有挂载任何凭据服务商,它的工具依然可用。
卡片对凭据应答做防御式解析,也是同一个原因:远程调用返回 { ok, value },而 describe 返回一张按引用作键的映射 —— value.TAVILY_API_KEY —— 其中每一项是
{ configured, source?, writable },永远不含密钥本身。
Manual install without the CLI / 手工安装
通过配置档的 cordis.patch.yml 添加这个 bundle;插件会自己插入一行,并挂载自己的 MCP 客户端,所以不要再为 tavily 加一行 @deepseek-ai/dsh-mcp-client —— 重复的 serverName 会被拒绝:
profile cordis.patch.yml
- id: web
config:
searchProvider: tavily
fetchProvider: http
- insert:
- id: web-search-tavily
name: dsh-mcp-tavily
web 覆盖会替换掉那一项的整个 config,所以 fetchProvider 必须重新写一遍;不写的话,第二个 fetch 服务商会让网页抓取以 WEB_PROVIDER_AMBIGUOUS 失败。
Related work / 相关工作
- @pymodel/dsh-tavily
(PyModel/dsh-research-plugins)—— 同样的底子,但机制更多:一张设置卡片、凭据平面上的密钥、DeepSeek 内置搜索与 Tavily 之间的开关、连接测试,开箱即用且无需密钥。
- dsh-plugin-web-search-tavily —— 只做一件事:把内置的 web_search 后端换成 Tavily。如果你只需要这个,那它很合适。
这个包介于两者之间:既是搜索服务商,也是 MCP 工具族,从一张卡片配置密钥,无需构建步骤,也不捆绑运行时依赖。三者注册的 serverName 相同,或者占用同一个接缝,所以只能选一个 —— 不要把两个 Tavily 服务商并排安装。
License / 许可
MIT —— 见 LICENSE。
Tavily 是第三方服务;本项目与 Tavily 或 DeepSeek 均无关联。预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
wjh-ux/dsh-mcp-tavily
把内置搜索换成 Tavily,并加上爬站与深度研究工具
相关插件 · 搜索 / 抓取
LLM 知识平台Tencent/WeKnora
概览 ·快速开始 ·新特性 ·功能 ·客户端 ·文档 ·开发
★ 36,161已汉化DSH
72.1
智能体记忆系统MemTensor/MemOS
MemOS 2.0 Stardust星尘
★ 12,195已汉化DSH
71.2
跨代理记忆库zilliztech/memsearch
跨平台语义记忆,专为 AI 编程智能体打造。
★ 2,799已汉化DSH
70.9
技能语料库EverMind-AI/SkillCorpus
SkillCorpus 能给你什么
★ 694已汉化DSH
69.7
代码图谱记忆syncable-dev/memtrace-public
你的智能体值得拥有结构化记忆。
★ 509已汉化MCP
67.9
AnySearch 搜索插件anysearch-team/anysearch-dsh
AnySearch 网页搜索服务商,为 DeepSeek Harness(DSH)提供高级搜索工具
★ 457已汉化DSH
66.6