前言¶
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。
注意事项与限制¶
- 无设置页面:DSH 0.2 版本无法挂载此插件的设置面板,所有配置必须通过 profile patch 完成。
- 页面抓取未变:
fetch(页面内容获取)功能未受影响,仍由@deepseek-ai/dsh-web-fetch-http处理。 - 时间字段缺失:由于 Tavily 搜索结果不包含发布日期,
sources[].publishedAt字段不会被设置。
总结¶
该插件为 DSH 提供了一个基于 Tavily 的真实搜索引擎接入点,解决了原生搜索消耗 Token 的问题。对于需要低成本、高质量网络检索的场景,这是一个直接的替换方案。