前言¶
在 DSH 裏排查一次長會話,常見做法是切到「對話」或「軌跡」視圖逐條翻看。整段內容已經一次性渲染完畢,很難還原「用戶發出請求 → 思考 → 工具調用 → 輸出」的時間順序;要把同一串用戶請求在新環境裏重跑,往往只能手動複製粘貼。下面介紹的 dsh-revive(維護者 zxsimple,GitHub:zxsimple/dsh-revive)在會話視圖切換器裏增加與「對話」「軌跡」並列的 「回放」 視圖:支持逐輪流式重放、一鍵把原始請求鏈復刻到新會話、以及把回放畫面錄成 WebM。插件分類爲客戶端,純 Web 前端實現,不新增 Node 路由或文件寫入。
這是什麼¶
dsh-revive 是 DeepSeek Harness(DSH)的純 client 插件(當前 package.json 版本 0.1.5,許可證 MIT)。它通過官方 slots 協議註冊 conversation.view,用 uiConversation.binding(sessionId).target("chat") 投影會話數據,並在需要時調用 session.loadOlder() 補全歷史。Node 側 lib/index.js 僅提供空 apply() 作爲 loader 掛載點;實際 UI 在 lib/client.js。插件必須以 bundle 形式聲明(dsh.bundle.patch + profile 的 bundles),否則宿主不會生成 loader 行,視圖裏不會出現「回放」——這是 README 裏強調的 0.1.1 起的關鍵安裝條件。
核心功能¶
流式回放¶
回放不是把整段文本 append 到界面,而是按字符逐個「打」出來(帶光標),視口在流式期間跟隨內容底部;用戶手動上滾超過 64px 會暫停跟隨,滾回底部後恢復。
控制條提供 ⏮ ◀ ▶ ⏭ 與自動播放。打開視圖時默認完整顯示當前輪;按 ▶ 才從該輪開頭重新流式播放,並可跨輪連續推進。
自 0.1.3 起,一輪內文本被拍平爲 segments(用戶/思考/正文/工具調用/工具輸出),共享「代價預算」時鐘,每類內容每字符代價不同,同一時鐘下快慢不同:
| 內容 | 權重(代價/字符) | 效果 |
|---|---|---|
用戶輸入 user / steer |
1.00 | 基準閱讀速度(60cps ≈ 每秒 60 字) |
助手正文 assistant |
1.00 | 基準閱讀速度 |
思考 reasoning |
0.06 | ≈16 倍速刷過 |
工具調用 toolCall |
0.04 | ≈25 倍速 |
工具輸出 toolResult |
0.12 | ≈8 倍速 |
用戶或 steer 內容播完後,時鐘在邊界凍結 1 秒(顯示「⋯ 思考中」),再出思考/正文,模擬發出去後等待首字。思考/工具類超長段落有 skim 封頂(最多約 3.5 秒/段);輸入與正文保持完整閱讀節奏。
速度檔可在界面選擇:慢 25 / 標準 60 / 快 160 / 極速 400 字符/秒,偏好寫入 localStorage。
一鍵復刻到新會話¶
「復刻」會把當前會話的全部原始用戶請求按順序重放到一個 新會話:走官方 uiWorkspace.connectWorkspace 與 session.prompt(..., "queue"),工具由新會話重新執行,屬於真正的重跑,而不是僅回放 UI。
會話輸出錄屏¶
把回放畫面(會話內容本身)逐幀繪製到 1280×720 canvas,用 MediaRecorder 錄成 .webm(VP9),可自動下載;不依賴窗口或屏幕錄製權限。實現依賴 canvas.captureStream() + MediaRecorder(README 記載在 DSH 桌面版 0.2.1-rc.3 上實測可用,video/webm;codecs=vp9)。
錄製相關行爲(0.1.2 起)包括:畫布按片段預排版,每幀只畫已揭示部分;時長檔 30 / 60 / 120 秒 / 不限——選定時會抬高揭示速率以塞進目標時長(「不限」時按 240 秒硬上限加速);錄製結束生成 blob 並觸發下載,按鈕旁可再次「下載視頻」;錄製中傳輸控件與下拉鎖定。字體棧含 Microsoft YaHei,便於 Windows 上中文顯示。
安裝與啓用¶
插件已收錄到 DSH 插件目錄(分類 Sessions & Messages),可在 dsh 插件市場裏搜索 dsh-revive 安裝。README 中的目錄條目頁:https://awesome-dsh-plugin.com/p/zxsimple/dsh-revive/。
也可一條命令從 GitHub 倉庫安裝(須使用資料原文命令,profile 爲 web):
dsh plugin --profile web add github:zxsimple/dsh-revive
本地開發時可在 profile 的 package.json 裏 link 依賴,並把 bundle 名加入 dsh.profile.bundles,然後 pnpm install 並 完全重啓應用(boot 時纔會重新組裝 loader 行):
"dependencies": { "dsh-revive": "link:/path/to/dsh-revive" },
"dsh": { "profile": { "bundles": [ /* ... */, "dsh-revive" ] } }
純 client 插件也必須聲明 dsh.bundle.patch 並出現在 bundles 中,否則 profile 可能無法正常 boot,且視圖切換器不會出現「回放」。
典型用法¶
- 安裝並重啓 DSH Web 客戶端後,打開任意會話。
- 在會話視圖切換器中選擇 「回放」(與「對話」「軌跡」並列)。
- 需要回顧過程時:用游標或 ▶ 從某輪開頭流式播放;可在速度下拉中選擇慢/標準/快/極速。
- 需要在新環境裏重跑同一串用戶請求時:使用界面上的 一鍵復刻,等待新會話創建並按隊列提交原始 prompt 鏈。
- 需要分享或存檔「看起來像 live 輸出」的畫面時:選擇錄製時長檔,開始錄製;結束後保存
.webm,必要時用按鈕再次下載。
數據與 API 行爲在 README 中對照 DSH 0.2.1-rc.3 桌面版產物覈對過(如 slots.register 註冊 conversation.view、uiConversation.binding 與 session.prompt 等)。
適用場景與注意¶
適合誰: 需要演示或復盤 agent 會話節奏的人;要把歷史會話的用戶請求鏈在新 workspace 裏 honest 重跑的人;希望導出會話回放爲視頻、且不想開系統錄屏權限的人。
平臺: 插件不含操作系統相關 Node API,平臺跟隨 DSH Web 客戶端。README 記載 macOS(DSH 桌面版 0.2.1-rc.3)已實測;Windows / Linux 爲預期可用、插件側無移植項,但錄製 codec 若在個別環境只剩 video/mp4 等,可按 README 建議把控制台報錯提到 GitHub issue。
安全與信任: 插件在 當前 dsh 進程權限 下運行;復刻會創建新會話並重新執行工具。安裝前請自行查看倉庫源碼與 MIT 許可證,確認符合你的環境策略。社區插件目錄爲獨立生態站點,與 DeepSeek / 幻方無官方從屬關係。
結尾¶
dsh-revive 把「看會話」擴展爲可控制的流式回放、可重跑的一鍵復刻,以及基於 canvas 的 WebM 錄製,且嚴格走 DSH 官方 slots 與會話 API。更多信息見目錄頁 skillhub.cn/plugins/zxsimple/dsh-revive 與倉庫 github.com/zxsimple/dsh-revive。