前言¶
用 DeepSeek Harness(DSH)做智能體開發時,一個常見的問題是:模型默認不聯網,或者只在它自己認爲必要時才調用 web_search。如果你希望某個會話裏的回答帶最新網絡信息,通常只能在每輪提示詞裏反覆強調「回答前先搜索」。
DSH 的理念是「一切皆插件」,這類行爲可以交給插件解決。下面介紹的 dsh-web-search-toggle 就是這樣一個插件:它在聊天輸入框工具行加一個 “Web Search” 開關,開啓後強制 agent 在該會話每一輪迴答前先調用 web_search,做法對齊 DeepSeek 官方 Web Chat UI 裏那個按會話生效的 Web Search 開關。
這是什麼¶
dsh-web-search-toggle 是一個 DSH web-profile 插件,由 SeerableOfficial 維護,MIT 許可,當前版本 0.1.0,要求 Node >= 20。
一句話定位:在 composer 工具行提供一個按會話記憶的 “Web Search” 開關,開啓時注入強制性 system-prompt 指令,要求 agent 在每一輪迴答前先調用 web_search 並引用來源。開關狀態按會話保存,頁面重載與宿主重啓後仍然生效。
工作原理¶
插件分客戶端與宿主兩半,遵循 DSH 插件約定(dsh.bundle.patch + dsh.client)。
客戶端半部¶
lib/client.js 把開關注冊到 composer 工具行(conversation.input.left,即常駐的訪問模式 / plan / attach 控件旁邊的位置)。點擊開關時,通過 client↔host RPC 通道通知宿主。
按鈕形態:未激活時是中性描邊;激活時變爲 DeepSeek 品牌藍,並帶一個綠色 on 圓點。
宿主半部¶
index.js 做兩件事:
1、提供 RPC 頻道 /dsh-web-search,支持 websearch.get-state / websearch.set-state,把開關標誌按會話存儲,並持久化到 ~/.dsh/dsh-web-search-toggle.json;
2、註冊 system-prompt 段 dsh-web-search:force。該段在每次組裝 prompt 時求值:當前會話開關爲開時,注入「必須先調用 web_search」的指令;爲關時渲染爲空(空段會自動消失)。
文件結構如下:
package.json 聲明 dsh.bundle.patch 與 dsh.client
index.js 宿主半部:RPC 頻道 + system-prompt 強制段
lib/client.js 客戶端半部:composer 上的 Web Search 開關
cordis.patch.yml bundle patch,掛載宿主半部
爲什麼是指令而不是硬性攔截¶
DSH 沒有「模型每輪必須調用某工具」的原語。所以這裏的強制機制是一條始終存在的、強有力的 system-prompt 指令——按 README 的說法,這是該 harness 中引導模型最權威可靠的方式。模型會遵循它,但遵循是概率性的,不保證每一輪都調用 web_search;這一點與 DeepSeek 官方 Web Chat 的開關行爲一致。
安裝與啓用¶
前置條件有兩個:
- 使用 DSH 的 web profile(
dsh --profile web); - 已配置 web_search 搜索提供方(內置 DeepSeek 搜索提供方,或其他提供
web_search的 provider)。注意web_search工具由 DSH 自帶的dsh-tool-web包(經自動選擇的 DeepSeek 搜索提供方 seam)註冊,本插件只強制使用該工具,不負責安裝它。
滿足條件後,在 web profile 下執行:
# 推薦方式,會 reconcile bundle 列表
dsh plugin --profile web add dsh-web-search-toggle
也可以直接用 pnpm 安裝(跳過 bundle 列表 reconcile):
cd <your-profile-dir>
npx pnpm add dsh-web-search-toggle
# 然後把 "dsh-web-search-toggle" 加入 package.json 的 dsh.profile.bundles
安裝後重啓 DSH,讓 bundle patch 在啓動時生效:
dsh --profile web restart
典型用法¶
經過上面的步驟,按以下順序使用:
1、在 DSH web UI 打開一個會話;
2、點擊 composer 工具行的 Web Search pill,打開開關;
3、提問——agent 會先調用 web_search,並在回答中引用來源;
4、用完再點一下開關關閉,恢復默認行爲。
開關的開/關狀態按會話記住,頁面重載或重啓宿主後不會丟失。
適用場景與注意¶
適合的場景:希望某個會話的回答基於最新網絡信息、又不想每輪手工重複搜索指令;或者想讓 DSH web UI 的體驗對齊 DeepSeek 官方 Web Chat 的 Web Search 開關。
幾點注意:
1、強制是概率性的。開關開啓不保證模型每一輪都調用 web_search,關鍵信息仍建議覈對回答中引用的來源;
2、搜索提供方需自行配置。插件只強制調用 web_search,不負責註冊或安裝工具;
3、僅適用於 web profile;
4、安全提醒。插件以當前 dsh 進程的權限運行,安裝前建議先查看其源碼與許可證(MIT)。該插件在 GitHub 上公開源碼,文件不多,通讀一遍成本不高。
結尾¶
dsh-web-search-toggle 解決的是一個具體的小問題:把「先搜後答」從每輪重複的提示詞,變成輸入框上一個可按會話切換、可持久化的開關。它的實現也很適合作爲 DSH 插件開發的參考——客戶端註冊 UI、宿主提供 RPC 與 system-prompt 段,兩側通過 dsh.bundle.patch + dsh.client 約定組合。
- GitHub 倉庫:https://github.com/SeerableOfficial/dsh-web-search-toggle
- 社區插件目錄頁:https://www.skillhub.cn/plugins/SeerableOfficial/dsh-web-search-toggle
需要說明的是,後者是獨立的社區目錄站點,與 DeepSeek / 幻方沒有官方從屬關係;該鏈接來自插件線索,未做進一步覈實,以 GitHub 倉庫爲準。