前言¶
在 DeepSeek Harness(DSH)裏跑長會話時,右側消息流會越滾越長。想回到某次提問,只能手動翻找,成本高,也容易打斷當前閱讀節奏。Codex 類產品在會話左側提供消息刻度導航,懸停可預覽、點擊可跳轉;DSH Web 默認沒有同等能力。
下面介紹社區插件 dsh-message-rail(維護者 wx-yss):在 DSH Web 對話視圖左側掛載一條 Codex 風格的消息導航軌道,用等距刻度標出每條用戶消息,支持懸停預覽與點擊跳轉。交互靈感來自 Codex 的消息導航欄,本插件與 OpenAI 無關聯。
這是什麼¶
dsh-message-rail 是 DSH 的 Web 客戶端插件(dsh.client,platform: web),分類爲客戶端。它在會話左側渲染一條 42px 寬的刻度軌道,每條用戶消息對應一個刻度;僅在對話消息流掛載時顯示,切到軌跡頁會隱藏,切回對話頁自動恢復。
插件通過 DSH history API 在後臺獨立建立用戶消息索引,不把助手回覆、工具調用和歷史消息寫入右側 ChatView。少於 2 條用戶消息時軌道自動隱藏。
許可證爲 MIT,當前 npm 版本 0.1.7。GitHub 倉庫:wx-yss/dsh-message-rail(13 stars,1 fork)。社區目錄頁:SkillHub。
核心功能¶
刻度軌道與虛擬滾動¶
軌道默認高度 500px(約 50 條刻度),屏幕不足時撐滿可用高度;每條用戶消息一個刻度,固定 10px 間距。無論索引多少條,只渲染可見窗口 ±12 條緩衝;首尾還有更多刻度時以 40px 漸隱提示。軌道支持滾輪瀏覽,隱藏滾動條;手動滾動後停止跟隨最新刻度。
懸停預覽¶
懸停刻度時,寬度按 Codex 五級展開(6/10/14/20/26px),右側浮出預覽卡,顯示序號、相對時間與消息文本。鍵盤 focus 等價於 hover;支持 prefers-reduced-motion 降級。
點擊跳轉¶
目標消息已在視口時只高亮氣泡;否則瞬時定位——普通消息居中,超高消息頂部留白。目標尚未加載時,保護右側當前閱讀錨點,逐頁調用 loadOlder() 尋找目標,找到後立即停止;後一次點擊可取代前一次跳轉,並清除舊高亮。
獨立索引與穩定切換¶
完整刻度通過 connection.api.sessions.history() 建立(子 Agent 使用 subagents.history())。索引期間先顯示右側已加載的刻度,完整索引完成後一次性切換,避免刻度持續重排閃動。索引頁數上限 400(約 2 萬個表層消息);超過上限時保留右側當前已加載刻度,不展示不完整的全量索引。
當前位置與加載反饋¶
視口 40% 線最近的消息刻度深色高亮,滾動即可感知讀到哪。點擊未加載刻度時,根據 history 分頁預估剩餘頁數;預計超過 1 秒時立即提示,預估較快但實際超時則在 1 秒後補充提示,目標組件就緒後關閉。
索引範圍¶
軌道索引 kind === 'user' 的普通提問與 kind === 'steering' 的運行中插話,不包含助手回覆、工具調用、命令與注入上下文(kind === 'context')。配色跟隨 DSH 運行時主題(--dsw-* 設計令牌),明暗主題自適應。
安裝與啓用¶
插件通過 DSH 的 dsh 命令安裝,適用於 DeepSeek Harness 0.1.0-rc.6 或更高、Node.js 22+。下面每個命令給出兩種等價寫法:dsh 形式適用於已全局安裝 dsh;npx 形式無需全局安裝,效果相同,README 推薦後者。
從 npm 安裝(推薦)¶
# dsh 形式
dsh plugin --profile web add dsh-message-rail
# npx 形式(無需安裝 dsh)
npx @deepseek-ai/dsh plugin --profile web add dsh-message-rail
從 GitHub 安裝¶
# dsh 形式
dsh plugin --profile web add github:wx-yss/dsh-message-rail
# npx 形式
npx @deepseek-ai/dsh plugin --profile web add github:wx-yss/dsh-message-rail
本地開發安裝¶
git clone git@github.com:wx-yss/dsh-message-rail.git
cd dsh-message-rail
pnpm install
npx @deepseek-ai/dsh plugin --profile web add .
重啓¶
安裝後需完整重啓 dsh web:
# dsh 形式
dsh web
# npx 形式
npx @deepseek-ai/dsh web
典型用法¶
打開包含至少兩條用戶消息的會話,左側即出現導航軌道。經過上面的步驟安裝並重啓後,可按以下方式操作:
- 懸停刻度 → 波紋展開 + 預覽卡(序號 / 時間 / 文本)
- 點擊刻度 → 跳轉到對應用戶消息
- 滾輪在軌道上滾動 → 瀏覽更早或更晚的刻度
- 滾動會話正文 → 當前位置刻度高亮
適用場景與注意¶
適合誰¶
- 經常在 DSH Web 裏跑長會話、需要快速回到歷史提問的開發者
- 習慣 Codex 式左側消息導航、希望在 DSH 中獲得類似體驗的用戶
- 需要在對話視圖與軌跡頁之間切換、且只希望軌道出現在對話流的場景
使用前須知¶
DSH 的理念是「一切皆插件」;SkillHub 是社區目錄站點,與 DeepSeek / 幻方無官方從屬關係。插件以當前 dsh 進程權限運行,安裝前應檢查 源碼 與 MIT 許可證。
已知限制¶
- 後臺索引每頁讀取 50 個表層消息邊界;響應可能攜帶 chunk、工具事件等原始記錄,但不會進入右側聊天狀態或 DOM
- 點擊非常早的刻度時,DSH 的
loadOlder()會把中間頁面逐步加入右側且不會自動卸載,屬於 DSH 聊天列表當前的累積渲染限制 - 剩餘時間估算不包含後續目標定位;按固定準備約 0.2 秒、每頁約 0.45 秒校準,屬於體驗預估
- 軌道刻度爲虛擬窗口渲染;DOM 錨點(
data-chat-anchor-key等)爲 DSH 內部契約,隨 DSH 版本可能變化 - 兼容性要求瀏覽器爲 Chrome / Edge / Safari / Firefox 最新版
結尾¶
dsh-message-rail 把 Codex 風格的消息導航帶到 DSH Web:等距刻度、懸停預覽、點擊跳轉,配合獨立全量索引與虛擬滾動,在長會話裏定位歷史提問更直接。如需安裝或查看更新,可訪問 SkillHub 目錄頁 與 GitHub 倉庫。