dsh-edit-rerun:编辑历史提示词并在分支会话重跑

前言

在 DeepSeek Harness(DSH)里做多轮对话时,常见需求是:某一轮用户提示词写错了或想换说法,希望从那一轮重新跑,而不是整条会话推倒重来。就地改写已写入会话日志的消息,在 DSH 里并不合适——会话日志是 append-only 事件流,改写会破坏 seq 连续性与投影语义。社区插件 dsh-edit-rerun(维护者 jinchenwu1220,分类:客户端)提供的是另一种路径:在 Web GUI 输入框旁增加「编辑并重跑」入口,选中历史中的真实用户提示词、改字后,在官方 sessions.fork 切出的新分支里预填草稿,由你自己按回车发送;原会话只读,不会被写入。

这是什么

dsh-edit-rerun 是 DSH Web GUI 插件,npm 包名 dsh-edit-rerun,当前版本 1.0.0,MIT 许可证。一句话定位:编辑当前会话里较早的一条用户提示词,从该轮之前 fork 出新会话,把改好的文本放进新会话输入框,重跑由你手动提交。

与 ChatGPT「编辑并重新发送」的相似之处在于「改词再跑」;不同之处在于结果落在新分支会话,而不是原地改写历史。

为什么用 fork 而不是改历史

DSH 会话日志(session.v4.jsonl.zstd)是单调递增的事件流,fork、resume、replay 与压缩投影都由此派生。本插件走官方支持的路径:

  1. 读会话日志,取出每条 user/message 且 data.source.kind === "user" 的提示词(记忆注入、系统提醒、技能目录、时间上下文等同类型但 source.kind 不同,不计入);
  2. 用 sessions.fork({ atSeq }) 在目标提示词之前的 turn/end 处切分支;
  3. 子会话标题自动递增,改好的原文写入输入框草稿,不自动发送。

原会话零写入。

核心功能

  • 输入框右侧增加回环箭头按钮,列出当前会话第 1..N 轮真实用户提示词(首行摘要)。
  • 选择一条后在面板 textarea 中编辑,点击「在分支会话重跑」打开新会话,改后文本已预填。
  • 宿主半提供 GET /dsh-edit-rerun/turns?sessionId=…,浏览器半注册到 conversation.input.right 槽位。
  • 零 npm 依赖、无构建产物,宿主只读日志并调用 fork;不接触 sessionPersistence 等写路径。

安装与启用

前置:DSH 0.2.x(Web GUI / 桌面版),Node ≥ 22;package.json 中 engines 要求 dsh 为 >=0.2.1-rc.5 <0.3.0-0。

npm 安装(已发布)

dsh plugin --profile desktop add dsh-edit-rerun

也可从 v1.0.0 Release 下载 dsh-edit-rerun-1.0.0.tgz 后本地安装。无论哪种方式,装完后须把 dsh-edit-rerun 加入 dsh.profile.bundles(或在 GUI 里通过 plugin_manager 的 install_bundle 一次完成包安装与 bundle 注册)。

其他方式

GUI 中可让 agent 克隆仓库后用 install_bundle 装入当前 profile;命令行也可 dsh plugin --profile desktop add 指向本地目录,并在 ~/.dsh/profiles/desktop/package.json 的 dsh.profile.bundles 中登记包名。开发时可软链到 node_modules 并同样加入 bundles。

装完必须重启 DSH 一次:浏览器半 bundle 在启动时组装模块图。

典型用法

  1. 打开任意有历史的会话,点输入框右侧回环箭头;
  2. 在面板中选择要改的一轮提示词;
  3. 在 textarea 中修改文案;
  4. 点「在分支会话重跑」——新会话打开,输入框已是改后内容;
  5. 回车发送。

Esc 或点击面板外可关闭面板。

边界与同类插件

情形 行为
第 1 轮提示词 不可重跑(前面无已完成 turn 可 fork),按钮显示「第一轮不可重跑」并禁用
正在跑的一轮 可选,边界取上一个 turn/end
用过 /compact 提示词仍从日志读取,行为不变
自动发送 不做,仅预填草稿

社区另有 dsh-plugin-message-edit,提供版本树与分支后自动提交;若需要最小实现、绝不往原会话写、也不代按发送,选本插件即可。

适用场景与注意

适合:已在 DSH Web GUI 里长对话、需要从中间某轮改 prompt 做 A/B 对比或纠错,且希望原会话审计链不被改写的开发者。

安装前请自行查看 GitHub 源码 与 MIT 许可证;插件以当前 DSH 进程权限运行,安装即信任维护者代码。会话日志格式大版本升级时,可能需要同步调整 log.js 中的 turnsFromEvents。

结尾

dsh-edit-rerun 用官方 fork 把「改历史提示词」表达为「分支 + 预填重跑」,接触面小、原会话只读。目录页:https://www.skillhub.cn/plugins/jinchenwu1220/dsh-edit-rerun;仓库:https://github.com/jinchenwu1220/dsh-edit-rerun。

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

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

小夜