前言¶
在 DeepSeek Harness(DSH)里长对话时,常见需求并不复杂:发错一句想撤回或改字、助手回复想微调或整段重跑、某条历史消息希望从后续上下文里消失、工作区目录改名或搬家后会话路径对不上。官方 UI 未必覆盖这些操作,社区里也有撤回、会话管理、删除回合等分散插件。dsh-wm-toolkit 把消息侧与会话/工作区侧能力收进一个插件包,装完后插件列表只多一行「WM 工具集」,维护者为 Jessicaisleep,在 SkillHub 目录中归类为「记忆」。
下面介绍它做什么、如何安装,以及使用时需要知道的边界。
这是什么¶
dsh-wm-toolkit(npm 包名 dsh-wm-toolkit,GitHub:Jessicaisleep/dsh-wm-toolkit)面向 DSH Web 端,用官方扩展点实现:撤回与编辑用户消息、编辑助手回复(含思考块)、按原提问重新生成、按条删除指令或回复、会话重命名/归档/删除、跨工作区移动与工作区文件夹真迁移等。插件数据写在独立目录,卸载不会动你的会话档案;除一处可回滚的工作区菜单补丁外,不改写 DSH 自身文件。
内部由三个可独立维护的半边组合而成(上游分别为 dsh-message-recall、dsh-session-manager、dsh-delete-turn 的分叉或移植,详见仓库 NOTICE.md),经 build.mjs 生成 lib/index.js 与 lib/client.js,对外仍是一个可安装的包。
消息侧能力¶
撤回、编辑与分支¶
- 撤回我的消息:对话回退到某条提问之前,可改完再发或原样重发。
- 编辑我的消息:改完后用新内容重跑;机制为归档旧会话并开新分支,旧版本可通过版本家族
< 1 2 >切回。 - 编辑我的回复:可改助手正文与思考块;改完后对话从该条回复处继续。只改文本,保留该回合原有工具调用(不重造回合)。若回复无文本块(纯工具调用)或未闭合回合,不提供编辑入口。
- 用原提问重新生成:对任意历史回复使用,等价于用对应原提问重试该回合。重生成采用
truncate语义:该回合之后的内容留在旧会话里,不会自动重放后续用户输入。
每次编辑或重生成形成独立分支,通过 < > 切换版本;不提供专门的版本对照面板。
删除任意一条指令或回复¶
与「编辑 / 重生成」(改完重来)互补:删除是「当作没说过」——确认后追加官方 surfaceOp: { op: 'replace', startSeq, endSeq } 替换事件(与 /compact 同一套契约),被遮蔽内容不再进入 deriveMessages(),转录中一并隐藏;原始 append-only 日志一个字节都不改写。隐藏台账从日志里的替换事件重建(source 标记 plugin:dsh-wm-toolkit),不依赖 localStorage。
| 点哪里 | 删掉什么 |
|---|---|
| 用户消息行上的垃圾桶(在「撤回 / 复制」后) | 仅该条用户提问或注入上下文行;助手回复保留 |
| 思考卡 / 工具调用卡上的垃圾桶 | 仅该步的 assistant/message 及配对的 tool/result |
| 助手回复操作条上的垃圾桶 | 整条回复(含思考、工具调用与注入上下文);用户提问保留 |
路由为 GET /wm-delete/state?sessionId=、POST /wm-delete/delete,仅回环、同源、Host 本机;落地与拒绝写入 $DSH_HOME/dsh-wm-delete.log。删除为软删除,不可反删除;回合进行中不能删;系统提示词头(surface 节点 0)不可删;已被官方 /compact 移出上下文的内容不再显示删除入口。
不要与另一个跨工作区移动器或另一个消息删除插件同时启用。
会话与工作区侧¶
- 会话 重命名 / 删除 / 归档 / 取消归档,入口挂在官方 ⋯ 菜单,不重画侧边栏。
- 跨工作区移动、工作区文件夹真迁移:目录搬家或改名后,可把工作区记录、每条会话的
cwd与日志物理位置一并迁过去,带备份与回滚。 - 未分组会话归位与启动自愈:父会话在某工作区而子会话掉进未分组时,自动挂回。
在 DSH 0.2.1-rc.3 起,工作区迁移入口位于左侧栏面板列表的「更多」菜单(sidebar.panellist.actions),会话右上角不再有该入口。
安装与启用¶
官方安装(命令来自仓库 README):
dsh plugin --profile <你的 profile> add dsh-wm-toolkit
# 重启 DSH
从本地源码安装:
dsh plugin --profile <profile> add "file:/path/to/dsh-wm-toolkit"
卸载:
dsh plugin --profile <profile> remove dsh-wm-toolkit
装完或改完后必须重启 DSH:宿主半边(含删除相关路由)只在启动时读取;仅改浏览器半边时刷新页面即可。组合层加载结果写入 $DSH_HOME/dsh-wm-toolkit.log(各半边「已应用」或「应用失败(已隔离)」)。
兼容性与适用注意¶
- 目标环境:
engines.dsh为^0.1.5-rc.1 || ^0.2.0-rc.1 || ^0.2.1-rc.1,Node ≥ 22。只使用 DSH 公开服务,不修改引擎与官方 UI 包。 - 已在 DSH
0.2.1-rc.3(Windows / Web 端)实测撤回、编辑、重生成、删除、会话管理与工作区迁移可用;与侧边栏、皮肤、记忆、导出类插件无冲突。 - 插件以当前
dsh进程权限运行,安装前应自行查看 GitHub 源码与 MIT 许可证(及NOTICE.md中的上游声明)。 - 本插件为本地/组合构建,设置里「检查更新」只回报当前版本,没有 npm 更新通道以外的特殊说明。
SkillHub 等社区目录为独立站点,与 DeepSeek / 幻方无官方从属关系;星标与目录元数据以站点展示为准(当前 GitHub 星标为 0)。
结尾¶
若你希望在一个插件里完成「消息可改可删 + 会话/工作区可管」,可先按 profile 安装 dsh-wm-toolkit 并重启 DSH,再按上表选择撤回、编辑、重生成或删除。细节与测试说明见仓库 README 与各 parts/*/README.md。
- 目录页:https://www.skillhub.cn/plugins/Jessicaisleep/dsh-wm-toolkit
- GitHub:https://github.com/Jessicaisleep/dsh-wm-toolkit