dsh-chat-history:DeepSeek Harness 的歷史消息目錄

在 DeepSeek Harness (DSH) 中處理長對話時,傳統的上下翻頁方式難以快速定位歷史節點。dsh-chat-history 插件通過在會話頭部添加一個獨立的“History”標籤頁,將當前會話的用戶消息轉化爲可點擊的目錄,解決了長會話導航困難的問題。

核心功能

該插件實現以下功能:

  1. 消息目錄化:將當前會話的用戶消息提取並轉換爲可點擊的目錄列表。
  2. 點擊跳轉:點擊目錄項後,自動切換回 Chat 標籤頁,平滑滾動到目標消息位置。
  3. 噪聲過濾:自動過濾工具調用、思考過程、命令等非用戶消息,保持目錄整潔。
  4. 自動分頁:在標籤頁激活狀態下,自動分頁加載舊歷史(每頁 50 條消息),直到加載完整。
  5. 零槽位衝突:註冊爲 conversation.view 會話標籤頁,與官方的 Trajectory 標籤頁並排顯示,不佔用 details 槽位,不影響官方工具調用詳情面板。

安裝與啓用

使用官方插件安裝命令將其添加到指定的 profile(例如 web):

dsh plugin --profile web add dsh-chat-history

安裝完成後,需要重啓 dsh web 進程以使插件生效。

典型用法

  1. 進入會話:在任意會話的頭部標籤欄中,新增了 History 標籤頁( alongside Chat 和 Trajectory)。
  2. 查看目錄:點擊 History 標籤頁,目錄會按順序列出所有用戶消息。每條目顯示序號和單行截斷標題,鼠標懸停可查看完整文本。
  3. 加載歷史:標籤頁頭部會顯示加載狀態(“Loading earlier history…”),在加載過程中自動獲取舊消息,加載完成後顯示總條目數。
  4. 跳轉定位:點擊目錄中的任意條目,界面會切換回 Chat 標籤頁,並平滑滾動到對應的用戶消息位置,該消息會閃爍 1.5 秒以示高亮。

開發與維護

  • 無構建步驟:這是一個純客戶端插件,無需配置 Webpack 或 Vite 等構建工具。
  • 熱重載支持:修改 lib/client.js 後,無需重啓,系統每 500ms 檢測文件變更並自動熱重載(約 1 秒生效)。
  • 重啓時機:以下操作需要重啓 dsh web 才能生效:
    • 添加新的插件包。
    • 修改 package.json 中的 dsh.client 聲明。
    • 切換插件的啓用/禁用狀態。

兼容性

插件會根據當前 DSH 版本自動適配數據源:

DSH 版本 數據源 Hook 視圖切換方式
>= 0.1.5 useChat((s) => s.order) / useChat((s) => s.nodes) openView("chat")
<= 0.1.0-rc.x useSession((s) => s.chat.order) / s.chat.nodes 點擊 Chat 標籤按鈕

插件通過檢測 useChat 是否注入來自動選擇對應的邏輯分支。Sessions、分頁狀態(hasMore / loadingOlder)以及消息節點的 kind === "user" 形狀在兩個版本中保持一致,因此目錄邏輯可以共用。

生態背景

DeepSeek Harness 採用「一切皆插件」的架構理念。此插件託管在社區目錄,與 DeepSeek 或幻方官方無從屬關係。使用前請檢查源碼與許可證(MIT)。

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

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

小夜