DeepSeek Harness 消息回滚、删除与恢复插件

前言

DeepSeek Harness(DSH)在会话管理上已经提供了会话 fork、导出等基础能力,但对单条消息的回滚、删除与恢复仍然缺失。官方 SurfaceOp 只有 append 和 replace,没有「解除遮蔽」的操作;官方文档也明确指出会话只能归档,不能删除。这意味着在多轮对话中,一旦出现错误或需要调整历史内容,只能通过「重新开始对话」或手动编辑会话文件来处理,操作成本高且容易破坏会话结构。

@240xu/dsh-message-ops 是一个 DSH web 插件,专注于补齐官方缺失的消息级操作能力:消息回滚(遮蔽该条及其后续内容)、单条删除、以及回滚/删除的恢复。插件通过 surfaceOp: replace 的 system 事件实现这些操作,不直接重写日志文件,由 DSH 引擎的 assertProvenance 校验权限与来源。分支功能在 0.9.0 中已移除,改用官方 session/fork;导出功能也改为使用官方 /api/session.export,避免重复造轮子。

核心功能

本插件提供三类核心能力:

  • 消息回滚:将指定消息及其后的所有内容遮蔽,相当于「向前撤销」到该消息状态。
  • 单条删除:仅遮蔽指定消息,保留其后的内容。
  • 恢复:撤销一次回滚或删除,通过重放被遮蔽区间的消息文本实现,而非直接解除遮蔽。

插件通过右侧 OpsPanel 抽屉提供 UI 入口,支持在消息列表中选择单条消息进行回滚、删除或分支;整会话删除则进入回收站 tab,需输入会话标题确认后保留 7 天,可通过 purge 永久删除。

安装与启用

插件为纯 Node.js 实现,零 npm 依赖,仅使用 node:fs / node:zlib / node:path / node:url,压缩使用 Node 内建 zlib.zstdCompressSync,需要 Node ≥ 23.5,在 Termux 与 Windows 上通用。

安装命令如下:

# Termux / Linux
dsh plugin --profile web add @240xu/dsh-message-ops

# Windows
dsh plugin --profile web add @240xu/dsh-message-ops
# 或本地目录:
dsh plugin --profile web add file:C:/path/to/dsh-message-ops

安装完成后,重启 DSH web 实例,在会话头部点击 Message ops 按钮,即可打开 OpsPanel 抽屉。

典型用法

在会话列表中打开一个会话后,通过以下方式触发消息操作:

  • 会话头部的 Message ops 按钮 → 右侧 OpsPanel 抽屉(消息 / 回收站双 tab)。
  • 助手消息 hover 行的 Revert to here / Quote to composer。
  • 用户消息 hover 行的 Revert to here。
  • 输入框上方的回撤贴条:展开后可逐条 Restore。
  • 侧栏会话行菜单。

在 OpsPanel 中选择一条消息,点击「回滚」或「仅删除」后,系统会进行二次确认;运行中的会话会被拒绝,提示先停止会话。回滚或删除后,可通过「恢复」按钮或输入框上方的贴条逐条撤销操作。

适用场景与注意

本插件适合需要在单次会话中调整历史消息、清理错误内容或回退到某个中间状态的场景。由于插件以当前 DSH 进程的权限运行,安装前建议查看源码与许可证,确保符合你的使用策略。

插件当前版本为 0.11.2,修复了在 live 会话中可能产生重复 turn、历史日志格式兼容性以及合成 turn 竞态等问题。在使用前请确保 DSH 引擎版本与插件兼容。

结语

@240xu/dsh-message-ops 在不破坏 DSH 日志结构的前提下,为会话提供了消息级的回滚、删除与恢复能力,让对话调试与历史调整更加可控。插件目录页与源码仓库如下:

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

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

小夜