前言¶
在 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 / 幻方無官方從屬關係。