前言¶
在 DeepSeek Harness(DSH)里长对话跑下来,常会想改某条较早的用户提问再试一版,而不是从当前末尾另开话题。手动复制、新建会话、补上下文,步骤多且容易和原会话混在一起。社区插件 dsh-message-branch(维护者 yoinchen23-oss)针对的是纯文本用户消息:在消息旁就地改字,从该消息之前 fork 出新分支并发送,原会话与历史日志不改写。仓库标注为预览版,界面与模拟生命周期测试已通过,真实模型的 fork 与发送端到端尚未完全验收。
这是什么¶
dsh-message-branch 属于 DSH 社区目录中的「工作流」类插件。一句话定位:在用户消息复制按钮旁增加铅笔入口,原位编辑 plain-text 提问,并通过宿主 sessions.fork 在精确事件前缀边界上创建新会话分支,再发送修改后的文字。它不删除历史、不直接改会话文件,也不撤销已发生的文件修改、命令或网络请求等外部副作用。
核心功能¶
下面介绍 README 中已写明、且实现方式在资料里可对上的能力。
原位编辑与分支¶
- 点击用户消息复制按钮旁的铅笔。普通消息、运行期间追加的消息、已进入历史的消息均提供入口。
- 在原消息位置修改文字;按 Esc 或点击「取消」恢复显示。
- 等原会话停止、待处理队列清空后,点击「保存并重新生成」,或按 Ctrl/⌘ + Enter。
- 插件创建新会话分支并发送修改后的文字,随后打开该分支。新分支可能产生模型调用费用,发送使用 DSH 当前配置的模型,无需额外 API Key。
消息类型与安全边界¶
- 目前只支持纯文本。带图片、文件或其他非文本块的消息会显示限制,禁止保存,不会悄悄丢弃附件。
- 运行中、待处理队列非空、会话未就绪时禁止提交。
- 缺失前序事件时需先加载历史;替换事件暂不支持。
- 分支或发送结果不明确时不自动重试;已创建的分支会保留入口供检查,防止重复发送。
- 无遥测、无凭据收集、无第三方请求;复制按钮仅在用户点击时写入剪贴板。
实现要点(供排查冲突用)¶
通过正式 conversation.chat.node Slot 覆盖 user / steering 的外围渲染,并复用官方 conversation.chat.user.content 内容工厂。没有 DOM 扫描、MutationObserver 或 CSS 哈希选择器,不改皮肤或壁纸。尚未进入历史的 pending 消息仍由宿主管理。Host 入口 lib/index.js 为空 ESM 插件;浏览器入口 lib/client.js 使用 __ModuleLoader__,并声明 dsh.bundle.patch 与 dsh.client.platform 以支持标准插件安装。不建议与其他覆盖用户消息渲染的插件同时启用;禁用本插件后恢复宿主原生渲染。
安装与启用¶
仓库内含可直接加载的客户端 bundle,无安装期脚本,也无需编译。
已验证界面环境:DSH 0.2.1-rc.5,Windows 桌面版;文档不声明对其他版本的兼容保证。Node.js 要求 >=22.19.0,使用宿主 React 18.3.x(package 中 peerDependencies 为 react ^18.3.1)。当前 package 版本为 0.1.0,许可证 MIT。
本地从源码目录安装:
dsh plugin add /absolute/path/to/this/repository
若 GitHub Release 提供 .tgz,可下载后安装:
dsh plugin add /absolute/path/to/package.tgz
安装前应阅读仓库源码与 LICENSE,确认插件以当前 DSH 进程权限运行;社区目录 SkillHub 插件页 为独立站点,与 DeepSeek / 幻方无官方从属关系,并非官方应用商店。
典型用法¶
按 README 的可复现步骤操作即可:
- 在目标用户消息旁点铅笔,在原位改好纯文本提问。
- 确认原会话已停止且队列为空,再保存并重新生成。
- 等待插件打开新分支;先在不含敏感信息的测试会话中试用,再用于正式内容。
维护者在桌面 GUI 已验证铅笔入口、原位编辑、取消、禁用状态、图片与气泡对齐;仓库内 npm test / npm run check 对应 16 项模拟接口测试(分支边界、取消/保存、防重复提交、附件保护等)。上述测试不等于真实模型 fork/prompt 端到端验收。遇到问题请提供 DSH 版本、操作步骤和脱敏截图,不要提交令牌或私人会话日志。
适用场景与注意¶
适合需要在保留原会话的前提下,对历史某条纯文本提问做小幅改写并 fork 重试的 DSH 用户。不适合依赖图片/附件提问、或必须与「覆盖用户消息渲染」的其他插件叠用的环境。
务必记住:插件不能撤销已执行的外部副作用;不提供历史删除或恢复;与其他消息渲染插件冲突时只能二选一或禁用本插件。
结尾¶
dsh-message-branch 把「改旧问、开新枝」收进复制按钮旁的铅笔与 fork 流程里,原会话继续保留,适合工作流式试错。详情与安装包见 GitHub 仓库,目录索引见 SkillHub。