前言¶
DeepSeek Harness (DSH) 提供了一個用於聯網能力的接口 ctx.web。默認情況下,DSH 的 web_search 工具依賴模型本身進行搜索。這種方式需要消耗模型 Token,且結果集來源於模型請求。這個插件通過接入 Tavily 的專用搜索 API,將 ctx.web 的搜索路由切換爲真實的搜索引擎索引,從而在保證結果質量的同時,實現零模型 Token 消耗。
插件定位¶
這是一個爲 DSH 的 ctx.web 統一接口提供的 WebSearchProvider 實現,由用戶 cxykyw 維護。
它的核心作用是:
1. 在 ctx.web 上註冊 ID 爲 tavily 的搜索提供者。
2. 將 Tavily 的返回結果映射爲 DSH 標準的 WebSearchResult 格式。
3. 在每次搜索時動態解析 API 密鑰。
安裝¶
插件發佈在 npm 上,包名爲 dsh-tavily-cxykyw(注意與同名倉庫的區別)。
在 DSH 的 Web profile 目錄下執行安裝命令:
dsh plugin --profile web add dsh-tavily-cxykyw
如果當前目錄是 pnpm workspace 根目錄(默認 ~/.dsh/profiles/web 即爲此類),需要添加 -w 標誌:
dsh plugin --profile web add dsh-tavily-cxykyw -w
安裝完成後,需要重啓 dsh web,因爲 bundle 變更不支持熱重載。
配置 API 密鑰¶
在使用前,需要從 app.tavily.com 獲取 API Key。
插件會在每次搜索時按以下順序解析密鑰:
1. 字面量配置
2. 憑證服務(~/.dsh/.credentials.yaml)
3. 環境變量
方式一:憑證文件(推薦,不隨倉庫泄露)
在 ~/.dsh/.credentials.yaml 中添加:
TAVILY_API_KEY: tvly-xxxxxxxxxxxxxxxx
方式二:環境變量
啓動 DSH 的進程環境變量:
TAVILY_API_KEY=tvly-xxxxxxxxxxxxxxxx dsh web
方式三:Profile Patch
在 ~/.dsh/profiles/web/cordis.patch.yml 中直接配置(不推薦,明文存儲):
- id: web-search-tavily
config:
apiKey: tvly-xxxxxxxxxxxxxxxx
使用與選項¶
插件註冊後,DSH 會自動將 web.searchProvider 指向 tavily。
通過 profile patch 可以調整搜索深度和結果數量:
- id: web-search-tavily
config:
searchDepth: advanced
maxResults: 5
searchDepth:可選basic(快速,1積分)或advanced(深度抓取,更多積分)。maxResults:每次搜索返回的結果數,範圍 1-20。
注意事項與限制¶
- 無設置頁面:DSH 0.2 版本無法掛載此插件的設置面板,所有配置必須通過 profile patch 完成。
- 頁面抓取未變:
fetch(頁面內容獲取)功能未受影響,仍由@deepseek-ai/dsh-web-fetch-http處理。 - 時間字段缺失:由於 Tavily 搜索結果不包含發佈日期,
sources[].publishedAt字段不會被設置。
總結¶
該插件爲 DSH 提供了一個基於 Tavily 的真實搜索引擎接入點,解決了原生搜索消耗 Token 的問題。對於需要低成本、高質量網絡檢索的場景,這是一個直接的替換方案。