dsh-gui-search:讓 DSH 側邊欄搜索框能搜會話正文

前言

DeepSeek Harness(DSH)側邊欄自帶搜索框,默認主要按會話標題過濾。你記得某次對話裏聊過「插件衝突」「指紋校驗」之類的話題,標題裏卻沒有這些詞時,搜關鍵詞往往一條都出不來——內容在,卻像沒存過。

社區插件 dsh-gui-search(維護者 Dmatterdj,GitHub:Dmatterdj/dsh-gui-search)在原搜索框上擴展能力:直接匹配聊天正文,點擊結果可打開會話並跳到命中的那條消息。下面介紹它做什麼、怎麼裝、怎麼用,以及和官方索引的差異。

這是什麼

dsh-gui-search 是 DSH 客戶端類插件(當前 GitHub 星標 1)。它不新增獨立搜索界面,而是替換 Host 側的 sessionQuery.searchSessions,並在 Client 側接管結果點擊,實現「搜正文 → 定位消息 → 高亮」。

分類上屬於客戶端注入;許可證 MIT;版本見倉庫 package.json(資料中爲 1.0.0)。要求 DSH 版本 >=0.2.1-rc.2 <0.3.0,在客戶端 0.2.1-rc.5(Host 協議 4)上測試通過。

核心功能

資料中已覈實的能力如下。

  • 搜正文:在原側邊欄搜索框輸入關鍵詞,匹配 user/message 與 assistant/message 正文(不索引工具輸出與思考過程)。
  • 點擊直達:點搜索結果後,向 Host 查詢命中消息的 seq,向前翻頁加載歷史,滾動到對應 DOM 行並閃爍高亮。
  • 中文與短詞:中日韓文字按字面子串匹配,單個漢字也可搜;不區分大小寫。
  • 多詞「且」:例如 插件 衝突 要求兩個子串都出現。
  • 結果排序:總出現次數 → 最近時間 → 會話新舊。
  • 標題搜索仍保留:空詞或帶 sessionFilters 的請求交回官方實現,語義不變。

與官方可選 SQLite FTS5 索引(unicode61 分詞器)相比,英文詞兩邊都能搜;中文子串、單字、多詞組合在資料實測中往往只有本插件能命中(例如查詢 指紋、插件、幀 時 FTS5 爲 0 命中,本插件爲 1 命中)。官方能力對比表見項目 README。

插件刻意不註冊任何工具,避免與 @deepseek-ai/dsh-tool-session-query 撞名導致內置會話工具失效。

安裝與啓用

裝完後需重啓 DSH 生效。插件以當前 DSH 進程權限運行,安裝前建議瀏覽倉庫源碼與 MIT 許可證。

方式一:界面安裝(桌面版推薦)

打開 DSH,左側 插件 → 添加插件,粘貼:

https://github.com/Dmatterdj/dsh-gui-search

方式二:命令行安裝

機器上需有 dsh 命令(桌面安裝包默認可能不帶,此時用方式一):

dsh plugin add github:Dmatterdj/dsh-gui-search

方式三:配置文件

在 cordis.patch.yml 中寫入:

# cordis.patch.yml
- insert:
    - id: gui-search
      name: 'dsh-gui-search'
      config:
        debug: false

保存後重啓 DSH。

方式四:本地開發

dsh plugin add /你的路徑/dsh-gui-search

改代碼可立即生效,無需重裝。

典型用法

用法與原版側邊欄搜索一致:在搜索框直接輸入即可,多了正文匹配與跳轉。

  1. 輸入關鍵詞,結果列表中會帶正文摘要(不僅靠標題)。
  2. 點擊某條結果,客戶端打開對應會話並定位到命中消息。
  3. 多個詞用空格分隔時表示「且」關係;大小寫不敏感。

可選配置僅一項(見 README):

鍵 類型 默認值 說明
debug boolean false 將匹配與激活日誌追加到 $DSH_HOME/gui-search.log,不影響搜索行爲

健康檢查與定位接口(同源本機、只讀):

  • GET /api/gui-search/health → { ok, name, sessions, installed }
  • GET /api/gui-search/locate?session=<id>&q=<query> → { ok, seq, time, type, snippet, count }

locate 的 snippet 含對話原文,故 Host 限制爲本機迴環、Sec-Fetch-Site: cross-site 拒絕、有 Origin 時需與 Host 一致。

適用場景與注意

適合誰:長期在 DSH 裏積累大量會話、靠內容而非標題回憶的開發者;需要搜中文、單字或多詞組合的用戶。

工作原理概要:Host 半部分(index.js)只改 searchSessions,文檔仍經 sessionQuery.filterEvents() 讀取;Client 半部分(lib/client.js)處理點擊與滾動,並與新開會話自動滾底的競態做重試。零運行時依賴,無構建步驟,不修改 app.asar,不直接讀會話文件。

已知限制(來自 README):

  • 精確跳轉依賴內部對話快照;若某版本未暴露,會退回到「找第一個包含查詢詞的文本節點」,同一段話重複出現時可能選錯行(搜索結果本身不受影響)。
  • 只索引用戶與助手消息,不含工具輸出與思考過程。

DSH 生態強調「一切皆插件」;社區目錄頁 skillhub.cn 上的條目 爲獨立站點信息,與 DeepSeek / 幻方無官方從屬關係。

結尾

dsh-gui-search 把側邊欄搜索從「主要是標題」擴展到「正文 + 跳轉 + 高亮」,並針對 CJK 與短詞做了字面子串匹配。若你已在用 DSH 0.2.1-rc.x,可按上文任選一種安裝方式,重啓後在原搜索框試用即可。

  • 目錄頁:https://www.skillhub.cn/plugins/Dmatterdj/dsh-gui-search
  • 倉庫:https://github.com/Dmatterdj/dsh-gui-search
羽毛球分组比赛记分
小程序二维码

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

小夜