前言¶
DeepSeek Harness (DSH) 的 web_search 能力通常依賴於 HTTP 請求或網頁抓取。這種方式在面對反爬蟲機制或動態渲染的頁面時往往不夠穩定。dsh-web-search-opencli 插件提供了一個更直接的解決方案:它通過 OpenCLI 直接控制瀏覽器,調用 Google 的 AI Mode 進行搜索,並將結果規範地返回給 DSH。
這是什麼¶
dsh-web-search-opencli 是一個 DeepSeek Harness 插件,由用戶 sincerity711 維護。它註冊了一個 DSH ctx.web 搜索提供者。當智能體調用 web_search 時,該插件會通過 OpenCLI 驅動你的 Chrome 或 Edge 瀏覽器,打開 Google Search AI Mode (udm=50),等待 AI 回答,提取答案和引用來源,最後返回 DSH 標準的 WebSearchResult。
核心功能¶
- AI Mode 集成:將 Google AI Mode 的回答直接暴露給 DSH 的
web_search接口。 - 瀏覽器自動化:使用 OpenCLI 進行瀏覽器控制,而非不穩定的 HTTP 端點抓取。
- 來源提取:從 AI Mode 的引用和鏈接中提取來源 URL。
- Markdown 轉換:將 AI 回答的正文轉換爲 Markdown 格式。
- 會話複用:默認複用 OpenCLI 配置的瀏覽器會話標籤頁。
- 高度可配置:支持配置提供者 ID、OpenCLI 命令/會話/窗口模式、超時時間以及標籤頁清理策略。
安裝與啓用¶
使用官方推薦的安裝命令:
dsh plugin --profile web add dsh-web-search-opencli
在安裝前,建議先驗證 OpenCLI 的連接狀態:
opencli doctor
安裝後,DSH 會自動應用 cordis.patch.yml 中的配置,將 web 上下文的 searchProvider 設置爲 google-ai-mode。你可以通過以下命令檢查配置是否生效:
dsh --profile web --dump-config
配置說明¶
插件支持以下配置項(默認值在 cordis.patch.yml 中定義):
| 字段 | 默認值 | 說明 |
|---|---|---|
providerId |
google-ai-mode |
註冊到 ctx.web 的提供者 ID。 |
opencliCommand |
opencli |
OpenCLI 可執行文件的名稱或路徑。 |
opencliSession |
dsh-google-ai-mode |
用於 Google 標籤頁的 OpenCLI 瀏覽器會話名稱。 |
opencliWindow |
background |
傳遞給 OPENCLI_WINDOW 和 OpenCLI --window 參數的值。 |
timeoutMs |
45000 |
單次搜索的超時時間(毫秒)。 |
closeTabAfterSearch |
false |
搜索後嘗試關閉標籤頁(由於 Chrome 自動化窗口的特性,默認關閉可能不穩定)。 |
典型用法與行爲¶
智能體調用 web_search 後,插件會執行以下流程:
1. 通過 OpenCLI 命令驅動 Chrome 或 Edge。
2. 打開 Google 搜索頁面並附帶 udm=50 參數。
3. 等待 AI Mode 回答加載。
4. 提取 content(Markdown 格式的 AI 回答)和 sources[](引用的 URL)。
5. 返回 DSH 標準的 WebSearchResult。
行爲細節:
- content 包含轉換爲 Markdown 的 AI Mode 回答。
- sources[] 包含 AI Mode 回答中引用或鏈接的 URL。
- 重複的來源 URL 會在首次出現時合併。
- 普通搜索結果不作爲 AI Mode 回答的回退方案。
- 默認使用 background 窗口模式以避免搶佔焦點。
環境要求與注意事項¶
使用前需滿足以下條件:
- Node.js:版本需在 ^22.19.0 || >=24.0.0 範圍內。
- DeepSeek Harness:需安裝並包含 @deepseek-ai/dsh-web 依賴。
- OpenCLI:已安裝並連接到瀏覽器擴展。
- 瀏覽器環境:Chrome 或 Edge 已登錄 Google 賬戶,且該賬戶支持 AI Mode。
重要說明:
- 插件不讀取或存儲 Google 的 Cookie。
- 如果同時運行多個搜索且使用了相同的 opencliSession,可能會導致會話衝突。建議使用不同的會話名稱或串行化搜索請求。
- 如果 Google 提示 CAPTCHA,需手動解決後重試。
錯誤處理¶
插件會拋出 DSH 的 WebError 類型錯誤,包括:
- WEB_SEARCH_OPENCLI_CAPTCHA:Google 顯示驗證碼或異常流量頁面。
- WEB_SEARCH_OPENCLI_AI_MODE_UNAVAILABLE:AI Mode 對當前賬戶/地區不可用。
- WEB_SEARCH_OPENCLI_TIMEOUT:OpenCLI 操作超過 timeoutMs。
- WEB_PROVIDER_ERROR:OpenCLI 失敗或提取結果異常。
- WEB_ABORTED:DSH 調用被取消。
生態與鏈接¶
該插件遵循 MIT 許可證,可在 GitHub 查看。更多信息可參考 SkillHub 插件目錄。