DeepSeek Harness 聯網兜底鏈插件

前言

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

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜