前言¶
在 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 与压缩投影都由此派生。本插件走官方支持的路径:
- 读会话日志,取出每条
user/message且data.source.kind === "user"的提示词(记忆注入、系统提醒、技能目录、时间上下文等同类型但source.kind不同,不计入); - 用
sessions.fork({ atSeq })在目标提示词之前的turn/end处切分支; - 子会话标题自动递增,改好的原文写入输入框草稿,不自动发送。
原会话零写入。
核心功能¶
- 输入框右侧增加回环箭头按钮,列出当前会话第 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 在启动时组装模块图。
典型用法¶
- 打开任意有历史的会话,点输入框右侧回环箭头;
- 在面板中选择要改的一轮提示词;
- 在 textarea 中修改文案;
- 点「在分支会话重跑」——新会话打开,输入框已是改后内容;
- 回车发送。
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。