dsh-usage-record:給 DSH Web 對話區加一條提問導航軌

前言

用 DSH Web 聊長會話時有個常見麻煩:想回看前面某次提問,只能靠滾動條一點點找。聊天區做了虛擬化渲染,翻過一段後更早的內容還沒加載出來,滾回去還得等;左側會話列表裏一堆「新會話」,單看標題也分不清哪個是哪個。

dsh-usage-record 針對的就是這兩個問題:它在對話區左側加一條豎嚮導航軌,每條橫線對應一次提問,點擊即跳轉;同時給會話列表自動補上基於提問內容的標題。下面介紹它的功能、安裝方式和注意事項。

這是什麼

dsh-usage-record 是一個 DSH 客戶端插件(僅支持 web 平臺),由 kkishapppy 維護,許可證爲 MIT。一句話定位:DSH Web 對話區左側的提問導航軌——每條橫線等於一次提問,點擊即跳轉到對應位置,支持魚眼放大、滾動跟隨和後臺全量預加載。

數據全部來自服務端接口 /plugins/dsh-usage-record/questions,從會話日誌提取,不受聊天虛擬化窗口的限制,所以軌道上能看到完整歷史,而不只是當前已渲染的那一段。

核心功能

提問導航軌與點擊跳轉

軌道顯示在對話左側,每條橫線代表一次提問,懸停會彈出 tooltip 顯示提問內容。點擊橫線後,聊天區平滑滾動到該提問;如果目標位置還沒被渲染(屬於未加載的歷史),插件會先自動加載再跳轉。

魚眼效果與滾動跟隨

鼠標在軌道上移動時,橫線按與指針的距離放大(σ=10),邊緣留白防止裁剪。反向也成立:聊天區滾動時,當前視口中心對應的提問會在軌道上高亮,即 scroll-spy,軌道自動跟隨滾動位置。

後臺預加載

只要軌道可見,插件就會自動批量加載全部歷史提問。這裏有一個客戶端補丁:history RPC 的批量數被放大到 3000(官方默認 50),對應客戶端源碼裏的 HISTORY_BATCH 常量,可以按需調整。配合這個補丁,長會話也能做到點擊秒跳。

會話自動標題

插件包裝了 sessionPersistence.list(),給會話列表每行補上 title。規則如下:

  1. 取該會話最後一次真實提問做摘要,長度不超過 30 字;
  2. 最後一條太短(少於 8 字,比如「好的」「1」)時,自動與更早一條合併;
  3. 對話進行中標題保持穩定,顯示上次固化的結果,不隨每句話跳動;會話閒置達到 30 分鐘後才生成或更新標題並落盤,時長可通過 titleIdleMinutes 配置。

整個過程是純規則加內存緩存加單定時器,不調 LLM、不聯網。手動命名的優先級最高:在 dataDir/titles.json 裏寫的名字會覆蓋自動標題;會話數據本身自帶 title 時也不做改動。

安裝與啓用

從 GitHub Release 安裝:

dsh plugin --profile web add https://github.com/kkishapppy/dsh-usage-record/releases/download/v0.1.0/dsh-usage-record-0.1.0.tgz

也可以用本地 tgz 文件安裝:

dsh plugin --profile web add ./dsh-usage-record-0.1.0.tgz

配置是可選的,寫在 profiles/<profile>/cordis.patch.yml

- id: usage-record
  config:
    dataDir: 'E:\DeepSeekHarness\data\usage-record'   # 默認 <cwd>/data/usage-record

典型用法

手動命名會話

想讓某個會話固定顯示自己起的名字,編輯 titles.json(默認路徑 E:\DeepSeekHarness\data\usage-record\titles.json),格式如下:

{ "session-xxxx…": "我給的名字" }

鍵是會話 ID,值是標題。手動命名的優先級最高,自動標題不會覆蓋它。

本地開發構建

改代碼後需要重新構建:

npm i
npx -y tsdown@0.22.2 --config ./tsdown.config.ts

注意生效方式:服務端改動需要重啓 DSH;client 改動硬刷新頁面即可生效。

適用場景與注意

適合兩類人:一是經常在 DSH Web 裏跑長會話、需要反覆回看和跳轉歷史提問的開發者;二是會話列表積累了很多條、想一眼認出每條會話內容的用戶。

使用前有幾點需要知道:

  1. 插件依賴 DSH Web 客戶端內部 DOM 結構([data-chat-flow][data-chat-anchor-key]、滾動容器等),DSH 版本升級後可能失效,這是社區客戶端插件的共性;
  2. 軌道只在會話視圖渲染,且需要會話裏存在歷史提問;
  3. history RPC 批量被放大到 3000,如果介意這個改動,可以在客戶端源碼 HISTORY_BATCH 常量處調整;
  4. 插件以當前 dsh 進程權限運行,安裝前建議檢查源碼與許可證(本項目爲 MIT,README 與 package.json 均有標註)。

結尾

dsh-usage-record 用一條導航軌解決了長會話回看的問題,順手把會話標題也補齊了,實現上是純規則、不聯網,成本可控。如果你也在 DSH Web 裏管理長對話,值得裝上試一試。

  • 插件目錄頁:https://www.skillhub.cn/plugins/kkishapppy/dsh-usage-record
  • GitHub 倉庫:https://github.com/kkishapppy/dsh-usage-record

需要說明的是,插件目錄是社區維護的獨立站點,與 DeepSeek、幻方無官方從屬關係。DSH 的理念是「一切皆插件」,這類社區插件正是這個生態的日常組成部分。

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

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

小夜