dsh-message-rewind: Edit sent messages in DSH and roll back subsequent rounds

前言

用 DeepSeek Harness(DSH)做智能体对话时,常见做法是发一条用户消息后,模型连续多轮改代码、跑命令。一旦某条用户消息写错、说偏,或想从中间某一步重来,原生界面往往只能新开对话或手动复制粘贴,很难「从这条消息改起,后面整段对话当作没发生过」。若那一轮还动过工作区文件,消息回滚和磁盘状态也容易脱节。

下面介绍社区插件 dsh-message-rewind(维护者 xCube007,GitHub 仓库 xCube007/dsh-message-rewind):在自己发出的消息气泡上增加 编辑 与 删除,截断该消息之后的所有 turn,并在有记录时可选 连文件一起回滚。插件分类为客户端,面向 DSH Web 界面。

这是什么

dsh-message-rewind 是 DeepSeek Harness 的客户端插件:给「自己发出的消息」增加编辑、删除能力;删除或编辑并重发时,会去掉这条消息之后的对话,并可选择是否把该段对话期间记录到的文本文件改动一并还原。官方简介为:edit sent messages and roll back the following turns, optionally restoring recorded file changes。

插件以 npm 包 dsh-message-rewind 发布(资料中 package.json 版本为 1.2.1),许可证 MIT。宿主要求 DSH 0.2.1-rc.3 及以上(0.2.x)、Node.js ≥ 20;README 注明已在 0.2.1-rc.5 上验证,低于 engines.dsh 要求时宿主启动会拒绝加载。

核心功能

编辑已发送消息

点消息气泡下方的铅笔,在按钮下方弹出编辑小窗;改完点 保存并重发。这条消息之后的内容会被截断,然后按改后的内容重新开始。带附件的消息不支持编辑(附件作为消息内容的一部分存储),但可以删除。

删除消息及后续对话

点垃圾桶,确认后删除该条消息及其后的全部对话。

可选的文件回滚

编辑或删除时,小窗会读取「这条消息之后」记录到的文件改动:默认折叠为一行「已记录 N 处文件改动」,展开可看路径。若有改动,可用二选一开关选择:

  • 只回滚消息(默认):文件保持现状;
  • 连文件一起回滚:文件恢复成该消息之前的内容。

能回滚的:文本文件的新建、修改、删除(含同一轮里先新建再删掉等组合)。

无法回滚或会报错的情况(README 表格摘要):二进制文件;工作区不在 Git 仓库内且文件由 shell 命令修改(可在该目录 git init 后完整记录);会话重启后快照过期(提示「部分改动快照已不可用」,此时只能只回滚消息);记录在案之后文件又被改过(回滚会被拒绝);会话没有工作区时只能只回滚消息。

安全与界面约束

有未结束的轮次时操作会被拒绝,避免与正在执行的 turn 抢写;排队中的消息会随被删记录一起作废,小窗会提示。只有 自己发出的消息 才有编辑/删除;「复制」按钮仍在,位置不变。快照失效、非 Git 工作区等限制会在小窗里直接标出。

底层实现上,DSH 会话日志只追加、没有「删掉中间一段」的 API,插件会 fork 出截断后的分支并处理原会话;侧边栏仍是一条同名对话,但会话 ID 会变,若在别处引用过旧 ID 需重新获取。原会话日志正常情况下会被删除,仅当日志目录占用删不掉时会留在归档里。

安装与启用

需要 DSH 0.2.1-rc.3+ 与 Node.js ≥ 20。推荐从 npm 安装,包也在社区插件市场 awesome-dsh-plugin.com 条目 中列出(社区目录为独立站点,与 DeepSeek / 幻方无官方从属关系)。

最省事的一条命令(README 原文):

dsh plugin --profile web add dsh-message-rewind

也可在 DSH 内:设置 → 插件 → 搜索 dsh-message-rewind。

手动安装等价于三步:在 profile 的 ~/.dsh/profiles/<profile>/package.json 增加依赖 "dsh-message-rewind": "^1.2.0";在同 profile 的 cordis.patch.yml 插入 id: message-rewind、name: dsh-message-rewind;在该 profile 目录执行 pnpm install 后重启 DSH 或在设置里启用。

装好后,启动日志里应出现 message-rewind 且状态为 active;刷新页面后,自己消息气泡下方会出现 编辑 / 删除 / 复制。

卸载:从 package.json 去掉依赖,删除 cordis.patch.yml 里对应 insert 段,pnpm install 后重启 DSH。

典型用法

  1. 点铅笔 → 在小窗中修改正文 → 按需选择「只回滚消息」或「连文件一起回滚」→ 保存并重发。
  2. 点垃圾桶 → 确认 删除 → 同样可选是否连文件回滚。
  3. 若提示「当前有未结束的轮次」,先停止正在运行的任务再操作。

小窗跟随按钮定位;靠近视口底部时会翻到按钮上方,窄屏会收窄宽度,亮色主题与暗色共用同一套层级。点窗外或按 Esc 收起。

适用场景与注意

适合经常在 DSH Web 里长对话、需要改口或从中间某条用户消息重试的开发者。需要与磁盘状态一致时,在工作区为 Git 仓库、且改动为文本文件的前提下,「连文件一起回滚」才有意义;二进制或 shell 改文件等场景 README 已说明限制。

插件随当前 DSH profile 加载,以 当前 dsh 进程权限 运行;安装前建议查看 GitHub 源码 与 MIT 许可证,确认符合你的安全策略。问题与功能建议可走 Issues。

结尾

dsh-message-rewind 把「改已发消息、删后续轮次、可选还原文件」收进消息气泡下的两个按钮,减少重开对话和手工对齐工作区的成本。目录页:skillhub.cn 插件页;源码与完整说明:github.com/xCube007/dsh-message-rewind。

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

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

Xiaoye