Back to home

faettt

dsh-web-search-tavily

Tavily web search provider for DeepSeek Harness (DSH): provider + tavily_search tool + settings card with enable switch

Stars
1
Language
JavaScript
Created
Aug 16, 2026
Updated
Aug 16, 2026

Introduction

dsh-web-search-tavily

Tavily 配置为 DeepSeek Harness(DSH)网页搜索提供方的持久化插件。注册搜索提供方 tavily(接管 web_search 路由)、tavily_search 模型工具,并在「设置 → 插件 → 插件配置」提供配置卡片,可随时开关 Tavily、切换回 DeepSeek 默认搜索通道。

特性

  • 搜索提供方:注册 tavily provider,web_search 工具整体走 Tavily(answer + 来源 + 可选图片)。
  • 模型工具tavily_search 工具,模型可显式调用。
  • 设置卡片:设置 → 插件 → 插件配置 →「Tavily 搜索」卡片,可视化配置全部选项。
  • 一键开关:关闭后 web_search 自动回退 DeepSeek 默认搜索通道,无需改动组合配置。
  • 凭据安全:API Key 走 DSH 凭据服务(环境变量 / ~/.dsh/.credentials.yaml),配置端不落盘密钥。
  • 重启持久:配置存于 ~/.dsh/settings.yaml,随 profile 持久化。

安装

  1. 将本包加入 profile 依赖(~/.dsh/profiles/web/package.json):

    {
      "dependencies": {
        "dsh-web-search-tavily": "github:faettt/dsh-web-search-tavily"
      }
    }
    

    然后 pnpm install

  2. cordis.patch.yml 追加两段(接管搜索路由 + 加载插件):

    - insert:
        - id: web-search-tavily
          name: 'dsh-web-search-tavily'
          config:
            apiKeyEnv: TAVILY_API_KEY
    
    - id: web
      config:
        searchProvider: tavily
    
  3. 配置 API Key(二选一):

    • 环境变量:export TAVILY_API_KEY=tvly-xxxx(加到 ~/.zshrc
    • 或直接在设置卡片「API Key」字段填写保存
  4. 重启 DSH。

配置项

字段默认说明
enabledtrue开关;关闭后搜索走默认通道
apiKeyEnvTAVILY_API_KEY凭据引用名(环境变量/凭据服务)
apiKey字面 API Key(secret,不走设置文档)
searchDepthbasicbasic / advanced
maxResults5每次搜索最多来源条数(1-20)
includeAnswertrue是否生成总结 answer
includeImagesfalse是否附带图片结果
topicgeneralgeneral / news / finance
days仅搜索最近 N 天内容
registerTooltrue是否注册 tavily_search 模型工具

架构说明

  • Host 半部lib/index.js):Tavily provider(ctx.web.registerSearchProvider)、tavily_search 工具、设置命名空间 web-search-tavilyinstallSettingsSection)、配置端点 GET/POST /api/tavily-settingswebServer 路由,host 直读写 settings,避开 wire 层命名空间暴露白名单)。
  • Client 半部lib/client.js):设置卡片(settings.plugin.item 槽位),通过同源 fetch 读写配置端点。
  • 开关原理enabled=false 时 provider available() 返回 false,并将 web.searchProviderId 置为 undefined——dsh-web 的选择逻辑自动落到唯一可用通道(DeepSeek 默认搜索)。

开发

# 本地验证 host 半部
node --input-type=module -e 'import("dsh-web-search-tavily").then(m => console.log(Object.keys(m)))'

# client bundle 为手写 ModuleLoader 格式,修改后同步两份:
cp lib/client.js ../../node_modules/dsh-web-search-tavily/lib/client.js

修改 host 半部后需重启 DSH;修改 client bundle 后由 HMR 自动生效(刷新浏览器即可)。

License

MIT