dsh-web-search-toggle:給 DSH 會話加一個「先搜後答」的 Web Search 開關

前言

用 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 倉庫爲準。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜