DeepSeek Harness Web Plugin: Tavily Search Integration

前言

DeepSeek Harness (DSH) 提供了一个用于联网能力的接口 ctx.web。默认情况下,DSH 的 web_search 工具依赖模型本身进行搜索。这种方式需要消耗模型 Token,且结果集来源于模型请求。这个插件通过接入 Tavily 的专用搜索 API,将 ctx.web 的搜索路由切换为真实的搜索引擎索引,从而在保证结果质量的同时,实现零模型 Token 消耗。

插件定位

这是一个为 DSH 的 ctx.web 统一接口提供的 WebSearchProvider 实现,由用户 cxykyw 维护。
它的核心作用是:
1. 在 ctx.web 上注册 ID 为 tavily 的搜索提供者。
2. 将 Tavily 的返回结果映射为 DSH 标准的 WebSearchResult 格式。
3. 在每次搜索时动态解析 API 密钥。

安装

插件发布在 npm 上,包名为 dsh-tavily-cxykyw(注意与同名仓库的区别)。
在 DSH 的 Web profile 目录下执行安装命令:

dsh plugin --profile web add dsh-tavily-cxykyw

如果当前目录是 pnpm workspace 根目录(默认 ~/.dsh/profiles/web 即为此类),需要添加 -w 标志:

dsh plugin --profile web add dsh-tavily-cxykyw -w

安装完成后,需要重启 dsh web,因为 bundle 变更不支持热重载。

配置 API 密钥

在使用前,需要从 app.tavily.com 获取 API Key。

插件会在每次搜索时按以下顺序解析密钥:
1. 字面量配置
2. 凭证服务(~/.dsh/.credentials.yaml)
3. 环境变量

方式一:凭证文件(推荐,不随仓库泄露)
在 ~/.dsh/.credentials.yaml 中添加:

TAVILY_API_KEY: tvly-xxxxxxxxxxxxxxxx

方式二:环境变量
启动 DSH 的进程环境变量:

TAVILY_API_KEY=tvly-xxxxxxxxxxxxxxxx dsh web

方式三:Profile Patch
在 ~/.dsh/profiles/web/cordis.patch.yml 中直接配置(不推荐,明文存储):

- id: web-search-tavily
  config:
    apiKey: tvly-xxxxxxxxxxxxxxxx

使用与选项

插件注册后,DSH 会自动将 web.searchProvider 指向 tavily。
通过 profile patch 可以调整搜索深度和结果数量:

- id: web-search-tavily
  config:
    searchDepth: advanced
    maxResults: 5
  • searchDepth:可选 basic(快速,1积分)或 advanced(深度抓取,更多积分)。
  • maxResults:每次搜索返回的结果数,范围 1-20。

注意事项与限制

  1. 无设置页面:DSH 0.2 版本无法挂载此插件的设置面板,所有配置必须通过 profile patch 完成。
  2. 页面抓取未变:fetch(页面内容获取)功能未受影响,仍由 @deepseek-ai/dsh-web-fetch-http 处理。
  3. 时间字段缺失:由于 Tavily 搜索结果不包含发布日期,sources[].publishedAt 字段不会被设置。

总结

该插件为 DSH 提供了一个基于 Tavily 的真实搜索引擎接入点,解决了原生搜索消耗 Token 的问题。对于需要低成本、高质量网络检索的场景,这是一个直接的替换方案。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

Xiaoye