在 dsh WebUI 的長會話中,快速定位用戶消息是常見的痛點。dsh 會話時間軸插件 在會話消息列的右緣渲染一條豎直時間軸,通過刻度與交互提供導航能力。該插件由 hemo94931 維護,遵循 MIT 許可證,旨在解決在長對話中手動滾動查找特定消息的問題。
核心功能¶
插件在 WebUI 右側邊欄提供以下能力:
- 豎直時間軸渲染:每條用戶消息(包括首輪消息和 steering 追問)在右側邊緣生成一條短橫線刻度。
- 懸浮摘要與序號:鼠標懸停時,顯示該條消息的序號(如
3 / 12)與摘要內容。 - 點擊跳轉:點擊刻度或按鈕,滾動容器將自動定位到對應消息,並將其置於視口頂端並短暫高亮。
- 導航按鈕:提供 ▲ / ▼ 按鈕用於逐條向上或向下導航。
- 當前刻度高亮:當前滾動位置對應的刻度會自動高亮顯示。
- 主題適配:顏色使用 dsh 主題令牌,支持深淺色模式自適應。
安裝與啓用¶
安裝前請確保系統已安裝 pnpm。
常駐安裝(推薦)¶
執行以下命令將插件添加到 WebUI 插件花名冊。包內的 cordis.patch.yml 會在下次啓動 dsh web 時自動加載插件,無需手動激活。
dsh plugin --profile web add @hemo94931/dsh-timeline
本地開發時,可在倉庫根目錄執行以下命令進行 Link 安裝:
dsh plugin --profile web add .
卸載¶
dsh plugin --profile web remove @hemo94931/dsh-timeline
注意事項與故障排查¶
- 動態插件特性:動態加載的插件不隨進程重啓存活。若需永久生效,請使用常駐安裝方式。
- 時間軸不出現:
- 確認當前會話包含至少 2 條用戶消息。
- 確認詳情面板未打開(詳情面板會遮擋時間軸渲染區域)。
- 剛打開或刷新會話時,消息行是漸進掛載的,視口附近可能暫時只有 1 條用戶消息。嘗試向上滾動補齊後,時間軸會自動出現。
- 啓動報錯
styles is not defined:這通常是由於常駐 bundle(lib/client.js)過期導致的。執行node build.js重新構建即可。 - 產品升級後異常:產品 DOM 結構可能發生變化,請優先覈對
src/dom.js中的契約清單(如data-conversation-scroll、data-chat-flow-kind等),並重新構建。
技術細節¶
- 代碼結構:插件採用純邏輯模型(
src/model.js)與 DOM 契約 adapter(src/dom.js)分離的設計。src/shell.js負責控制器與 React 視圖渲染。 - 開發命令:
- 運行單測:
node test/model.test.js - 重新構建:
node build.js - 構建產物爲
client.js(動態插件)與lib/client.js(常駐 bundle)。
- 運行單測:
生態背景¶
DSH 理念是「一切皆插件」,社區目錄是獨立站點,與 DeepSeek / 幻方無官方從屬關係。本文檔僅基於已覈實事實編寫。