dsh-tavily-search
Tavily AI search provider for DeepSeek Harness
- Stars
- 0
- Language
- JavaScript
- Created
- Sep 1, 2026
- Updated
- Sep 2, 2026
Introduction
tavily-search
DeepSeek Harness(DSH)Web 搜索插件:用 Tavily API 接管模型的 web_search 工具,替换 DeepSeek 官方搜索 —— 官方搜索每次触发都消耗一轮模型调用,Tavily 更便宜、更快。密钥经 credentials 服务存入凭证库,保存后即时生效。
设计原则:即插即用、零残留。插件只注册
tavily搜索提供方 + 一个设置页;API Key 每次搜索实时从凭证库解析,不滞留在提供方实例上;卸载后除凭证库里你自己存的 Key 外无任何残留。
功能
| 部分 | 内容 |
|---|---|
| Host(lib/index.js) | 注册 tavily WebSearchProvider 到 ctx.web;API Key 每次搜索实时解析 TAVILY_API_KEY;注册两个同源 JSON 路由(/ext/tavily/state、/ext/tavily/test,带同源校验)供设置页读写状态与测试连通性 |
| Client(client.js) | 「设置 → Tavily 搜索」配置页:提供方状态徽章、密钥写入/显示/清除(走 api 网关 credentials 域)、连接测试(输入查询 → 返回结果列表)。UI 全部使用 DSH 官方设计 token(dsw-alias-*),与官方设置页风格一致 |
搜索请求体:api_key / query / max_results(1-10) / search_depth: basic / include_answer: false;返回统一投影为 { sources: [{url, title?, snippet?, publishedAt?}], truncated }。
安装(推荐:GitHub)
dsh plugin --profile web add github:Yinxe/dsh-tavily-search
dsh plugin 把参数转发给 profile 目录里的 pnpm,装完自动把插件写进 profile 的 dsh.profile.bundles 挂载列表 —— 无需手动改任何配置文件。
一键 AI 安装:把下面这段直接发给你的 DSH AI(复制即用,无需修改):
帮我安装 Tavily 搜索插件(GitHub 仓库 Yinxe/dsh-tavily-search,包名 @dshp-inx/tavily-search):
1. 执行 dsh plugin --profile web add github:Yinxe/dsh-tavily-search
2. 检查 ~/.dsh/profiles/web/cordis.patch.yml:若已有 id: web 且带 config 的条目,给它追加 searchProvider: tavily 字段;若没有,在文件末尾追加:
- id: web
config:
searchProvider: tavily
(官方 DeepSeek 搜索与 Tavily 并存时必须显式选型,否则 web seam 抛 WEB_PROVIDER_AMBIGUOUS)
3. 重启 web 服务(dsh web),确认重启无报错
4. 告诉我如何配置 Tavily API Key(设置页入口路径 + 测试方法)
重启生效:
dsh web
选型说明:若你的 profile 同时启用官方搜索插件(dsh-web-search-deepseek),两个提供方并存时必须显式选型,在 ~/.dsh/profiles/web/cordis.patch.yml 追加:
# 显式选中 Tavily 作为 web 搜索提供方(否则 web seam 抛 WEB_PROVIDER_AMBIGUOUS)
- id: web
config:
searchProvider: tavily
只有一个可用提供方时 DSH 自动选中它,此选型行可省略。
验证:打开 web 页面 → 设置 → Tavily 搜索,能看到「Tavily AI 搜索」卡片即安装成功。
配置密钥
- 注册 tavily.com(有免费额度),取
tvly-…格式的 API Key; - 设置 → Tavily 搜索 → 粘贴密钥 → 保存密钥。「API Key」行变绿(已配置)、「搜索引擎」行显示「Tavily · 当前生效」即接管完成;
- 在连接测试框输入任意查询点「运行测试」,返回结果列表即全链路通。
密钥通过 DSH credentials 服务持久化到 ~/.dsh/.credentials.yaml,不回显、不进模型上下文;写入/清除即时生效,无需重启。
更新
dsh plugin --profile web update "@dshp-inx/tavily-search" --latest
dsh web
update --latest 会让 pnpm 重新解析 GitHub 仓库的最新 commit 并更新 lockfile;重启后生效。
安装(备选:clone 源码 + 本地 link)
适合想改源码、或 GitHub 不可达的场景。clone 后用 add ./<目录> 安装 —— 依赖按插件真实包名(@dshp-inx/tavily-search)登记,后续 update / remove 与 GitHub 安装完全一致。link 安装的源码改动即时生效(client 半刷新页面即可,host 半需重启 dsh web):
git clone git@github.com:Yinxe/dsh-tavily-search.git ~/.dsh/plugins/tavily-search
cd ~/.dsh/plugins
dsh plugin --profile web add ./tavily-search
dsh web
add ./<目录>的相对路径按你执行命令时所在的目录解析,先cd到插件目录的父级再执行。 ⚠️ 不要直接编辑node_modules/@dshp-inx/tavily-search/里的文件:pnpm 的安装文件与内容寻址 store 硬链接,直接覆盖会连带改坏 store。改源码请改 clone 出来的源码目录。
link 方式的更新就是 git pull(源码目录)+ 刷新页面/重启。
卸载
dsh plugin --profile web remove "@dshp-inx/tavily-search"
remove 会自动从 dsh.profile.bundles 撤下挂载。收尾:
- 若曾加过
web.searchProvider: tavily选型行,删除它(否则指向不存在的提供方); - (可选)清除密钥:设置页点「清除密钥」;
dsh web重启;clone 安装的再删掉~/.dsh/plugins/tavily-search目录即可。
常见问题
- 报「Tavily 搜索缺少 API Key」:设置页配置密钥,或检查
~/.dsh/.credentials.yaml是否有TAVILY_API_KEY。 WEB_PROVIDER_AMBIGUOUS:patch 层缺web.searchProvider: tavily选型行。- 设置页没有这张卡片:确认 profile
package.json的dsh.profile.bundles含@dshp-inx/tavily-search,且依赖已装上。 - 测试报 403:路由带同源校验(
Origin必须与Host一致或缺失),经非同源代理访问会拒绝 —— 直接从浏览器访问 web 端口即可。
代码结构
lib/index.js Host 半:tavily 搜索提供方 + 两个同源 JSON 路由
client.js Client 半:__ModuleLoader__ bundle,设置页 UI(DSH 官方设计 token)
cordis.patch.yml bundle 层 patch:仅 insert 挂载行