dsh-session-history-search:在 DSH 側邊欄裏搜遍歷史 Session

前言

用 DeepSeek Harness(DSH)做智能體或日常對話時,Session 會不斷累積。你往往記得「某次聊過插件、某條配置、某段報錯」,卻想不起是在哪一個對話裏。工作區側欄自帶的檢索若依賴全文索引,中文長句還常常搜不到——README 裏說明,@deepseek-ai/dsh-session-query-sqlite 對 CJK 的分詞方式會讓「插件」這類詞無法匹配整句中文上下文。

下面介紹社區插件 dsh-session-history-search(維護者 PluckSlugSorrow,分類:記憶)。它在左側邊欄增加「歷史搜索 / History」面板,對每一個已結束的 Session 做字面子串匹配(含中文),按 Session 分組展示高亮片段,點一下即可回到對應對話。

這是什麼

dsh-session-history-search 是面向 DSH Web 客戶端的側邊欄插件:在 sidebar.panellist(順序 8)掛載放大鏡入口,主面板 key 爲 session-history-search。它解決的是「我知道問過,但不知道是哪個 chat」——跨全部歷史 Session 搜正文,而不是隻搜當前工作區文件樹。

插件以 MIT 許可證發佈,當前 package 版本爲 0.1.0,要求 DSH >=0.2.1-rc.5、Node >=20。社區目錄頁:https://www.skillhub.cn/plugins/PluckSlugSorrow/dsh-session-history-search;源碼與說明:https://github.com/PluckSlugSorrow/dsh-session-history-search。

核心功能

安裝並重啓(若面板未立即出現)後,你會得到:

  1. 搜索框:輸入查詢詞,對歷史 Session 事件語義文本做不區分大小寫的字面匹配。
  2. 「只看我發的消息 / Only my messages」:開關對應 API 參數 userOnly,只匹配用戶側消息。
  3. 「重建索引 / Rebuild index」:手動觸發重建索引相關動作(面板內提供)。
  4. 結果卡片:每條對應一個 Session,展示標題、工作區文件夾(cwd)、最近命中距今多久、命中條數,以及最多四條高亮片段(標註「我 / 助手」)。
  5. 一鍵打開 Session:點擊任意結果會在對話視圖中打開該 Session(README 說明:openSession 無法定位到 Session 內某一條消息,因此會打開到 Session 末尾,需靠片段判斷位置)。

檢索不走 FTS SQLite 索引,而是 sessionQuery.listSessions() 配合 filterEvents(id, [{ kind: 'text', text: query }])——第一類 kind: 'text' 謂詞逐 Session 掃描,中文、英文與混合文本均可搜,無需分詞。無工作區(header.cwd === undefined)的 Session 會被跳過,與側欄展示一致。

安裝與啓用

在資料原文中,安裝命令爲:

dsh plugin --profile web add dsh-session-history-search

也可在應用內插件市場安裝;若側邊欄未出現面板,重啓一次 DSH。

插件在 web profile 下注入客戶端,並依賴 @deepseek-ai/dsh-client-locale、dsh-client-ui-layout、dsh-client-ui-sidebar、dsh-client-ui-workspace 等宿主模塊。安裝前請自行查看倉庫源碼與 MIT 許可證;插件以當前 DSH 進程權限運行,只安裝你信任的來源。

典型用法

  1. 打開左側邊欄 歷史搜索 / History 面板。
  2. 輸入關鍵詞(例如中文「插件」),按需打開「只看我發的消息」。
  3. 在結果卡片中查看高亮片段,點擊卡片打開對應 Session,在對話裏定位上下文。

宿主側搜索接口爲 POST /plugin/session-history-search/search,請求體示例:

{ "query": "插件", "userOnly": true, "limit": 40, "refresh": false }

響應中會返回按 Session 分組的 items(含 sessionId、title、cwd、matchCount、matches 等)以及 stats(掃描 Session 數、耗時、是否 partial 等)。健康檢查:GET /plugin/session-history-search/health,用於確認 Session Query 服務是否掛載及已緩存 Session 數量。

適用場景與注意

適合:長期在 DSH 裏多 Session 協作、需要按對話內容回溯(尤其中文關鍵詞)的開發者。

性能與覆蓋(README 明確說明):

  • 掃描成本與歷史規模成正比(每個 Session 需解壓與解析),單次有 10 秒牆鍾預算;超時則 stats.partial 爲 true,但 Session 按新到舊排序,仍優先看到最近命中。
  • 對已 settled 的 Session,結果按 (session, query, userOnly) 緩存 5 分鐘(容量 400);重複搜索會在同一預算內繼續掃上次未掃完的 Session,已掃過的不會重複全量掃。Live Session 每次都會重新讀取。
  • 非 POST、空查詢、畸形 JSON、請求體超過 64 KiB 等會返回對應 HTTP 錯誤;Session Query 未掛載時返回 503;經 connection 服務標記爲不可信的請求會在執行前拒絕。

若 sessionQuery 不可用,面板會顯示可重試的錯誤,而不會佔滿側欄槽位崩潰。

結尾

dsh-session-history-search 把「跨 Session 的字面歷史搜索」放進 DSH 側邊欄,用與 FTS 不同的掃描路徑補上中文可搜性,並以 Session 分組 + 片段高亮降低迴溯成本。目錄與詳情見 SkillHub 插件頁 與 GitHub 倉庫。

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

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

小夜