前言¶
在 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。