dsh-session-search-bar:對話頁常駐的歷史會話正文搜索

前言

在 DeepSeek Harness(DSH)里長期跑智能體任務時,會話會越積越多。想找回某次對話裏說過的一句配置、一段報錯或一個接口名,如果只能逐個點開會話、上下滾動,成本會很高。內置側欄的內容搜索在 profile 默認配置下往往只匹配標題,對消息正文覆蓋不足。

下面介紹社區插件 dsh-session-search-bar(維護者 chopperH0824):在對話頁頂部放一個常駐搜索框,按關鍵詞檢索歷史會話的消息正文,點結果直接打開會話並滾動、高亮到命中文字。分類屬於 DSH 插件目錄中的「記憶」類;當前 GitHub 星標爲 0,版本 1.0.0,許可證 MIT。

這是什麼

dsh-session-search-bar 是 DeepSeek Harness 的 Web GUI 插件:搜索欄掛在 conversation.header.leading(會話標題左側),不單獨開面板,也不讓用戶維護全文索引。Host 側通過 @deepseek-ai/dsh-session-query 與插件自帶的內存 SQLite 索引(path: ':memory:',首次搜索時打開)完成檢索;索引隨插件卸載釋放,不寫磁盤。

要求:Node.js ≥ 20,DSH 0.2.x(Web GUI)。插件無第三方運行時依賴、無構建步驟。

核心功能

搜索與結果展示

  • 對話頁頂部有放大鏡和佔位符「搜索歷史會話…」,點進即可輸入。
  • 輸入後約 200ms 觸發搜索;結果浮在輸入框下方,展示會話標題、工作區、相對時間、命中片段(關鍵詞高亮)、來源(正文 / 工具 / 標題)。
  • 浮層頂部可切換「包含工具輸出」和工作區篩選;右側顯示「找到 N 個會話 · X ms」。
  • 默認只搜消息正文:用戶消息即正文;assistant 消息會按片段特徵過濾掉形如工具調用參數的命中(如 bash {"command":...}、JSON/轉義片段等)。tool/result、文件/附件塊、reasoning 默認不參與。勾選「包含工具輸出」後,纔會一併搜索 tool/call、tool/result 及 assistant 裏的工具調用參數。
  • 展示前會把片段當純文本處理:去掉常見 Markdown/JSON 符號與轉義,壓掉多餘空白,便於覈對關鍵詞。
  • 同一查詢有約 15s 結果緩存;展開多處命中有約 60s 緩存。

打開會話並定位

  • 點擊某行:打開對應會話,對話區滾動到命中段落,並用系統選中高亮約 2.4s;長輪次、長消息也會盡量對準命中位置,而不是停在輪次中間。
  • 同一會話有多處命中時,行右側「N 處匹配 ›」可展開其餘命中(展開時才向 Host 請求);點擊展開項同樣定位到該條。
  • 只有當前工作區可見、非子代理的會話會出現在結果裏。

鍵盤與最近搜索

  • ↑/↓ 選擇結果,Enter 打開,Esc 關閉浮層或清空;點擊浮層外部關閉。
  • 空輸入框且焦點在搜索框時,顯示最近搜索(localStorage,最多 8 條)。

性能(README 本機實測,約 13~20 個會話命中)

操作 耗時
正文搜索(新關鍵詞) 約 0.8–2 s
同一查詢重複(15s 緩存) < 100 ms
勾選「包含工具輸出」 約 0.3–1 s
展開某會話的多處命中 約 330 ms(之後 60s 緩存)
點擊結果 locate(turn 緩存命中) 0 ms

應用啓動或插件重載後,Host 會在空閒約 2.5s 時後臺預熱索引,儘量把首次構建挪到空閒時段。

安裝與啓用

macOS Desktop 自帶 CLI 的安裝命令如下(須與資料原文一致):

# macOS Desktop 自帶 CLI
"/Applications/DeepSeek Harness.app/Contents/Resources/runtime/cli/bin/dsh" \
  plugin --profile desktop add dsh-session-search-bar@1.0.0

也可把 dsh-session-search-bar 加入 ~/.dsh/profiles/desktop/package.json 的 dsh.profile.bundles,然後完全退出並重啓 DeepSeek Harness。

本地開發或使用 tarball 時:

npm pack
dsh plugin --profile desktop add /absolute/path/to/dsh-session-search-bar-1.0.0.tgz

安裝前建議閱讀 GitHub 倉庫 源碼與 MIT 許可證;插件以當前 DSH 進程權限運行,Host 路由與其它本地插件一樣只綁定 loopback,會返回會話消息內容,請在可信本機環境中使用。

典型用法

  1. 重啓 DSH 後進入任意對話頁,在頂部搜索框輸入關鍵詞(例如某環境變量名、錯誤碼、函數名)。
  2. 在浮層中查看命中片段與工作區;若懷疑命中在工具輸出裏,點「包含工具輸出」再搜一次。
  3. 用工作區 chip 縮小範圍;Enter 或鼠標打開目標行,等待對話區滾動與高亮。
  4. 若一行顯示「N 處匹配 ›」,展開後點具體條目,定位到該處命中。

搜索按 FTS token/phrase 匹配,不是任意子串:例如 AI 不會命中 BRAID。

適用場景與注意

適合:經常在 DSH 裏開多會話、需要在正文裏找回舊結論、命令、配置說明的開發者;希望「搜完即跳轉、即高亮」,而不是另開搜索面板的用戶。

限制與注意(來自 README「已知限制」):

  • 搜索欄只在對話頁頭部顯示;切到 Plugins、Settings 等非對話面板時不出現,回到對話頁即恢復。
  • 首屏標題靠瀏覽器端會話快照補齊;不在已註冊工作區裏的歷史會話可能顯示「未命名會話」。
  • 正文模式下,assistant 在消息正文裏寫的文件名/路徑仍會被搜到——那是正文文本,不是工具輸出。
  • assistant 正文過濾是啓發式,極少數工具參數片段可能漏過;需要時可勾選「包含工具輸出」或接受更慢、更嚴格的校驗思路。
  • 緩存期間新消息/新會話可能不會立刻出現在結果裏。
  • 定位是盡力而爲:命中在摺疊的工具分組裏,或宿主改動 data-chat-turn / data-conversation-session 時,可能退化爲滾到消息行/輪次,但不會阻止打開會話。
  • 內存索引:應用重啓後第一次搜索需重建(後臺預熱儘量掩蓋延遲)。

DSH 生態強調「一切皆插件」;SkillHub 目錄頁 是社區站點,與 DeepSeek / 幻方無官方從屬關係。

結尾

dsh-session-search-bar 把「搜歷史會話正文 → 打開 → 滾到命中處」收進對話頁頂欄一條鏈路裏,默認聚焦正文、可選包含工具輸出,並依賴 Host 側查詢與內存索引控制首屏只打一次 searchSessions。若你在 DSH 桌面 profile 上長期堆會話,值得按官方命令裝上 1.0.0 試一輪。

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

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

小夜