前言¶
給 DSH 接入聯網能力時,一個常見的問題是:內置或已有方案可能要求先配置 API key,或者只能依賴單一後端,一旦後端限流,任務就停下來。fno2010/dsh-web-search-ext 解決的是這個問題:它是一個面向 DeepSeek Harness(DSH)的多後端 web_search 與 web_fetch provider,可以完全不帶 API key 使用,也可以加入 key 來解鎖更高限額。
下面介紹它的定位、能力、安裝方式和使用時需要注意的點。
這是什麼¶
fno2010/dsh-web-search-ext 是 DSH 的一個聯網擴展插件,維護者爲 fno2010,許可證爲 MIT。
它提供兩個後端:Exa 和 Firecrawl,用於 web_search 和 web_fetch。它的核心賣點是:
- 無需 API key 即可工作;
- 可選配置 API key,以提升限額;
- 在後端失敗時自動切換後端;
- 對結果做存活校驗,並在結果中展示來源、耗時、結果數和限制說明。
該插件要求 Node.js 版本爲 >=22。它是 plain ESM JavaScript,沒有 build step,也沒有 postinstall / prepare 安裝腳本。
核心能力¶
雙後端與 keyless 路徑¶
該插件同時使用 Exa 和 Firecrawl 兩個後端。
對於 web_fetch,它提供 keyless 路徑:先通過 Firecrawl scrape 抓取 URL,失敗時回退到 Exa 的 anonymous MCP web_fetch_exa。
key 是可選的。配置優先級爲:
settingsliteral- credentials service
- launch environment variable
這裏有兩個使用上的區別需要注意:
- keyless Exa MCP 是文檔中公開的 fallback,但有限額,可能返回
HTTP 429; - Firecrawl keyless mode 是非官方模式,可能被限流或移除。
自動 failover 與 429 cooldown¶
當某個後端出現以下情況時,插件會自動切換到下一個後端:
429401/402/4035xx- network error
- malformed body
對於 429,插件會按後端做 cooldown。cooldown 時間會參考後端返回的 Retry-After 或 retry_after_seconds,並受 maxCooldownSec 限制。
結果校驗與來源說明¶
默認啓用 L0 liveness 校驗。每個返回結果會被標記爲以下狀態之一:
alive
dead
blocked
timeout
unreachable
skipped
插件還提供實驗性的 L1 content verification,可通過配置項開啓:
"verifyLevel": "content"
搜索結果還會附帶 provenance receipt,展示實際響應後端、耗時、結果數量,以及當前路徑的限制說明。
插件支持 freshness window:
24h
7d
30d
只有當前端或後端支持時纔會發送。
安裝與啓用¶
先安裝插件:
dsh plugin --profile web add @fno2010/dsh-web-search-ext
如果你使用本地 checkout,也可以這樣安裝:
dsh plugin --profile web add ./path/to/dsh-web-search-ext
安裝插件後,需要重啓正在運行的 dsh web 進程。重啓之後,再修改配置是 hot 的,不需要再次重啓。
安裝後,插件的 bundle selection 會設置:
web.searchProvider: web-search-ext
web.fetchProvider: web-search-ext
也就是說,web_search 和 web_fetch 都會指向 web-search-ext 這個 provider。
典型用法¶
經過上面的安裝和重啓,可以在 Web 端使用插件提供的配置入口。
使用 Web settings card¶
在 Web 的插件配置卡片中,可以配置六個核心配置字段,以及兩個 API key。
注意 freshness window 仍然只在 settings.yaml 中配置,不在這個卡片中配置。
查看 Session Health¶
Session Health tab 使用這個接口:
GET /web-search-ext/health
health payload 只包含 counters,不包含 credentials、URLs 或 query text。
運行 connectivity probe¶
connectivity probe 使用這個接口:
POST /web-search-ext/probe
probe payload 只包含 plan literals 和 closed codes,不包含 vendor messages、URLs 或 keys。
使用 slash command¶
插件提供 /search-engine slash command,用於切換 preferred backend、查看 live status,並運行 connectivity test。
如果 /search-engine 已經被佔用,插件會回退到:
/web-search-engine
適用場景與注意¶
這個插件適合以下場景:
- 你想在 DSH 中給
web_search和web_fetch增加多後端能力; - 你希望先不配置 API key 跑通鏈路;
- 你希望在某個後端限流或失敗時,自動切到另一個後端;
- 你希望在結果中看到實際後端、耗時、結果數量和限制說明;
- 你希望在 Web 端通過 settings card、health tab 和 slash command 管理該 provider。
使用前注意以下幾點:
- 該插件運行在當前
dsh進程權限下,安裝前應檢查源碼和許可證; - keyless 路徑可能有限額;
- Firecrawl keyless mode 是非官方模式,可能被限流或移除;
- 如果當前 web seam 沒有 pin 到這個 provider,插件會優雅降級,不會聲稱其他 provider 的結果。
獲取信息¶
社區目錄頁:
https://www.skillhub.cn/plugins/fno2010/dsh-web-search-ext
GitHub 倉庫:
https://github.com/fno2010/dsh-web-search-ext