前言¶
DeepSeek Harness(DSH)內置了 web_search 和 web_fetch,但默認後端不一定滿足所有人的需求:有人已有自建 SearXNG,有人需要通過代理轉發搜索請求,也有人希望抓取到的內容直接是乾淨的正文而非整頁 HTML。
dsh-search-tools 把“搜索/抓取後端”從 DSH 核心解耦出來。所有配置在 DSH Web GUI 的 設置 → 搜索工具 完成,不要求用戶手改 YAML。插件向 DSH 註冊穩定的 provider id,切換後端不會改變 DSH 的 web.searchProvider。新增後端只需註冊 adapter,設置頁按 manifest 自動渲染,無需改頁面代碼。此外還提供 web_research 工具,一次調用完成“搜索 + 抓取前 N 條正文”,適合需要頁面內容而非只拿鏈接的模型回合。
插件不提供公共搜索 API,不繞過目標站點的登錄/付費牆,也不替代 DSH 的權限與沙箱模型。渲染能力取決於抓取 adapter:readable-http 不執行頁面 JavaScript;可選的 wire-http 在本地做瀏覽器級 HTTP/TLS 指紋和 PDF 文本提取,同樣不執行頁面 JavaScript;可選的 jina-reader 把公網 URL 交給 Reader 服務做瀏覽器渲染(自託管時留在本機),三者都不登錄、不繞過付費牆、不破解驗證碼。
插件信息¶
- 插件名稱:dsh-search-tools
- 維護者:ThzxxArt
- 分類:聯網工具
- 倉庫版本:0.1.9(2026-10-24)
- 許可證:MIT
- GitHub:https://github.com/ThzxxArt/dsh-search-tools
- 目錄頁:https://www.skillhub.cn/plugins/ThzxxArt/dsh-search-tools
核心功能¶
穩定的搜索/抓取 provider¶
dsh-search-tools:穩定的搜索 provider iddsh-search-tools-fetch:穩定的抓取 provider id
這兩個 provider id 永不隨後端變化,切換後端時不會影響 DSH 的 web.searchProvider。
內置搜索 adapter¶
SearXNG¶
- 多實例支持:可配置順序/輪詢、故障轉移
- 輸出格式:支持 JSON 和 HTML
- 請求方式:支持 GET/POST
- 認證方式:支持 Bearer 和 Basic
- 功能:代理、緩存、分頁、域名過濾
本地直連搜索 adapter(可選)¶
Local Direct¶
- 本機直接請求 DuckDuckGo 和 Bing 的公開 HTML 結果頁
- 可選啓用 Brave Search 或 360 搜索
- 本地解析、去重、RRF 融合、域名多樣性、緩存
- 不需要部署服務、API key、Reader 或瀏覽器,不執行頁面 JavaScript
內置抓取 adapter¶
Readability HTTP¶
- 複用 DSH 安全 HTTP
- 使用 Readability 提取正文,失敗時可回退原文
- 不執行頁面 JavaScript
本地強抓取 adapter(可選)¶
Wire HTTP¶
- 使用
impit本地瀏覽器級 TLS/HTTP2 指紋 - 逐跳公網出口 pinning
- 支持 Readability 和 PDF 文本提取
- 不需要 Reader/Key/瀏覽器/容器,不執行頁面 JavaScript
可選渲染抓取 adapter¶
Jina Reader¶
- 瀏覽器渲染
- 支持 PDF/Office、CSS 選擇器、iframe/Shadow DOM
- 代理選項
- 目標必須是公網地址,Reader 可託管或自託管
研究工具¶
web_research¶
- 搜索、按併發抓取前 N 頁
- 按頁/總預算截斷
- 返回來源與正文
工作原理¶
DSH ctx.web
searchProvider = "dsh-search-tools" (穩定)
fetchProvider = "dsh-search-tools-fetch" (穩定)
│
▼
SearchDispatcher / FetchDispatcher
│ 讀取 config.search.adapter / config.fetch.adapter
▼
ctx.searchTools(adapter 註冊表)
├── searxng 內置搜索 adapter(默認)
├── local-direct 內置搜索 adapter(本機直連 DDG + Bing)
├── readable-http 內置抓取 adapter(默認,DSH 安全 HTTP)
├── wire-http 內置抓取 adapter(可選,本地瀏覽器級 HTTP + PDF)
├── jina-reader 內置抓取 adapter(可選,Reader 渲染)
└── 未來由獨立包註冊的 adapter
關鍵設計:
- provider id 穩定,adapter 可換。增加後端不會改變
web.searchProvider,也不要求 DSH 重啓後重新註冊 provider。 - 配置按 section 開放。
search.adapters和fetch.adapters是開放字典,adapter 擁有默認值與校驗邏輯;核心 schema 不需要爲每個後端加字段。 - manifest 驅動設置頁。Host 路由把 adapter manifest 發給瀏覽器,頁面按
fields通用渲染;新增 adapter 不需要改 React 代碼。 - 配置在調用時解析。Dispatcher 每次按當前配置選擇 adapter;切換後不需要重新註冊 provider。
環境要求¶
- DSH:
>=0.2.1-rc.2 <0.3.0 - Node.js:
^22.19.0 || >=24.0.0 - 搜索後端:
Local Direct(不需要部署,直接查 DDG/Bing)- 或一個可訪問的 SearXNG 實例
- 也可暫時保持 DSH 默認搜索
- 抓取後端:公網
http(s)頁面 readable-http由 DSH SSRF 防護攔截內網wire-http在本地逐跳 pin 公網地址jina-reader在發出前做公網目標守衛- Reader(可選):
r.jina.ai的 API key- 或一個可訪問的自託管 Jina Reader 端點
- 不配置時繼續用
readable-http或wire-http - 瀏覽器:DSH Web GUI(設置頁只在 Web 端註冊)
DSH 本身仍是 preview 軟件,接口可能變化。插件把 peer 範圍鎖在已驗證的 0.2.1-rc.2 線,升級 DSH 前請先看 CHANGELOG。
安裝與啓用¶
方式一:Web UI(推薦)¶
- 打開 DSH Web GUI。
- 進入 插件。
- 點擊 添加插件。
- 輸入包名:
dsh-search-tools
- 安裝完成後啓用這個 bundle。
- 打開 設置 → 搜索工具。
設置頁出現,說明 Host 與瀏覽器兩半都已加載。
方式二:CLI¶
dsh plugin --profile <profile> add dsh-search-tools
<profile> 換成實際 profile 名。安裝後啓動該 profile:
dsh --profile <profile>
方式三:離線 tarball¶
從 GitHub Releases 下載最新可用的 dsh-search-tools-<version>.tgz,然後:
dsh plugin --profile <profile> add ./dsh-search-tools-<version>.tgz
發佈資產與 npm 產物字節一致,適合內網或無法訪問 npm 的環境。
升級¶
DSH 插件目前不支持自動更新。升級步驟:
- 先在 設置 → 搜索工具 → 概覽 關閉搜索/抓取接管(如果已開啓)。
- 在 插件 頁卸載舊版本。
- 重新添加
dsh-search-tools或新的 tarball。 - 重新啓用,檢查設置頁配置是否保留(配置在 profile 的 YAML patch 中,通常不會因重裝丟失)。
- 重新測試搜索與抓取。
CLI 對應:
dsh plugin --profile <profile> remove dsh-search-tools
dsh plugin --profile <profile> add dsh-search-tools
不要在接管仍開啓時直接卸載。內置 web_search 會指向一個不存在的 provider,直到你重裝插件或手動恢復 web.searchProvider。
安裝後檢查¶
- 設置 → 搜索工具 能看到五個頁籤。
- 診斷 裏能看到版本號、配置文件路徑、抓取/研究運行狀態和緩存統計。
- 如果模型工具已啓用,會話裏應能看到
web_research。 - 搜索測試通過後,才建議開啓搜索接管。
典型用法¶
使用 Local Direct 進行零配置搜索¶
- 打開 設置 → 搜索工具 → 搜索。
- 在 後端 選擇
Local Direct。 - 勾選 DuckDuckGo / Bing / Brave Search / 360 搜索 中至少一個,按需選擇市場、安全搜索、結果數。
- 不需要實例或密鑰。點 測試搜索引擎 可檢查可達性。
- 點擊 保存並應用。
使用 SearXNG 實例¶
- 打開 設置 → 搜索工具 → 搜索。
- 在 後端 選擇
SearXNG。 - 點擊 添加實例,填寫實例地址(
http(s)絕對 URL,例如https://searx.example.com)。 - 備註名可選。按需設置引擎、分類、語言、安全搜索、分頁、結果數、超時。
- 需要認證時選擇
Bearer/Basic並保存密鑰。 - 點擊 測試,確認返回結構化來源。
- 點擊 保存並應用。
使用 Readability HTTP 抓取正文¶
- 打開 抓取 頁籤。
- 保持 Readability HTTP,使用默認值。
- 測試一個公網頁面,例如
https://example.com。 - 如果需要回退原文,可在配置中啓用“失敗時回退原文”。
使用 Jina Reader 抓取動態內容或 Office 文件¶
- 在 抓取 頁籤選擇
Jina Reader。 - 託管服務:填
https://r.jina.ai/,在 Jina API key 保存密鑰。 - 自託管:填
http://127.0.0.1:3000/(僅 loopback 允許明文 HTTP)或 HTTPS 反代地址。 - 需要動態內容時把 Fetch engine 設爲
browser。 - 需要新鮮內容時打開 Bypass Reader cache。
使用 web_research 一次性獲取搜索與正文¶
- 在會話中調用
web_research。 - 在配置中指定搜索與抓取 adapter。
- 設置抓取頁數或總預算。
- 插件會執行搜索,併發抓取前 N 頁,返回來源與正文。
適用場景與注意¶
適合需要自定義搜索/抓取後端、希望將搜索與抓取從 DSH 核心中解耦的開發者與研究者。
注意:
- 插件以當前 dsh 進程的權限運行,安裝前應檢查源碼與許可證。
- DSH 目前是 preview 軟件,接口可能變化。
- 插件把 peer 範圍鎖在已驗證的
0.2.1-rc.2線,升級 DSH 前請先看 CHANGELOG。
短結尾¶
dsh-search-tools 通過 adapter-first 的設計,讓 DeepSeek Harness 的搜索與抓取能力更易擴展與組合,配置集中在 Web 設置頁,切換後端不改變 provider id,適合需要靈活後端組合的場景。更多細節與文檔見 GitHub 倉庫。