dsh-english-search:給 DSH 會話區加一個原生化風格的頂部搜索欄

前言

用 DeepSeek Harness(DSH)處理閱讀和寫作時,查詞、查詞源是高頻動作。常見做法有兩個:開一個新標籤頁去詞典網站,或者在會話裏反覆輸入結構化提示詞再自己整理結果。前者離開當前工作區,後者動作重複、結果格式不固定。

dsh-english-search 解決的就是這個問題:它在 DSH 會話區域最上方固定一個 vocabtool.com 風格的搜索欄,提供查詞、詞源、問答三種模式,查詞由 DSH 自身的 LLM 服務完成——不訪問任何外部站點、不需要數據庫、不需要本地後端。下面介紹這個插件的定位、原理和用法。

這是什麼

dsh-english-search 是 kami-mura 維護的一個 DSH 插件,當前版本 0.4.5,MIT 許可證。一句話定位:DSH 原生風格頂部搜索欄插件(查詞/詞源/問答),固定在會話區域最上方,由 DSH 自身 LLM 驅動,無外部站點依賴。

它的依賴面很窄:Host 側用 DSH 內置的 llm / agentDefaultModel / webServer 服務,Client 側用 slots 服務與 react 平臺模塊,均爲 DSH 內置能力。整個插件無外部 HTTP 調用、無 Cookie、無數據庫、無本地服務、無構建步驟。

核心功能

  • 在 DSH 會話區域最上方提供搜索欄,獨立於消息滾動區;使用 DSH WebUI 原生設計令牌(--dsw-alias-*),與輸入框卡片同表面、同描邊、同圓角、同陰影,明暗主題自動跟隨,寬度收窄爲 520px(--es-bar-max-width)
  • 三種模式:查詞 / 詞源 / 問答
  • 查詞走 DSH 當前會話默認模型(agentDefaultModel),與對話共用模型配額
  • 支持快捷前綴:!arena 直接詞源、? 直接問答
  • 結果面板與落地頁同款(loading / error / 結果卡片 + 關閉按鈕),內容渲染 Markdown(加粗 / 列表 / 標題 / 引用 / 行內代碼)
  • 三套系統提示詞與 vocabtool.com 後端一致,源自 MIT 項目 kami-mura/vocabtool-web

工作原理

插件分兩端:

  • Host(lib/index.js):註冊 webServer 路由 /api/plugins/english-search,經 ctx.get('llm') + ctx.get('agentDefaultModel') 調用 DSH 模型,effort=off,失敗自動回退無 effort。
  • Client(lib/client.js):手寫 CJS bundle,註冊在官方 conversation.input.dock 插槽(id english-search)管理生命週期,再通過 React Portal 掛到會話根節點頂部;與 Host 之間是同源 fetch 調用。

這裏選 conversation.input.dock 而不是 conversation.top,是因爲 DSH 0.1.0-rc.6 尚不存在後者。

安裝與啓用

標準安裝命令:

dsh plugin --profile web add dsh-english-search

也可以從 GitHub 安裝:

dsh plugin --profile web add github:kami-mura/dsh-English-search

這個包是標準 dsh bundle(dsh.bundle.patch),dsh plugin add 會自動把它加入 profile 的層棧(dsh.profile.bundles),不需要手改任何配置文件。

安裝後需重啓 dsh web 服務進程才能生效——注意是重啓服務進程,不是刷新瀏覽器頁面。

典型用法

裝好重啓後,搜索欄出現在會話區域最上方。先選模式,再輸入內容:

1、默認輸入單詞,做查詞;
2、輸入 !arena,直接做詞源查詢;
3、輸入 ?lie 和 lay 的區別,直接做問答。

查詢過程在結果面板中顯示 loading / error 狀態,完成後以結果卡片呈現,支持 Markdown 渲染,右上角有關閉按鈕。

查詞請求走的是當前會話默認模型,所以這部分消耗與你的對話共用同一個模型配額,這一點在評估用量時需要計入。

不安裝,先動態體驗

如果不打算直接部署,可以在任意 DSH 會話中通過 cordis_define 動態運行:

1、執行 cordis_define:plugin.kind: "new",idPrefix: "vocab";code.host 粘貼倉庫中的 plugin.host.js,code.client 粘貼 plugin.client.js;
2、執行 cordis_run 激活(Client 包首次需要批准一次)。

注意動態版與原生版顯示位置不同:動態插件運行環境不提供 react-dom,搜索框會顯示在輸入框上方;通過 npm/GitHub 安裝的原生插件才固定在會話區域最上方。想驗證最終形態,還是建議走正式安裝。

常見問題與注意事項

安裝後看不到搜索框,按順序排查:

1、確認插件版本 ≥ 0.4.2。運行 dsh plugin --profile web list 查看已安裝版本。0.4.0 及更早版本使用 conversation.top 插槽,而 DSH 0.1.0-rc.6 不存在該插槽,搜索框不會渲染。版本不符就升級:

dsh plugin --profile web add dsh-english-search@latest

2、重啓 dsh web 服務。安裝、升級插件後都需要重啓服務進程,刷新瀏覽器頁面無效。

3、如果仍不顯示,查看瀏覽器開發者控制檯是否有 english-search 相關報錯,並確認服務啓動日誌中無插件報錯。

卸載命令:

dsh plugin --profile web remove dsh-english-search

另外提醒一點:插件以當前 dsh 進程的權限運行,安裝前應檢查源碼與許可證。這個項目是 MIT 許可,代碼集中在 lib/index.js、lib/client.js 和動態版兩個入口文件,閱讀成本不高。

結尾

dsh-english-search 的價值在於把查詞這類高頻動作收進 DSH 會話本身:界面用原生設計令牌、視覺與輸入框一致,調用走 DSH 自身模型服務,全程不依賴外部站點。對於經常在 DSH 裏讀英文材料的人,這是一個安裝成本低、邊界清晰的實用插件。

  • 社區目錄頁:https://www.skillhub.cn/plugins/kami-mura/dsh-English-search (社區維護的插件目錄,與 DeepSeek / 幻方無官方從屬關係)
  • GitHub 倉庫:https://github.com/kami-mura/dsh-English-search
羽毛球分组比赛记分
小程序二维码

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

小夜