← 返回列表
⚠ 装前注意
按原始 token 节奏重演一次 DeepSeek Harness…
基本兼容但装前注意:未发布到 npm registry,仅可从源码安装 · 最近上游提交 2026/9/21 · 已提供中文文档
以原始 token 节奏回放 DeepSeek Harness 会话——一个应用内播放剧场,支持播放/暂停/单步/速度/跳转。
综合分
32.8
GitHub 分
32.8
用户评分
—
★ Stars
4
周下载量
—
兼容 / 相关生态插件(非 dsh 原生,请按其对应运行时安装)
git clone https://github.com/ItBayMax/dsh-replay-theater.git信任档位:已验证本站已于 3 天前真实安装成功(L4 · 真实安装)
- 是什么
- 生态插件(可安装,未声明 dsh 能力)
- 装得上吗
- 本站已真实安装成功(L4 · 真实安装,非静态推断)
- 安全吗
- 本站尚未对该插件做风险分级(暂未覆盖,不等同于无风险)
- 还在维护吗
- 活跃:最近一次提交在 4 天前
档位由下列信号合成:本站实装验证(真实安装,当前最高到 L4)· 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。下方各区块是它的证据明细。 验证判据与等级说明 →
🟢实装验证通过· 2026/9/23
由本站实装验证器在真实 dsh 环境安装成功,非静态推断。
数据截至 2026/9/23(元数据每日更新 · 实装验证按队列轮转,单条结论的验证时间见上方)
安装兼容性检查⚠ 装前注意
以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。
✗npm 包dsh-replay-theater(未发布到 npm,仅可源码安装)
✓Node 引擎要求 ^22.19 || >=24 · 基线 Node 22.19 满足
✓dsh CLI 依赖未声明 dsh 版本约束
✓入口文件main/exports/bin 已声明
未发布到 npm registry,仅可从源码安装
验证方式:npm registry 存在性 + package.json 静态校验 · 最后验证 2026/9/20 15:20:35
依赖的 DSH / Cordis 模块
@deepseek-ai/cordis用户评分
还没有人投票,来当第一个
订阅周报,不错过优质插件更新
每周一封 · 高评分插件 + 新用户活动
README
由 DeepSeek 最新模型翻译生成dsh-replay-theater dsh plugin Node 按原始 token 节奏重演一次 DeepSeek Harness 会话——站内播放剧场,支持播放、暂停、单步、倍速、拖拽跳转。 不是静态时间线:助手的回答一个 token 一个 token 地长出来,间隔就是当时生成时记录的真实毫秒数。 剧场标签页正在回放一次录制的会话 更多截图——播放条与并排对比 播放条与 marker 轨。播放/暂停、单步、重播、拖拽跳转、倍速,以及"最长停顿"上限。 标量事件(step/start、tool/result…)单独成轨;压缩了多少静默会直接写在条上—— 回放改动了数据的时间,所以它必须告知。 播放条与 marker 轨 并排对比(v2)。把一份录制的 session.jsonl 与当前会话并排放,剧场会报出两次运行 从哪里开始不一致,并给出各自的跳转坐标。 两次运行并排对比,标出首个分歧点 为什么会有这个插件 上游把每个 token 的真实到达间隔完整保留在会话日志里,并写明了原因: // packages/core/session/src/chunk-rows.ts:44 /** Epoch-ms gaps between consecutive members; length is one less than the member count. / dt: number[] "one entry per member, never joined — token boundaries are data"* —— chunk-rows.ts:48 打包存储时刻意不把一段 run 的成员合并成一个字符串,所以节奏得以保留。而 harness 里没有任何东西用过这份数据。这个插件就是那个使用者。 安装 dsh plugin --profile web add dsh-replay-theater 或从仓库直装: dsh plugin --profile web add "github:ItBayMax/dsh-replay-theater#main" 包里声明了 dsh.bundle,CLI 会自动把它并入 profile 的层列表——不需要手改 cordis.patch.yml。重启 dsh web 打开任一会话,Chat 与 Trajectory 旁边会出现 剧场 标签页。 使用 | 控件 | 行为 | |---|---| | ▶ / ❚❚ | 播放 / 暂停。已在末尾时按播放会从头重播 | | ⏴ / ⏵ | 单步后退 / 前进一帧(一个 token)。单步会暂停 | | ⤾ | 回到开头并暂停,保留当前倍速 | | 进度条 | 跳转到绝对位置 | | 倍速 | 0.5× 到 8× | | 最长停顿 | 压缩超过该时长的静默(200ms … ∞)。选 ∞ 保留真实墙钟节奏 | | 加载更早的历史 | 向前翻一个窗口,播放位置不丢 | 只要有静默被压缩,播放条就会显示压缩了多少毫秒。回放改动了数据的时间,所以它必须告知。 回放什么 浏览器会话窗口里的一切:助手正文、推理、工具调用参数(各自成流),以及标量事件(step/start、tool/result…)作为 marker。 工具调用显示为累积的 JSON + 工具名,不是完整工具卡片。卡片是 ui-tool 的职责,这个插件专注节奏。 边界 - 无随机访问:dsh 客户端无法请求任意序号——历史只能向前翻页、一次一个窗口(session.loadOlder()),而生产环境单个尾页可达几十万事件。所以剧场回放已加载的窗口,并给一个显式的"加载更早"动作,而不是悄悄把整条日志拉进浏览器。 - 长静默默认被压缩(上限 2000ms)。要真实节奏请选 ∞。 - 实时会话会在你脚下增长:窗口是被跟随的,追加帧时播放位置不会丢。 - 类型是镜像而非导入:@deepseek-ai/dsh-api-session-controller 未发布到 npm,所以 src/core/wire.ts 与 src/client/dsh.ts 自持上游形状的结构化镜像,逐条标注读取自哪个 file:line(钉在 dsh 0a53fb5 / 0.1.2-alpha.2)。它们结构兼容,将来换成真 import 不需要改任何调用点。 兼容性 针对 dsh 0.1.2-alpha.2(上游 commit 0a53fb5)开发。只读公开客户端面——session.eventSource 与 session.loadOlder()——因为上游在 0.1.2 里删掉了整个 client/runtime 包,依赖内部实现活不长。 开发 npm install npm test # 158 个测试 npm run typecheck 回放核心(src/core/)零框架零 dsh 依赖,所以它的规则不需要浏览器或 harness checkout 就能单测: npx vitest run tests/timeline.spec.ts tests/player.spec.ts 测试夹具分两种,理由有据: - tests/fixtures/synthetic.ts——手工构造、dt 数组精确。节奏断言都在这里。 - tests/fixtures/corpus-*.json——由 make-corpus-fixture.mjs 从上游录制会话派生,用来证明 wire 镜像能吃真实形状。它无法承载节奏断言:上游语料归一化时剥掉了 seq/time,而全部 118 个快照会话里最长的"连续同块 delta"只有 2 个成员。 架构与各阶段实现记录见 docs/。 离线命令行 回放核心零框架依赖,所以浏览器标签页用的那些函数在脚本里同样可用: npm run build node scripts/replay-cli.mjs path/to/session.jsonl --frames 20 node scripts/replay-cli.mjs run-a.jsonl run-b.jsonl # 对比两次运行 比如对比两份上游快照,会报出它们从哪里开始不一致: comparison: diverged at frame 14 (marker-type), left seq 15 / right seq 15 许可 MIT