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 默认搜索通道。
特性
- 搜索提供方:注册
tavilyprovider,web_search工具整体走 Tavily(answer + 来源 + 可选图片)。 - 模型工具:
tavily_search工具,模型可显式调用。 - 设置卡片:设置 → 插件 → 插件配置 →「Tavily 搜索」卡片,可视化配置全部选项。
- 一键开关:关闭后
web_search自动回退 DeepSeek 默认搜索通道,无需改动组合配置。 - 凭据安全:API Key 走 DSH 凭据服务(环境变量 /
~/.dsh/.credentials.yaml),配置端不落盘密钥。 - 重启持久:配置存于
~/.dsh/settings.yaml,随 profile 持久化。
安装
-
将本包加入 profile 依赖(
~/.dsh/profiles/web/package.json):{ "dependencies": { "dsh-web-search-tavily": "github:faettt/dsh-web-search-tavily" } }然后
pnpm install。 -
在
cordis.patch.yml追加两段(接管搜索路由 + 加载插件):- insert: - id: web-search-tavily name: 'dsh-web-search-tavily' config: apiKeyEnv: TAVILY_API_KEY - id: web config: searchProvider: tavily -
配置 API Key(二选一):
- 环境变量:
export TAVILY_API_KEY=tvly-xxxx(加到~/.zshrc) - 或直接在设置卡片「API Key」字段填写保存
- 环境变量:
-
重启 DSH。
配置项
| 字段 | 默认 | 说明 |
|---|---|---|
enabled | true | 开关;关闭后搜索走默认通道 |
apiKeyEnv | TAVILY_API_KEY | 凭据引用名(环境变量/凭据服务) |
apiKey | — | 字面 API Key(secret,不走设置文档) |
searchDepth | basic | basic / advanced |
maxResults | 5 | 每次搜索最多来源条数(1-20) |
includeAnswer | true | 是否生成总结 answer |
includeImages | false | 是否附带图片结果 |
topic | general | general / news / finance |
days | — | 仅搜索最近 N 天内容 |
registerTool | true | 是否注册 tavily_search 模型工具 |
架构说明
- Host 半部(
lib/index.js):Tavily provider(ctx.web.registerSearchProvider)、tavily_search工具、设置命名空间web-search-tavily(installSettingsSection)、配置端点GET/POST /api/tavily-settings(webServer路由,host 直读写 settings,避开 wire 层命名空间暴露白名单)。 - Client 半部(
lib/client.js):设置卡片(settings.plugin.item槽位),通过同源 fetch 读写配置端点。 - 开关原理:
enabled=false时 provideravailable()返回 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