前言¶
DeepSeek Harness(DSH)的 ctx.web 能力 seam 對接了一個 web_search 工具,模型通過該工具發起搜索請求。DSH 的官方 @deepseek-ai/dsh-web-search-deepseek 提供商使用 DeepSeek 內置的搜索接口,但在需要使用其他搜索引擎時,需要額外引入一個 provider。@xiaolizi0v0/dsh-web-search-serper 就是爲了解決這個問題:它把 Serper 的 Google 搜索 API 註冊到 ctx.web seam 下,並提供一個直接可用的 serper_search 工具。
插件定位¶
@xiaolizi0v0/dsh-web-search-serper 是一個 Cordis bundle,把 Serper 的搜索後端接入 Harness 的 ctx.web 能力 seam,遵循官方 provider 的接口形狀。它只負責傳輸和結果映射,模型側的 web_search schema 仍由 @deepseek-ai/dsh-tool-web 擁有,插件同時也註冊了一個 serper_search 工具供直接調用。
核心功能¶
- 註冊 provider:在
ctx.webseam 下注冊 id 爲serper的 provider。 - 接口形狀:提供
name、inject、Config、apply,以及id、available()和search(request, signal)。 - 請求與映射:向
https://google.serper.dev/search發送 POST 請求,將 Serper 返回的organic映射爲 seam 的sources[](link→url、title、snippet、date→publishedAt),並對結果按 URL 去重;將answerBox.answer/answerBox.snippet映射爲可選的 providercontent;拒絕重定向(redirect: "error")。 - 配置項:
web-search-serper命名空間下的配置包括apiKey(支持明文與憑據服務)、apiKeyEnv(默認SERPER_API_KEY)、endpoint(默認https://google.serper.dev/search,可通過環境變量SERPER_SEARCH_ENDPOINT回退)、gl/hl(默認us/en)、num(默認 10,範圍 1–100)、page(默認 1)、includeAnswerBox(默認true,將 Serper 的 answer box 作爲 provider answer)、tool(默認true,註冊serper_search工具)、toolMaxResults(默認 8,工具對結果數量的限制)、toolTimeoutMs(默認 30000,工具的 cooperative timeout budget)。 - 工具
serper_search:一個獨立的工具,直接調用該插件的 provider 對象,無需在 seam 中配置searchProvider。工具參數包括必填的query,以及可選的type(organic|news)、page(1–10)、maxResults、gl、hl,這些可選參數會回退到插件配置。工具對結果應用toolMaxResults限制,並報告truncated;呈現使用card: "web"/kind: "search"視圖,與官方 web 工具保持一致。 - 錯誤碼:無憑據時爲
WEB_PROVIDER_CREDENTIAL_MISSING(包括無 key 或 Serper 返回 401/403);調用取消時爲WEB_ABORTED;傳輸/provider/unmappable body 時爲WEB_PROVIDER_ERROR(會指明 endpoint)。 - 安裝:可通過 DSH 1024Store 或官方命令安裝 npm 包
@xiaolizi0v0/dsh-web-search-serper,或作爲本地 bundle 安裝。
安裝與啓用¶
從 DSH 1024Store 目錄(npm 包名 @xiaolizi0v0/dsh-web-search-serper)安裝:
dsh1024 plugin --profile web add @xiaolizi0v0/dsh-web-search-serper
# 或官方命令
dsh plugin --profile web add @xiaolizi0v0/dsh-web-search-serper
也可作爲本地 bundle 安裝(需用 plugin_manager: action install_bundle, target <絕對路徑>)。
安裝後,在 profile patch 中添加以下配置以將 web_search 路由到 Serper provider:
- id: include:web
config:
searchProvider: serper
安裝後需重啓 profile(如果插件模塊已加載,替換已安裝包需要重新生成 JavaScript 模塊),瀏覽器端只需重新渲染即可。
典型用法¶
在 profile patch 中配置 searchProvider: serper 後,模型通過 web_search 工具發起搜索,該工具會通過 seam 調用 Serper provider。例如,在 Chat 工具中直接提問,模型會調用 web_search,由 Serper provider 執行搜索並返回結構化結果。
直接調用 serper_search 工具(無需配置 searchProvider):
{
"query": "deepseek harness",
"type": "news",
"page": 2,
"maxResults": 5
}
query 爲必填字段,type 爲 organic 或 news,page 爲 1–10,maxResults、gl、hl 可選並回退到插件配置。工具會對結果應用 toolMaxResults 限制並報告 truncated,呈現爲 card: "web" / kind: "search" 視圖。
適用場景與注意¶
- 適合在需要使用 Google 搜索結果、或需要調用 Serper API 的場景下,作爲 DSH
ctx.web的補充 provider。 - 插件以當前 DSH 進程的權限運行,安裝前應檢查源碼與許可證。
web_search路徑依賴searchProvider配置,需在 profile patch 中明確路由;serper_search工具不依賴該配置,可直接使用。
結尾¶
@xiaolizi0v0/dsh-web-search-serper 把 Serper 的 Google 搜索能力接入 DSH 的 web 能力 seam,並提供一個可直接調用的 serper_search 工具,方便在 DSH 生態中集成第三方搜索引擎。插件目錄頁與源碼倉庫見下:
- DSH 插件目錄頁
- GitHub 倉庫