Bites the DSH:DeepSeek Harness 原生会话只读回放

前言

DeepSeek Harness (DSH) 的核心理念是“一切皆插件”。在开发智能体或调试会话逻辑时,我们经常需要回顾历史对话的执行过程,而不仅仅是查看文本。现有的方式往往需要在多个窗口或标签页之间切换,或者仅仅依靠手动滚动来查找状态变化。

bites-the-dsh 插件提供了一种更直接的方案:它将 DeepSeek Harness WebUI 的原生对话视图转化为一个可回放的时间线。这意味着你可以在不离开当前会话界面、不打开额外面板的情况下,像播放视频一样重演历史交互。

插件简介

Bites the DSH 是一个为 DeepSeek Harness WebUI 设计的只读、可脚本控制的会话回放插件。

  • 维护者:memorax-ai
  • 许可证:MIT
  • 核心价值:在 DSH 原生界面内提供历史回放能力,同时保持会话源的完整性。

它通过 Harmony 补丁机制修改了 DSH 的 Conversation 和 Chat 服务,使得会话头控制栏可以直接唤起回放模式。

核心功能

插件将原生对话视图改造为回放视图,主要包含以下能力:

  • 原生集成与入口:利用 DSH 原生的会话头控制栏作为入口,不开启独立面板。回放期间,原生编辑器、模型调用、停止、分支和助手写入等操作均被禁用,确保视图只读。
  • 播放控制:提供完整的播放控制,包括暂停、快进、倒放、单步执行(按事件跳转)。支持调整播放速度和空闲间隙压缩,以优化回放体验。
  • 直接跳转:支持按事件、按轮次或按时间戳直接跳转。
  • 模拟打字预览:在只读模式下,原生编辑器会模拟显示下一条直接的用户消息,但不修改实际草稿。
  • 脚本控制 API:插件暴露了 ctx.sessionPlayback 控制器,允许其他插件或脚本通过代码控制回放状态。
  • 历史投影:通过 DSH 的原生 ChatView 进行历史投影,源会话与当前“回放指针”独立运行,互不干扰。

安装与启用

在终端中执行以下命令安装插件:

dsh plugin --profile web add @ch4acko3/bites-the-dsh
dsh harmony status --profile web

安装完成后,确保所有补丁状态为 bound。然后重载 DeepSeek Harness WebUI,打开任意会话,在会话头的控制栏中点击 Replay session 即可进入回放模式。

典型用法:脚本控制

除了手动控制,插件提供的 ctx.sessionPlayback 服务允许其他插件或脚本自动化回放流程。

以下是一个使用 TypeScript 控制回放的示例:

const playback = ctx.sessionPlayback

// 进入指定会话的回放模式
playback.enter(sessionId)

// 跳转到特定时间点(Unix epoch 毫秒)
playback.seekTime(sessionId, Date.parse('2026-08-20T12:00:00Z'))

// 设置播放速度并开始播放
playback.play(sessionId, 1)

// 暂停回放
playback.pause(sessionId)

// 退出回放模式
playback.exit(sessionId)

该服务还支持事件/轮次跳转、反向播放、速率和空闲间隙设置、订阅以及位置读取。它有意不暴露任何会修改源会话的操作,确保回放过程是纯粹的可视化。

适用场景与注意

  • 适用场景:调试智能体在特定时间点的行为、向非技术人员演示历史对话流程、分析会话状态机的历史跳转逻辑。
  • 只读约束:回放期间,原生编辑器和会话切换操作会被阻塞。插件仅修改视图展示,不会对源会话数据产生副作用。
  • 权限与安全:作为 DSH 插件,它以 Harness 进程的权限运行。安装前建议检查其源码与许可证。

总结

Bites the DSH 适配了 DSH 的 Harmony 生态系统,为开发者提供了一个轻量级的会话回放工具。它通过原生 UI 的无缝集成和严格的只读设计,解决了历史会话复盘的痛点,配合脚本 API,可以作为更复杂工作流的一部分。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜