前言¶
DeepSeek Harness(DSH)的 ctx.web 能力是智能体开发中常用的一环,但内置的 web_fetch 在目标站点不可达或被反爬时统一返回 HTTP 404,搜索则是一次完整的模型调用,且官方 Exa provider 使用精确 peer 版本,DSH 小版本升级就会在启动时被禁用。
@wjunhere/dsh-web-providers 针对这些问题提供了一套解决方案,通过构建有序的兜底链,让模型无感知地自动切换后端。
插件定位¶
这是一个为 DeepSeek Harness 提供的联网工具插件,维护者为 wjunhere。它为 DSH 的 ctx.web 能力提供搜索与抓取 provider,内部采用有序兜底链机制,支持 Exa/Tavily/Jina 三家后端的组合使用。
核心价值在于:对外仍是单个 provider,web_search / web_fetch 工具不变;模型无感知;前一后端失败时自动换下一个。
核心功能¶
搜索链¶
搜索链的顺序为:exa → tavily → jina-search,注册为 provider id dsh-search。
- Exa 返回
sources[](无 highlight 的结果被丢弃) - Tavily 返回 title/url/content(content 截 500 字符当 snippet)
- Jina Search 返回 title/url/description
任一成功即返回,全部失败时报 WEB_PROVIDER_ERROR 并附每段失败原因。
抓取链¶
抓取链的顺序为:jina → tavily extract,注册为 provider id dsh-fetch。
- Jina 返回
{ url, statusCode: 200, body: { kind: 'text', content } },正文前带标题 - 失败(非 2xx、空正文、正文过短、拦截页)后回退 Tavily Extract 的
raw_content
两链都遵守调用方 AbortSignal,每段有独立超时。
安装与启用¶
在 DSH profile 目录(例如 ~/.dsh/profiles/<name>)安装:
npm install @wjunhere/dsh-web-providers
把包加进 package.json 的 dsh.profile.bundles:
{
"dsh": { "profile": { "bundles": ["...", "@wjunhere/dsh-web-providers"] } }
}
再在 profile 的 cordis.patch.yml 里 pin 两个 provider:
- id: web
name: "@deepseek-ai/dsh-web"
config:
searchProvider: dsh-search
fetchProvider: dsh-fetch
重启 DSH 生效。
配置说明¶
凭据默认从启动环境的 EXA_API_KEY / TAVILY_API_KEY / JINA_API_KEY 读取,也可以写在 config 里(优先级高于环境变量)。
核心配置项:
- insert:
- id: web-providers
name: '@wjunhere/dsh-web-providers'
config:
search:
order: [exa, tavily, jina] # 搜索链顺序
fetch:
order: [jina, tavily] # 抓取链顺序
exa:
apiKey: '' # 空则读 EXA_API_KEY
baseURL: https://api.exa.ai
proxyUrl: ''
searchType: auto # auto / keyword / neural
highlightsPerResult: 1
timeoutMs: 20000
tavily:
apiKey: '' # 空则读 TAVILY_API_KEY
baseURL: https://api.tavily.com
proxyUrl: '' # 大陆网络通常需要
searchDepth: basic # basic / advanced
extractDepth: basic
numResults: 5
maxContentChars: 100000
timeoutMs: 20000
jina:
apiKey: '' # 空则读 JINA_API_KEY
baseURL: https://r.jina.ai
searchBaseURL: https://s.jina.ai
proxyUrl: ''
timeoutMs: 30000
maxContentChars: 100000
minContentChars: 50
allowAnonymous: false
适用场景与注意¶
适合需要增强 DSH 联网能力的开发者,特别是:
- 目标站点经常返回 404 或反爬,需要多后端兜底
- 需要更精准的英文技术内容检索(Exa 语义召回)
- 希望避免因 DSH 版本升级导致官方 provider 被禁用
注意:插件以当前 dsh 进程权限运行,安装前应检查源码与许可证。
限制¶
- Tavily Extract 对反爬站点同样可能失败(如 Reddit);这类只能走浏览器路径。
- Exa 需要 API key;Jina 匿名模式只有 20 RPM(带 key 500 RPM)。
总结¶
@wjunhere/dsh-web-providers 通过构建有序的搜索与抓取兜底链,为 DeepSeek Harness 的 ctx.web 能力提供了更健壮的联网方案。它让模型无感知地自动切换后端,解决了目标站点不可达、反爬、版本依赖等问题,适合需要增强 DSH 联网能力的开发者。
插件目录页:https://www.skillhub.cn/plugins/wjunhere/dsh-web-providers
GitHub:https://github.com/wjunhere/dsh-web-providers