dsh-undo:DSH 会话回溯与重编辑工具

前言

在 DSH 会话中,一旦提示词发送,通常无法直接回退编辑。这导致开发者需要复制文本并重新生成,效率低下。dsh-undo 插件通过回溯和分叉机制,允许开发者返回到任意历史提示词进行重编辑。

简介

dsh-undo 是一个为 DSH 会话提供撤销按钮和侧边尺子的插件。它基于 Cordis 的可逆性范式工作:会话日志即上下文,撤销提示词即恢复到之前的上下文前缀(Withdrawal),而不改变原始日志。由 tofe98 维护,开源协议为 MIT。

核心功能

插件提供了两种交互方式:

  1. 会话头部的 ↶ 按钮
    在会话头部显示撤销按钮。悬停后会出现下拉菜单,列出之前的提示词轨迹(按时间倒序,每条用户或引导消息一项)。选择其中一项,会在该提示词的边界前分叉会话,打开子会话并预填充提示词文本。

  2. 左侧边尺
    在对话左侧显示一条边尺,每条用户或引导消息对应一个刻度。点击刻度可跳转到该消息,右键点击刻度则执行撤销操作(需确认)。

安装与启用

通过插件市场或直接运行以下命令安装:

dsh plugin --profile web add github:tofe98/dsh-undo

典型用法

  1. 在会话中发送几条提示词。
  2. 悬停会话头部的 ↶ 按钮,选择一条较早的提示词。
  3. 系统会打开一个分叉的子会话,对话状态回退到该提示词之前,编辑器中预填充了该提示词文本。
  4. 编辑文本并重新发送,或者直接右键点击左侧边尺上的对应刻度,执行撤销(需确认)。

技术说明

  • 分叉语义:原始会话保持不变,撤销操作本质上是创建了一个子会话(Fork)。根据 Cordis 的范式,这被称为“Withdrawal”(恢复),不破坏原始日志。
  • 重建机制:子对话通过 DSH 的投影机器重建。
  • 副作用保留:被撤销回合的外部副作用(如文件编辑、Web 调用)不会被撤销。这些副作用位于系统边界之外,插件仅负责恢复对话状态。
  • 实现细节:撤销调用 sessions.fork({ sessionId, atSeq: boundary }) 并使用 inputActions.setDraft 预填充文本。

结尾

dsh-undo 通过分叉机制解决了 DSH 会话中无法回退编辑的痛点,适合需要在长对话中调整早期输入的开发者。

  • 插件目录:https://www.skillhub.cn/plugins/tofe98/dsh-undo
  • 源码仓库:https://github.com/tofe98/dsh-undo
羽毛球分组比赛记分
小程序二维码

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

小夜