前言¶
在 DSH Web 中处理智能体会话时,一个已完成 Session 里某条用户消息如果表述不理想,常见需求是让 assistant 重新回答,但不希望丢失原路径,也不希望创建新的子 Session。dsh-conversation-rewind 针对这个场景,为 DeepSeek Harness Web UI 提供同 Session 的 append-only 对话分支,以及可编辑用户消息的安全编辑能力。
这是什么¶
dsh-conversation-rewind 是一个 DSH Web 插件,由 DTSFO 维护,许可证为 MIT,package.json 中版本号为 0.1.7。
它把“修改历史用户消息并重新生成回复”做成在同一 Session 内创建 sibling branch 的操作,同时保持持久事件日志 append-only,避免直接重写或删除历史事件。
核心功能¶
历史用户消息的内联编辑¶
插件在可编辑的用户消息旁增加 Edit history message 操作。编辑在该消息行内联完成,不打开 modal。
用户修改文本后,可以点击 Confirm 或 Cancel。Confirm 会从该消息在原 Session 中创建新的 sibling branch,并将编辑后的文本作为真实新的 user turn 发送,以便 assistant 响应被重新生成。
编辑确认后,后续消息不再作为可编辑选项提供。
分支树浏览¶
插件用可视化 Branches 树替代原 history-switching 表单。每个语义分支的最终消息可点击;中间消息显示为静态树节点。
非端点消息显示为静态树节点。Host 对非端点的调用会以 BRANCH_NOT_ENDPOINT 拒绝。
同 Session 内的只读浏览¶
点击分支端点只是客户端只读查看已有路径。它不发送消息、不调用 Provider、不唤醒 Agent、不写 inbox、不追加替换、不截断 Session。
分支浏览保持在原 Session 内:Session ID 与浏览器 URL 不变,也不创建子 Session。
append-only 日志与 replacement marker¶
插件保持持久事件日志 append-only。历史事件保留用于审计/恢复;插件追加 replacement marker,而不是重写或删除历史事件。
它使用 DSH Surface replacement metadata 隐藏被选消息、旧回复和后续活跃路径,使其不进入当前 transcript 和未来模型上下文。
编辑触发的安全保护¶
内部编辑触发器被永久保护,确保在 provider dispatch 前被取消,包括重启后的 orphan recovery。
安装与启用¶
环境要求如下:
- DeepSeek Harness
>=0.1.0-rc.6 - Node.js
^22.19或>=24 - DSH Web profile
安装命令:
dsh plugin --profile web add \
https://github.com/DTSFO/dsh-conversation-rewind/archive/refs/tags/v0.1.7.tar.gz
dsh web
第一条命令将插件加入 Web profile,第二条命令启动 DSH Web。
典型用法¶
1、在 DSH Web 中打开一个已完成的 Session。
2、点击目标用户消息下 Copy 旁边的 Edit history message;在该消息行内修改文本,然后点击 Confirm 或 Cancel。Confirm 会在同一 Session 中创建新的 sibling branch。
3、打开 Branches 视图检查消息树;只点击分支端点以在 Chat 中浏览该已有路径。
4、浏览时发送功能被禁用且 Session 保持不变;发送或编辑前先返回活跃端点。
5、旧路径仍保留在 append-only log 中;只有编辑确认会创建替换并重新生成回复。
适用场景与注意¶
可编辑条件¶
只有包含恰好一个直接、普通、纯文本用户消息的已完成 turn 可编辑。
包含附件、歧义 user-role 上下文或 unsafe-to-replay turn 的分支在树中仍可见,但消息不可编辑。
编辑要求 Session 在当前 DSH 进程中 live。如果 Surface 或 inbox 并发变化,操作会失败关闭。
编辑不做什么¶
编辑只改变会话历史;不恢复 workspace 文件,也不回滚工具调用、命令、网络请求或其他外部副作用。
分支浏览是只读客户端投影;不能重建 Host 未在当前窗口暴露的 Chat 行。
安全与安装前检查¶
该插件会在当前 DSH 进程中生效,并以当前 dsh 进程权限运行。安装前应检查源码、插件配置和 MIT 许可证,确认其注入行为与自身环境一致。
结尾¶
dsh-conversation-rewind 的价值在于:把“修改历史并重新生成回复”限制在同一 Session、append-only 日志和明确的只读浏览边界内,同时保留旧路径用于审计/恢复。
已核实资料未给出独立目录页 URL,本文不附未核实的目录页链接。GitHub 仓库地址如下:
https://github.com/DTSFO/dsh-conversation-rewind