前言¶
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 或環境變量配置,可以靈活切換後端並控制行爲。