前言¶
用 DeepSeek Harness(DSH)跑長任務時,一個會話很快會積累幾十條用戶消息。想回看某次指令的原文、覈對當初給的約束,只能在消息流裏一屏一屏滾動,會話越長成本越高。
@lcthe/dsh-timeline-rail 把這件事變成一次點擊:沿對話左邊緣爲每條用戶消息畫一條細刻度,組成時間軸;懸浮刻度可預覽消息,點擊刻度直接跳轉。本文介紹它的功能、實現和接入方式。
這是什麼¶
@lcthe/dsh-timeline-rail 是 DSH 網頁會話的消息時間軸導航條,作者 lcthe,當前版本 0.2.12,MIT 許可。它在對話左邊緣、composer 卡片上方渲染一條 1px 豎軌,爲每條 durable 用戶消息繪製一條等間距水平刻度,固定 12px 間距,刻度居中於豎軸。
DSH 的理念是「一切皆插件」,客戶端 UI 同樣通過槽位擴展。這個包註冊單個入口到 conversation.input.dock 槽位,屬於純展示型客戶端插件,不定義新服務。
Desktop 與 Web 均可使用。DSH 桌面應用是 Electron 外殼,內嵌同一套瀏覽器客戶端,所以面向 web 的插件在兩端表現一致;只有 headless/TUI profile 沒有 composer 槽位,不會渲染任何內容。
核心功能¶
- 等間距刻度:1px 豎軌上,每條用戶消息一條水平刻度,固定 12px 間距。
- 長曆史獨立滾動:歷史很長時,軌道內容在軌內自行滾動,而不是壓縮刻度間距;滾動軌道不會帶動對話區滾動。
- 完整歷史加載:會話打開後,通過
loadOlder()自動串行加載更早的歷史頁,直到沒有更多頁,每頁到達即添加對應刻度。 - 點擊跳轉:將所選的第 N 條用戶消息對齊到可見消息區頂部。
- 懸浮預覽:寬卡片顯示加粗、限 2 行的用戶消息,以及限 3 行的助手回覆;純圖片/附件消息顯示帶標籤的佔位。
- 主題感知:顏色取自
--dsw-*token,自動跟隨亮/暗主題,無需額外配置。 - 不擋交互:除刻度本身外
pointer-events爲none,不阻擋消息區或 Session Log 的點擊與滾動。
實現方式¶
DSH 的網頁 GUI 是一個 Cordis 組合,本包是運行在其上的客戶端插件,做三件事:
1、向 conversation.input.dock 槽位(composer 卡片上方的附加帶)註冊單個入口。
2、通過槽位的 useSession 讀取即時 ConversationSnapshot,把每個 durable 的 kind: 'user' 節點映射爲一條刻度。
3、測量 [data-conversation-scroll]、[data-composer-seat] 等 scrollport,把軌道鋪在左邊緣;定位計算複用產品自身的穩定 data 屬性([data-conversation-scroll]、[data-chat-flow]、[data-chat-anchor-key]、[data-composer-seat])。
它不定義新服務,也不改動消息區本身的邏輯。
安裝與啓用¶
前置條件:一個帶瀏覽器客戶端的 DSH 部署——桌面應用(內嵌 Web UI)或 Web 版均可。插件是純展示組件,只在存在消息輸入區(composer)的位置渲染。
1、安裝包:
pnpm add @lcthe/dsh-timeline-rail
2、在 cordis.yml 中,與 bundle 行相同的 include 層級添加插件行:
- insert:
- id: dsh-timeline-rail
name: '@lcthe/dsh-timeline-rail'
經過上面的步驟,打開會話後即可在對話左邊緣看到時間軌。完整接線細節見倉庫中的 INSTALL.cordis.yml.md。
典型用法:會話內動態加載¶
如果只想快速試用,可以不走 npm 安裝:在會話裏直接讓 agent 用動態 Cordis 工具(cordis_define + cordis_run)加載本包。這條路線適合快速評估;npm 包是穩定、可分享的形式。
適用場景與注意事項¶
適合的用戶:主要通過 DSH 桌面版或 Web 版工作、會話歷史偏長、需要頻繁回溯定位消息的人。headless/TUI 環境沒有 composer 槽位,這個插件不會顯示任何內容。
使用前有幾點需要知道:
1、刻度是等間距的(每條用戶消息一個刻度、固定 12px 間距),並不代表各消息的真實滾動位置。按真實位置渲染的 minimap 模式是作者列出的後續工作。
2、預覽有截斷:用戶消息限 2 行、助手回覆限 3 行,軌道內沒有展開手段;點擊刻度可以跳到完整消息。
3、插件針對 0.0.1-rc.1 發佈線的 Harness 客戶端槽位契約。若後續 RC 更改 conversation.input.dock 契約,本包可能需要升級。peerDependencies 要求如下:
| 包 | 版本範圍 |
|---|---|
@deepseek-ai/cordis |
>=4.0.1-rc.1 |
@deepseek-ai/dsh-client-locale |
^0.0.1-rc.1 |
@deepseek-ai/dsh-client-runtime |
^0.0.1-rc.1 |
@deepseek-ai/dsh-client-ui-conversation |
^0.0.1-rc.1 |
@deepseek-ai/dsh-client-ui-slots |
^0.0.1-rc.1 |
react / react-dom |
^18.2.0 |
4、安全提醒:插件以當前 dsh 進程的權限運行,安裝前建議檢查源碼與許可證。本包源碼公開在 GitHub,採用 MIT 許可。
小結¶
@lcthe/dsh-timeline-rail 解決的問題很具體:在長會話裏定位某條用戶消息。它不碰消息流本身,只在左邊緣加一條可懸浮、可點擊的時間軸,改動範圍小。如果你經常在 DSH 裏跑長會話,值得接入試試。
- GitHub 倉庫:https://github.com/lcthe/dsh-timeline-rail
- 社區插件目錄頁:https://www.skillhub.cn/plugins/lcthe/dsh-timeline-rail
社區目錄爲獨立站點,與 DeepSeek / 幻方無官方從屬關係。