dsh-node-nav:DSH Web GUI 的對話節點導航插件

前言

在 DSH Web GUI 中處理較長會話時,常見操作不只是繼續聊天,還包括快速找到某條用戶消息、在滾動閱讀時判斷當前位置,以及輸入框爲空時回看上一條輸入。DSH 的理念是「一切皆插件」,這類體驗可以通過客戶端插件擴展。dsh-node-nav 就是針對 Web GUI 側邊導航與輸入歷史給出的一個插件方案。

這是什麼

dsh-node-nav 是 DSH Web GUI 的客戶端插件,發佈賬號爲 Seryta(GitHub 倉庫與安裝命令指向該賬號)。它的作用是在聊天區右側提供節點串,支持 hover 預覽、點擊跳轉,並讓 active 藥丸跟隨閱讀位置。

該插件採用 MIT 許可證,資料說明其爲純手寫 JS(零構建、零依賴),通過 git 安裝不會觸發構建腳本。

核心功能

dsh-node-nav 的已覈實能力包括:

  • 節點串:在 Web GUI 右側提供縱向節點導航。
  • 全量歷史節點:用於覆蓋 attached 會話 session log 中的歷史用戶消息,減少只依賴當前 DOM 的限制。
  • 底部節點:提供底部節點。
  • hover / focus 預覽:懸停或鍵盤聚焦時顯示消息文本預覽。
  • 點擊跳轉:點擊後平滑滾動到對應消息,並短暫高亮。
  • active 跟隨:閱讀位置變化時,active 狀態跟隨當前閱讀位置。
  • 輸入歷史:輸入框爲空時可按 回填最近一條用戶輸入,連續 翻更早, 翻回。
  • details 避讓:右側 details 打開時進行避讓。
  • 深色模式:支持深色模式。
  • reduced-motion:支持 reduced-motion
  • 自動隱藏:支持自動隱藏。

安裝與啓用

安裝命令爲:

dsh plugin --profile web add github:Seryta/dsh-node-nav

安裝後重啓 dsh web,並刷新頁面。

如果希望從本地目錄安裝,也可以先克隆倉庫:

git clone https://github.com/Seryta/dsh-node-nav.git
dsh plugin --profile web add ./dsh-node-nav

插件會以當前 dsh 進程權限運行。安裝前建議檢查源碼與許可證;該插件資料標註許可證爲 MIT。

典型用法

下面是幾個可復現的使用路徑:

1、安裝並重啓 dsh web 後,在 Web GUI 對話頁打開右側節點串。

2、將鼠標懸停在節點上,或通過鍵盤聚焦節點,查看消息文本預覽。

3、點擊節點,頁面會平滑滾動到對應消息,並短暫高亮。

4、在輸入框爲空時按 ,回填最近一條用戶輸入;繼續按 可翻更早輸入;按 可翻回更近輸入。

5、對於尚未加載進頁面的歷史節點,點擊時會連續觸發頁面「加載更早」,直到該行進入 DOM,再滾動定位。

如果當前 dsh 版本移除了頁面「加載更早」按鈕,資料說明點擊未加載節點會提示目標消息未能定位。

適用場景與注意

適合使用 DSH Web GUI、需要在長會話中定位用戶消息、查看當前位置或回看輸入歷史的開發者。

需要注意以下幾點:

  • 插件以當前 dsh 進程權限運行,安裝前需要檢查源碼與許可證。
  • 輸入歷史僅覆蓋當前打開的(live)會話;host 端點只查 attached 會話,未打開的歷史會話無 composer 焦點,不適用輸入歷史。
  • 全量列表端點如下:
/plugins/dsh-node-nav/api/users

該端點從 attached 會話的 session log 提取全部真實用戶消息;端點不可用或冷會話(未 attached)時回退到純 DOM 掃描。

  • 輸入歷史與跳轉依賴以下 dsh 客戶端契約:
[data-chat-anchor-key]
[data-composer-card]
hooks.input
props.inputActions

harness 大版本改動這些契約時需同步適配。

  • 未加載節點點擊依賴頁面「加載更早」按鈕存在,資料標註上限爲 30 批;按鈕被移除的 harness 版本中,點擊未加載節點會提示目標消息未能定位。

結尾

dsh-node-nav 提供的是 DSH Web GUI 側的導航增強:節點串、預覽、跳轉、閱讀位置跟隨和輸入歷史回看。倉庫地址爲 https://github.com/Seryta/dsh-node-nav。已覈實資料未給出目錄頁 URL;DSH 社區目錄是獨立站點,與 DeepSeek / 幻方無官方從屬關係。

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

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

小夜