前言¶
DeepSeek Harness(DSH)裏,Agent 的網頁搜索走 web_search 後端;裝不同 provider 插件後,註冊表裏會出現 DeepSeek 官方 id、Codex 的 openai-codex 等條目。內置「插件 → 內置插件配置 → 網頁搜索」頁只認識兩個 DeepSeek id,在那邊切換會把 Codex 搜索覆蓋回 deepseek-official。若你同時裝了 dsh-codex 或其它 search provider,需要在「當前 Harness 真正註冊着的後端」之間切換,且希望改完立刻生效、不必重啓。下面介紹社區插件 dsh-search-switch(維護者 KeqingMoe,GitHub:KeqingMoe/dsh-search-switch)的做法。
這是什麼¶
dsh-search-switch 給 DSH 設置 → 通用 增加一行「網頁搜索提供方」下拉,列表每次打開都從 Host 讀取 ctx.web 裏已註冊的 provider,不是寫死選項。選擇寫入當前 profile 的 patch,下一次搜索立即生效;不修改密鑰、接口地址等其它設置。npm 包名 dsh-search-switch,當前發佈版本 0.1.0,許可證 MIT,要求 Node >= 20。
核心功能¶
- 動態枚舉:裝了 dsh-codex 會出現
openai-codex,裝了別的 provider 插件也會自動出現,卸載後從列表消失。 - 持久化切換:通過
ctx.settings.update('web', { searchProvider: id })寫入 profile 的cordis.patch.yml;Loader 判定僅 volatile 變化時原地更新運行中引用,無需重啓、無需重掛載。 - Host API:腳本可調用同源路由查詢狀態或切換(需與 Web 設置頁相同的認證 cookie)。
- 降級行爲:沒有 settings 服務的自拼部署下,選擇只對當前進程生效(直接寫
ctx.web.config.searchProvider),界面會說明這一點。
Host 註冊兩條路由(見倉庫 src/index.ts):
| 路由 | 作用 |
|---|---|
GET /plugins/dsh-search-switch/state |
已註冊 provider(含各自 available())+ 當前選擇 + DSH_WEB_SEARCH_PROVIDER 回退值 |
POST /plugins/dsh-search-switch/select |
校驗 id 在註冊表內後落盤;未知 id 返回 409,不寫盤 |
未註冊 id 的響應形如 409 {"ok":false,"error":{"code":"unknown-provider",…}}。
界面使用宿主 @deepseek-ai/dsh-client-ui-primitives 的 Menu,與「插話發送」等下拉在交互上一致;該依賴屬於平臺接口,大版本升級後可能需要跟着改客戶端代碼並重新構建。
已知限制(README 原文):插件通過 WebRuntime 的私有字段讀取註冊表與當前值,上游若改語義需同步維護;路由與 Harness 設置頁共用 Web 認證,未額外做 CSRF(cookie 爲 SameSite=Strict);只切換 search provider,未做 fetchProvider 界面。
安裝與啓用¶
指定 profile 安裝:
dsh plugin --profile <profile> add dsh-search-switch
或在 設置 → 插件 → 添加 中填寫包名 dsh-search-switch。裝好後打開 設置 → 通用,在「外觀」「快捷鍵」附近可見「網頁搜索提供方」。
本地開發可直接指向目錄:
dsh plugin --profile <profile> add /path/to/dsh-search-switch
插件以當前 DSH 進程權限運行;安裝前建議在 GitHub 查看源碼與 MIT 許可證,確認路由與私有字段讀取是否符合你的安全預期。
典型用法¶
圖形界面:在 設置 → 通用 的下拉里選目標 provider,保存後下一次 web_search 即走該後端。
命令行 / 自動化(示例端口與 cookie 來自 README,按你的部署調整):
# 查看註冊表與當前選擇
curl -b cookies.txt http://127.0.0.1:3080/plugins/dsh-search-switch/state
# 切換到 openai-codex(須已在註冊表中)
curl -b cookies.txt -X POST -H 'content-type: application/json' \
-d '{"searchProvider":"openai-codex"}' \
http://127.0.0.1:3080/plugins/dsh-search-switch/select
適用場景與注意¶
- 適合:同時安裝多個 web search provider(例如 dsh-codex),需要在 DeepSeek 官方與 Codex 等後端之間快速切換,且不想被內置「網頁搜索」兩選項頁誤覆蓋配置的用戶。
- 分類:社區目錄 skillhub.cn 將其歸爲「模型推理」;目錄站爲社區生態站點,與 DeepSeek / 幻方無官方從屬關係。
- 注意:依賴 DSH 內部
WebRuntime形狀;字段不可用時時路由返回web-unavailable,設置頁顯示錯誤而非整頁崩潰。控件綁定平臺 UI 模塊,升級 DSH 後建議對插件執行pnpm run typecheck/ 重新安裝構建產物。
結尾¶
dsh-search-switch 把 web_search 註冊表 完整暴露到 設置 → 通用,切換寫進 profile patch 且即時生效,補上了內置網頁搜索設置頁對 openai-codex 等 provider 覆蓋不全的問題。進一步瞭解可訪問目錄頁 KeqingMoe/dsh-search-switch 與倉庫 github.com/KeqingMoe/dsh-search-switch。