前言¶
在 DeepSeek Harness(DSH)里和智能体多轮对话时,常见问题是一条用户消息发出去才发现措辞不对,或者希望从某一轮重新试一条不同的提示。DSH 的对话历史是只追加的,不能像普通聊天软件那样原地改记录。社区插件 dsh-message-edit(维护者 haroon0x,分类为工作流)的做法是:在每条已发送的用户消息上方提供 Edit,通过在该时间点分叉会话,把修改后的文本作为新分支的第一条提示再发出去,语义上接近 Claude Code 的消息编辑,而不改写原会话后续内容。
这是什么¶
dsh-message-edit 是面向 DSH Web UI 的插件包(Host + Client 两半),在 DeepSeek Harness 中为你已发送的用户消息增加编辑入口。点击后在内联编辑器里改字,再 Save & branch 即可分叉并发送;原会话及该消息之后的记录保持不变。源码与说明见 GitHub:haroon0x/dsh-message-edit,社区目录页为 skillhub.cn 条目。许可证为 MIT;package.json 中版本为 1.1.0。
核心功能¶
消息编辑与分支¶
插件在每个已发送的用户消息上方增加 Edit。打开内联编辑器后,按 Save & branch 会依次:
- 在该消息对应事件的前一刻分叉会话;
- 打开得到的分支;
- 将编辑后的文本作为分支的第一条提示发送。
原会话及其后所有轮次不受影响。分叉会生成新会话,而不是在原历史里就地改写。
文件回滚(v2)¶
仅分叉对话不会自动恢复磁盘上的文件:被原轮次改过的文件可能仍留在工作区。若被编辑的消息是会话的最后一轮用户输入,v2 提供可选项 「Also revert the N files this turn changed」:按 DSH 工作区变更记录器为该轮保存的快照,把本轮改过的文件恢复到轮次开始时的内容,并删除本轮新建的文件。
回滚有安全约束:仅当文件当前内容与记录的轮次结束状态一致时才恢复;之后又被改过的文件会跳过,避免覆盖。二进制与过大文件会跳过。更早的用户消息(非最后一轮)只能分支,不提供回滚选项。
运行要求¶
- 使用 DSH Web 配置(
dsh web);插件为 Web bundle。 - 可与任意 provider 路由配合使用,插件本身不持有 API 密钥。
安装与启用¶
在本地已有该仓库目录的前提下,通过 DSH 插件管理器安装 bundle,刷新 Web 页面后,在已发送用户消息上方应能看到 Edit:
install_bundle → /path/to/dsh-message-edit
README 说明:该包名已在 npm 预留,发布后可用 @haroon0x/dsh-message-edit 作为安装 spec 替代本地目录路径。卸载时,在插件管理器中禁用或移除 @haroon0x/dsh-message-edit bundle。
安装前建议自行阅读仓库源码与 MIT 许可证;插件随当前 DSH 进程权限运行,应对其行为有基本了解。
典型用法¶
- 在 DSH Web 中正常对话,直到需要修改某条已经发出的用户消息。
- 在该消息上方点击 Edit,在内联编辑器中修改文本。
- 点击 Save & branch,等待新分支打开并以编辑后的内容为首轮提示继续。
- 若编辑的是最后一轮用户消息,且希望撤销该轮对文件的副作用,在保存时勾选回滚选项(界面文案为 revert the N files this turn changed),再确认分支。
纯文本消息会进入分支;附件不会带到分支中。
适用场景与注意¶
适合:需要从历史某一轮用户输入重新试提示、又不想丢掉原会话轨迹的 DSH Web 用户;最后一轮发错指令且希望连同工作区文件一起「重来」时,可配合 v2 回滚(在记录器覆盖范围内)。
限制(以 README 为准):
- 仅支持文本消息向分支传递,附件不携带。
- 分叉产生新会话,不原地重写历史。
- 回滚依赖 workspace-changes 记录器捕获的变更;git 外的 shell 改动、二进制或过大文件、Host 重启之前的轮次等不在覆盖范围内。
DSH 生态强调「一切皆插件」;skillhub.cn 为社区目录,与 DeepSeek / 幻方无官方从属关系。
结尾¶
dsh-message-edit 把「改已发消息」落实为会话分叉加可选文件回滚,与 DSH 只追加的历史模型一致。若要安装或跟进 issue,可使用目录页 https://www.skillhub.cn/plugins/haroon0x/dsh-message-edit 与仓库 https://github.com/haroon0x/dsh-message-edit。