dsh-rewind:为 DeepSeek Harness 引入时间旅行能力

在 DeepSeek Harness (dsh) 的插件化架构下,开发者常需要回退对话历史或修正代码变更。dsh-rewind 插件将 Claude Code 的 rewind 能力移植到 dsh,允许用户指代历史消息,把对话、代码或两者一起回退到那个时刻,或从那里开一个摘要分支。

插件概览

dsh-rewind 是一个第三方工作流插件,由 SipengXie2024 维护,采用 MIT 许可证。它通过在 dsh 客户端侧替换用户消息渲染器,并配合主机侧的 RPC 网关与捕获中间件,实现文件快照的捕获与恢复。

核心功能

插件提供了菜单项,对位 Claude Code 的 rewind 弹出菜单:

  1. 恢复对话(编辑重跑)
    气泡就地变编辑框,确认后 fork 到上一轮 turn/end 边界,打开子会话并重发改写后的消息。

  2. 恢复对话与代码
    fork 前先展示文件回退卡片;确认时先把勾选文件写回边界前内容,再 fork 重跑。

  3. 仅恢复代码
    只做文件回退,不 fork 不发消息,留在当前会话。

  4. 摘要至此,开新分支
    fork(含点击轮)→ 打开分支 → 自动执行 /compact 压缩头段历史。

插件支持捕获 write、edit、str_replace_editor 工具变更。菜单打开时会并行探测文件变动数,若无变动则置灰对应选项。支持 14 天自动 GC(垃圾回收)以及热重载(/reload dsh-rewind)。

安装与启用

安装前请确保已构建好安装包。

1、构建插件

npm run build
npm pack

2、安装插件

dsh plugin --profile web add dsh-rewind-<version>.tgz

3、配置参数
在 dsh 的 settings.yaml 中添加以下配置:

rewind:
  captureEnabled: true   # 关掉即停止捕获(已有快照不动)
  retentionDays: 14      # 0 = 立即全部过期(下次扫描清空)
  maxFileBytes: 10485760 # 超过此大小的改前内容不入库(标 lost)

典型用法

安装并配置完成后,在对话历史中找到任意一条用户消息,点击出现的回退菜单即可进行操作。菜单支持通过图示确认文件变更,并在确认后执行相应的恢复逻辑。

适用场景与边界

此插件适合需要精细控制对话历史和代码变更的开发者。

请注意以下边界条件:

  • bash 等副作用工具不兜底:只捕获三个结构化写工具,模型经 bash 写的文件或跑掉的命令无法回退。
  • 恢复不经审批门:直接写入文件,不触发沙箱升级弹窗。
  • 带图消息重跑:读取附件转 base64 重发,读取失败时降级为纯文本重发并提示。
  • steering 消息无回退按钮:fork 是轮粒度,轮中插话没有独立边界。
  • 首条用户消息禁用回退:无上一轮边界可回。
  • create 的文件只报告需手动删除:插件不删除文件,需手动处理。

dsh-rewind 通过文件快照机制和边界控制,为 dsh 用户提供了类似时间旅行的调试能力。更多细节可查阅官方目录或源码。

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

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

小夜