前言¶
在 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,會返回會話消息內容,請在可信本機環境中使用。
典型用法¶
- 重啓 DSH 後進入任意對話頁,在頂部搜索框輸入關鍵詞(例如某環境變量名、錯誤碼、函數名)。
- 在浮層中查看命中片段與工作區;若懷疑命中在工具輸出裏,點「包含工具輸出」再搜一次。
- 用工作區 chip 縮小範圍;
Enter或鼠標打開目標行,等待對話區滾動與高亮。 - 若一行顯示「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 試一輪。