前言¶
DeepSeek Harness(DSH)會把每次對話持久化成本地會話。側邊欄自帶搜索走 ctx.sessionQuery.searchSessions,底層是 SQLite FTS5,分詞器爲 unicode61:連續的一段中文往往被當成一個 token。於是文檔裏是「大麥協議劫持已在真機驗證通過」時,搜「大麥」可能命不中;「會話搜索」也命不中「搜索」。你記得某句原話或幾個英文關鍵詞,卻想不起是哪次會話——這是 harness 內置搜索和真實記憶方式之間的落差。
下面介紹社區插件 dsh-session-keyword-search(維護者 JimmyRowe13,分類:記憶)。它不另開一個搜索入口,而是接管側邊欄原有搜索框:輸入例如 大麥 x-sign,列表裏列出聊過這些內容的會話,並在打開結果後儘量滾到匹配消息。
這是什麼¶
dsh-session-keyword-search 用本地派生 SQLite 索引做子串檢索(LIKE over 小寫文本列),中文、英文和混排查詢行爲一致,不依賴 FTS 分詞規則。插件通過公開服務 listSessions、readSession 等讀語料,不解析 zstd 日誌路徑;對 live 的 sessionQuery 做增強並在卸載時恢復原方法,索引失敗時會降級到宿主原有搜索與會話標題子串匹配。
核心功能¶
子串召回與會話級 AND¶
空白分隔多個檢索詞時,每個詞都必須在同一會話的某處出現,但不要求在同一條消息裏。用引號包住的 "phrase" 則必須在單條消息內原樣出現。
排序與來源過濾¶
命中消息越多的會話越靠前,其次按最近活動排序;當前工作區在並列時優先。索引默認只納入 data.source.kind 在 userSourceKinds(默認 ["user"])裏的人類輪次;dsh-mnemon、runtime-context 等注入內容默認不進索引。助手側只索引 text 塊,reasoning 不可搜。
段落粒度與 UI¶
消息在空行處切分(過長段落還會按行界切),摘要指向段落而非整段消息。側邊欄結果裏查詢詞可包在 <mark> 中;打開會話後會嘗試滾動並閃一下匹配消息(受 revealAttempts 等配置約束)。
增量索引¶
首次搜索會建派生索引表;之後僅重讀 revision 變化的會話。設置面板或腳本可重建、清空索引。
安裝與啓用¶
安裝命令來自倉庫 README(從倉庫內 tgz 安裝,改的是 profile 的 package.json 與 bundle,不碰應用目錄本身):
# from this repository
node scripts/install.mjs --tgz ./dsh-session-keyword-search-0.1.0.tgz
# then restart DeepSeek Harness
可用 --dry-run 預覽將要寫入的 manifest。卸載:
node scripts/uninstall.mjs # keep the index
node scripts/uninstall.mjs --drop-index
安裝完成後需重啓 DeepSeek Harness 纔會加載 bundle。
插件以當前 DSH 進程權限運行;索引爲明文 SQLite,存放消息文本。安裝前請自行查看 GitHub 倉庫 源碼與 MIT 許可證。
典型用法¶
側邊欄搜索¶
在 harness 側邊欄原有搜索框輸入關鍵詞,例如 README 中的示例:
大麥 x-sign
列表展示匹配的會話;選中後若啓用了 uiReveal,會嘗試定位到匹配消息。
關閉接管或改配置¶
在 profile 的 patch 裏按 bundle id 覆蓋配置,例如僅關閉接管(不建索引、保留宿主搜索):
- id: session-keyword-search
config:
takeover: off
常用字段包括:path(默認 <dataHome>/storages/session-keyword-search/index.db)、takeover(默認 auto)、userSourceKinds、includeToolEvents、uiHighlight、uiReveal、revealAttempts 等;完整表格見 README。
無界面維護與自檢¶
node scripts/status.mjs # index state plus the registration record
node scripts/status.mjs --rebuild # rebuild from the on-disk sessions
node scripts/status.mjs --clear # drop every indexed row
離線驗證召回(不啓動 harness):
node scripts/verify.mjs --rebuild --queries "檳榔 價格" "沉靜式翻譯 氣泡" "大麥 x-sign"
設置面板路徑:Settings → Session keyword search(經 /dsh-session-keyword-search RPC)。若遇 HTTP 405,可先看索引目錄旁的 rpc-registration.json。
適用場景與注意¶
適合:長期在 DSH 裏積累大量會話、需要用中文子串或混合關鍵詞跨會話找回內容、希望繼續用側邊欄同一個搜索框的開發者。
注意:
- 最近一兩輪可能尚未落盤,剛發的消息可能暫時搜不到。
- 高亮與定位依賴前端 DOM 約定,搜索本身不依賴它們;Markdown 渲染與存儲前綴不一致時,定位可能失敗。
- harness 判爲損壞的會話會被跳過,計數顯示在設置面板「Unreadable sessions skipped」。
- DSH 生態是「一切皆插件」;SkillHub 目錄頁 是社區索引站點,與 DeepSeek / 幻方無官方從屬關係。
結尾¶
dsh-session-keyword-search 用本地子串索引補上了 FTS5 對 CJK 不友好的缺口,並接管側邊欄搜索框,在索引不可用時仍可按宿主邏輯降級。進一步瞭解與安裝說明見 SkillHub 插件頁 與 GitHub:JimmyRowe13/dsh-session-keyword-search。