前言¶
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