前言¶
DeepSeek Harness(DSH)的 web_search 工具默认通过一个 pinned seam 连接到 DeepSeek 托管的提供者,该提供者要求传入 DEEPSEEK_API_KEY。如果没有该密钥,工具会直接报错并中断执行。
dsh-keyless-search 插件通过注册一个无 Key 的提供者并重定向 seam,使 web_search 工具能够在无需 API Key、账户或配置的情况下工作。
这是什么¶
这是一个为 DeepSeek Harness web_search 工具提供 Keyless 网络搜索能力的插件。它由 OzzyDeng-JunDeng 维护,遵循 MIT 许可证。
其核心作用是绕过默认的 Key 依赖,让开发者或智能体在没有配置密钥的情况下进行网络搜索。
安装与启用¶
安装过程仅需要一条命令。该插件在 npm 上注册为 dsh-keyless-search,并声明了 dsh.bundle,因此 dsh plugin add 会自动将其附加到 dsh.profile.bundles 中。
- 安装插件:
dsh plugin --profile <your-profile> add dsh-keyless-search
-
验证生效:
在新的会话中启动时,插件会自动注册提供者并覆盖默认的 web_search seam。 -
卸载插件:
dsh plugin --profile <your-profile> remove dsh-keyless-search
后端选择与配置¶
插件支持多个后端,搜索按顺序进行,第一个返回非空结果的后端胜出。
默认启用的后端包括:
* Tavily:通过其官方 Keyless 模式访问。
* Firecrawl:通过其官方 Keyless tier 访问。
可选后端(默认禁用):
* Bing RSS:通过 Bing 结果 RSS feed 搜索。
* Bing HTML:通过 Bing 结果页 markup 搜索。
由于 Bing 的 robots.txt 限制了爬虫对 /search 路径的访问,默认情况下 Bing 后端是关闭的。若需启用,需要修改配置。
可以通过 YAML 文件或环境变量进行配置。
YAML 配置示例(位于 profile 的 cordis.patch.yml):
- id: keyless-search
name: dsh-keyless-search
config:
searchBackends: tavily,firecrawl
timeoutMs: 15000
debug: false
bingHost: cn.bing.com
bingMarket: zh-CN
环境变量覆盖:
* KEYLESS_SEARCH_BACKENDS
* KEYLESS_SEARCH_TIMEOUT_MS
* KEYLESS_SEARCH_DEBUG=1
文本安全与行为¶
插件在运行时具有以下特性:
- 零依赖:模块没有静态导入,可以在没有任何依赖包的 profile 中加载。
- 文本硬化:为了防止外部网页内容破坏 DSH 消费者的格式(例如链接注入或 HTML 注入),插件会对提供者返回的文本进行转义和标准化处理,将敏感字符替换为转义序列,并包裹在边界标记中。
- 失败处理:如果所有后端均失败,插件会抛出包含具体后端原因的错误,而不是静默返回空结果。
- 速率限制:Keyless 层级有速率限制。Tavily 的 Keyless 层级为每月 1000 个积分。如果需要更高的限制,可以稍后添加
TAVILY_API_KEY或FIRECRAWL_API_KEY,插件会自动升级。
适用场景与注意¶
该插件主要用于需要快速原型设计或测试 web_search 能力,且暂时不想配置 API Key 的场景。
注意事项:
1. 功能范围:该插件仅注册搜索提供者,不提供 web_fetch 功能。
2. Node.js 版本:运行环境需满足 Node.js >= 18。
3. Bing 后端:启用 Bing 后端属于“有意为之”的配置,因为它会请求搜索引擎的私有接口。
4. 安全:插件运行在当前 DSH 进程的权限下,安装前建议检查源码。
总结¶
dsh-keyless-search 解决了 DeepSeek Harness 默认搜索工具对 API Key 的强依赖问题,通过 Tavily 和 Firecrawl 的 Keyless 模式提供了开箱即用的搜索能力。配合 YAML 或环境变量配置,可以灵活切换后端并控制行为。