前言¶
在 DeepSeek Harness(DSH)裏做聯網,常見路徑是獨立搜索 API 或自帶抓取後端:web_search 工具拿到 query,再經 web.search 服務返回摘要與來源。若你已經在模型路由上配置了 OpenAI Responses、Anthropic Messages、Gemini 等提供商原生網頁搜索,卻希望 DSH 仍走同一套 web_search 契約,就需要一個 Host 插件把「託管搜索」掛到 DSH 的搜索提供方上,而不是在主聊天請求裏偷偷注入搜索工具或把普通模型回覆當成搜索結果。
下面介紹社區插件 DSH Native Search(dsh-native-search),維護者爲 luhcow,在 SkillHub 插件目錄 分類爲聯網工具。項目爲 MIT 許可,初始版本 0.1.0,GitHub 星標爲 0(以目錄頁爲準)。
這是什麼¶
DSH Native Search 是實驗性 Host 插件:把已連接模型提供商的原生託管網頁搜索接入 DSH 的 web.search 服務,供原有 web_search 工具使用。包名、插件條目 ID 與搜索提供方 ID 均爲 dsh-native-search。
與「多輪 Chat Completions 裏拼 $web_search」或「無證據就降級到別的後端」不同,本插件強調:嚴格單請求、無重試、無降級、無續接。每次插件搜索至多發出一次 HTTP POST;只發送當前搜索詞,不發送對話歷史,不修改 DSH 核心,也不把搜索工具注入主聊天請求。服務端可在這一次請求內部多次搜索,但插件不會把僅有引用鏈接或自由文本的回答僞裝成已驗收的搜索結果。
支持的協議與路由¶
協議選擇優先級爲:插件顯式 protocol > 模型 api > 路由 api > 未聲明 api 時的已知提供商默認值。已聲明但不支持的 api 會在發請求前失敗,不會因提供商名稱自動改打其他協議;顯式 protocol 表示你確認該端點實現了對應原生搜索協議,插件不會探測或回退。
| 協議 / 路由 | 要點 |
|---|---|
openai-responses(azure-openai-responses 同映射) |
POST /responses,tools: [{ type: "web_search", ... }];須有已完成的 web_search_call |
anthropic-messages |
POST /v1/messages,web_search_20250305;須有配對的 server_tool_use 與成功的 web_search_tool_result |
google-generative-ai |
models/{model}:generateContent,google_search;須有有效 webSearchQueries 或 web groundingChunks |
xai-responses |
xAI Responses web_search;須有已完成的 web_search_call |
copilot-responses |
Copilot Responses web_search;憑據須爲可用 token,不實現 OAuth 刷新 |
無 api 時,openai、anthropic、google、xai、github-copilot 使用上表默認協議。xAI / Copilot 適配仍屬實驗性。不實現 Moonshot $web_search 的 Chat Completions 多輪往返,也不提供 moonshot-chat;不支持普通 Chat Completions、Bedrock、Vertex、ChatGPT 訂閱 OAuth 或 openai-codex-responses 等範圍外的路由。
安裝與依賴¶
要求 Node.js 20.3.0+。peer 依賴對齊當前 DSH 0.2.0-rc.2(@deepseek-ai/dsh-web、dsh-settings、dsh-credentials、dsh-llm-pi-ai 等)。GitHub 公開源碼不等於已發佈到 npm;README 說明目前需從源碼打包後交給 profile 的插件管理器安裝(管理器解析運行時依賴並檢查版本兼容性)。
在已有插件源碼目錄中,可先跑單元測試再打包(測試不安裝 DSH 運行時、不讀憑據、不發真實搜索):
npm test
npm pack --ignore-scripts
將生成的 .tgz 交給目標 DSH profile 的插件管理器安裝。若管理器提示需要重啓,請重啓 DSH。安裝補丁會創建 dsh-native-search 條目,但不會自動切換搜索提供方;修改本地源碼也不會自動替換已安裝舊版本。
配置與啓用¶
先在 DSH 模型設置中配置對應路由的憑據;插件每次搜索重新解析引用,不緩存密鑰。內置 openai、anthropic、google、xai 可沿用默認端點與憑據環境變量名(OPENAI_API_KEY、ANTHROPIC_API_KEY、GEMINI_API_KEY、XAI_API_KEY)。github-copilot 無默認憑據名,須配置 apiKeyEnv。自定義路由在 llm-pi-ai 中提供 baseURL、apiKeyEnv 及可識別的 api(或在插件中顯式 protocol)。例如 xAI 聊天路由若聲明 api: openai-completions,須在插件中顯式 protocol: xai-responses 纔會走獨立 Responses 搜索接口。
插件配置示例(也可在 profile 補丁中按 ID 覆寫已安裝條目):
- id: dsh-native-search
config:
provider: anthropic
model: claude-sonnet-4-5
searchContextSize: medium
timeoutMs: 30000
- id: web
config:
searchProvider: dsh-native-search
provider 爲 DSH 模型路由 ID,model 爲該路由上支持託管搜索的模型 ID。searchContextSize 僅用於 OpenAI Responses。默認超時 30 秒,可配置,最多 5 分鐘。
最後一步:在 DSH Web 搜索配置裏手動將 searchProvider 選爲 dsh-native-search。未指定提供方且 DSH 自帶搜索與本插件同時可用時會報 WEB_PROVIDER_AMBIGUOUS。保留原有 fetchProvider:本插件只負責搜索,正文仍由現有抓取後端處理。未填寫模型與路由時插件會註冊但報告不可用。
請求與返回契約¶
- 純 query:OpenAI / xAI / Copilot 用
input: query,Anthropic 用單條 user message,Gemini 用 user text part;合法 query 逐字保留,不加 system 或「Search the web for…」前綴,也不帶歷史。 - 驗收看完成狀態與搜索證據:HTTP 200 不等於成功;Responses 須
status: completed且搜索調用完成;Anthropic 須stop_reason: end_turn且調用/結果配對;Gemini 須finishReason: STOP。未完成狀態(如 Anthropicpause_turn)直接失敗,不追加請求。 - 有搜索證據但來源爲空仍可能成功:例如 Anthropic 成功結果
content: [],或 Gemini 有查詢但無 grounding chunks,可返回sources: [];不會補造 URL 或把無來源文字稱爲有來源證實。 - 返回的是 DSH 的
content/sources/truncated服務契約;來源 URL 爲公開 http(s) 形態,摘要爲模型綜合回答。默認至多 8 條 URL,maxResults可調,上限 20;輸出最多 2048 tokens,query 上限 4096 字符,響應上限 2 MiB。
失敗時帶穩定 error.code(如 HOSTED_SEARCH_UNSUPPORTED、HOSTED_SEARCH_NOT_EXECUTED、HOSTED_SEARCH_INCOMPLETE 等),不重試、不回退到其他協議。
適用場景與注意¶
適合:已在 DSH 中配置 OpenAI Responses、Anthropic、Gemini、xAI Responses 或 Copilot Responses 等原生搜索能力,希望 Agent 的 web_search 與現有 fetchProvider 抓取鏈路分工明確,且能接受「一次搜索 = 一次獨立模型 POST、固定搜索模型不隨會話切換」的開發者。
注意:
- 插件在當前 DSH 進程權限下運行;安裝前應閱讀 GitHub 源碼 與 MIT 許可證,並在接受對應費用與數據邊界後做端到端驗收。
- 可用性取決於端點、模型、區域、賬號權限與工具支持;證據校驗按協議字段進行,並非對網關誠實性的獨立審計。
- Gemini 適配固定爲 generateContent,不是 Interactions API;面向最終用戶展示完整 grounding / Search Suggestions 時,需自行補齊官方展示要求,本插件契約不攜帶 Gemini
searchEntryPoint的完整展示數據。
撤銷 searchProvider 選擇或卸載插件即可恢復原搜索方案。
結尾¶
DSH Native Search 把「提供商原生託管搜索」以嚴格單請求、可驗證證據的方式接到 DSH web.search,與主聊天解耦,適合已有模型路由憑據、希望統一 web_search 入口的團隊。目錄頁:https://www.skillhub.cn/plugins/luhcow/dsh-native-search;源碼與說明:https://github.com/luhcow/dsh-native-search。