前言¶
DSH 的插件生态强调「一切皆插件」。对于需要在 DeepSeek Harness 中使用 Tavily 的开发者来说,问题往往不是能否发出搜索请求,而是搜索控制参数能否传到后端、API key 能否在设置里安全填写、补丁能否检查和恢复。
dsh-tavily-search-provider 就是围绕这些问题做的一个 DeepSeek Harness 插件。下面介绍它的定位、核心能力、安装方式、典型用法和注意事项。DSH 社区插件目录是独立站点,不等于 DeepSeek 官方应用商店。
这是什么¶
xiaohj233/dsh-tavily-search-provider 是一个 DeepSeek Harness 插件,包名为 dsh-tavily-search-provider,许可证为 MIT。维护者为 xiaohj233。
它的一句话定位是:为 DSH 提供 Tavily search provider,包含完整搜索控制映射、基于 credentials 的 key UI,以及受保护的 rc.6 兼容补丁。
它不是第一个或唯一 Tavily 集成,不替代 DSH provider registry,也不自行抓取页面。
核心功能¶
1. 注册独立的 tavily_search 工具¶
- 注册独立的
tavily_search工具。 - 返回 Tavily 形状的结果集。
- 支持已声明的完整搜索控制参数。
2. 可选为官方 web_search 提供 Tavily 后端¶
- 可为 DSH 官方
web_search工具提供 Tavily 后端。 - 同时保留官方结果和卡片形状。
- 支持
replaceOfficialSearch和searchMaxResults设置。
3. 映射完整的 Tavily 搜索控制参数¶
插件会映射以下搜索控制参数:
search_depthtopictime_rangemax_resultsinclude_domainsexclude_domainsinclude_answerinclude_raw_content
需要注意,官方 DeepSeek search provider 会忽略 Tavily-specific controls。这个插件的重点,是在 Tavily 路径下保留这些搜索控制项。
4. 提供 Settings 中的 TAVILY_API_KEY 控件¶
插件在 Settings -> Plugins -> Tavily Search 中提供只写 TAVILY_API_KEY 控件,并基于 DSH credentials。
相关行为包括:
TAVILY_API_KEY的修改按调用生效,无需重启。- 空白 draft 保留当前值。
- 非回环明文 HTTP 上会禁用 key set/unset,应使用
localhost/loopback 或 HTTPS。
5. 提供状态路由¶
插件提供 /api/tavily-search-provider/status 状态路由,返回不携带密钥值的状态。
6. 提供受保护的 rc.6 兼容补丁¶
插件对以下目标提供受保护补丁:
@deepseek-ai/dsh-tool-web@0.1.0-rc.6@deepseek-ai/dsh-host-apiproxy@0.1.0-rc.6
补丁操作包括 status、apply 和 restore。其中 apply 和 restore 幂等,restore 严格版本保护。补丁策略默认为 adaptive;strict programmatic mode 恢复 exact-version-only 行为。
7. 提供 DNS 污染/fake-IP 场景下的网络韧性¶
自 v0.3.5 起,插件提供 DNS 污染/fake-IP 场景下的网络韧性层,使用 DoH、IP 字面量查询和系统解析器回退。
安装与启用¶
环境要求¶
使用该插件需要:
- DeepSeek Harness
0.1.0-rc.6 - Node.js
^22.19.0 || >=24 - pnpm
>=10 - Tavily API key
安装¶
使用官方安装命令:
dsh plugin --profile web add "github:xiaohj233/dsh-tavily-search-provider#v0.2.0"
这里有一个版本差异需要注意:官方安装命令固定为 #v0.2.0,而 package.json 显示版本为 0.3.6,README 也提到自 v0.3.5 起提供网络韧性层。请仍按官方命令原文安装,并留意版本标签差异。
安装后重启一次¶
安装后需要重启一次,使 guarded boot application 能补丁 clean rc.6 targets。
由于补丁可能涉及已加载模块,修改已加载模块时需要重启。
典型用法¶
配置 TAVILY_API_KEY¶
打开:
Settings -> Plugins -> Tavily Search
在其中填写并保存 TAVILY_API_KEY。
配置时要注意:
- 该控件是只写控件,基于 DSH credentials。
- 空白 draft 会保留当前值。
- 非回环明文 HTTP 上会禁用 key set/unset,建议使用
localhost/loopback 或 HTTPS。
检查补丁状态¶
在 web profile 目录中运行:
pnpm --dir "$DSH_HOME/profiles/web" exec dsh-tavily-search-provider status
这条命令用于检查当前补丁状态。
应用补丁¶
确认状态后,可以应用补丁:
pnpm --dir "$DSH_HOME/profiles/web" exec dsh-tavily-search-provider apply
这条命令用于应用受保护补丁。
恢复补丁¶
如果需要回到未打补丁状态,运行:
pnpm --dir "$DSH_HOME/profiles/web" exec dsh-tavily-search-provider restore
这条命令用于恢复补丁目标。
卸载前先恢复补丁¶
如果准备卸载,先恢复补丁,再移除插件:
pnpm --dir "$DSH_HOME/profiles/web" exec dsh-tavily-search-provider restore
dsh plugin --profile web remove dsh-tavily-search-provider
inspect-only 启动¶
如果只想检查、不自动应用补丁,可以将 autoApplyPatches 设置为 false,进行 inspect-only 启动。
测试命令¶
仓库提供以下测试命令:
npm test
npm run check
npm pack --dry-run
适用场景与注意¶
适合谁¶
这个插件适合以下情况:
- 使用 DeepSeek Harness
0.1.0-rc.6。 - 需要把 Tavily 搜索接入 DSH,并保留完整搜索控制参数。
- 希望通过 DSH 设置卡管理
TAVILY_API_KEY。 - 需要检查、应用或恢复 rc.6 兼容补丁。
- 关注 DNS 污染/fake-IP 场景下的搜索可用性。
不适合谁¶
以下情况要谨慎:
- 需要非
0.1.0-rc.6版本时,需要自行验证补丁目标是否匹配,因为补丁仅针对 rc.6。 - 需要插件自行抓取页面时,这个插件不自行抓取页面。
- 需要把域名过滤器当作内容安全边界时,不适合。
include_domains和exclude_domains是搜索约束,不是内容安全边界。 - 使用
include_raw_content时要意识到,它可能向模型上下文返回更多第三方页面内容。
密钥与权限注意¶
TAVILY_API_KEY仅出现在浏览器 draft 状态和本包创建的credentials.set请求中。- 该 key 不存储于插件设置、工具结果、普通日志或状态响应。
- DSH 插件会以当前 dsh 进程权限运行,安装前应检查源码与许可证。
- 本包许可证为 MIT;补丁目标为 MIT 许可,另见
THIRD_PARTY_NOTICES.md。
结尾¶
dsh-tavily-search-provider 的价值不在于简单增加一个 Tavily 入口,而是把完整搜索控制映射、凭据设置卡、状态检查和受保护补丁管理放在同一套可检查、可恢复的流程里。
GitHub 地址:https://github.com/xiaohj233/dsh-tavily-search-provider