前言¶
在 DeepSeek Harness (DSH) 的对话流程中,如果需要修改之前的用户输入并重新生成回复,通常需要手动截断历史或新建会话。dsh-plugin-edit-regenerate 插件通过在用户气泡下提供「编辑」按钮,允许你直接修改历史消息。确认修订后,系统会 Fork 一个新会话,从修订后的提示开始重新生成。
插件定位¶
这是 StabCut 维护的一个 DSH 插件,归类为「工作流」。它的核心作用是允许你编辑对话历史中的用户消息,并基于修订后的文本在 Fork 的会话中重新生成回复。
核心功能¶
- 编辑与重新生成:点击用户气泡下的「✎ 编辑」按钮,修改文本后确认,系统会丢弃当前点之后的所有内容,并在新会话中重新生成。
- Fork 会话策略:
- 非首条消息:在当前回合末尾 Fork 新子会话。
- 首条消息:创建空白会话,使用修订文本作为开场。 - 附件处理:带有附件的消息在修订后会作为纯文本重新发送,附件本身不会保留。
- 功能保留:保留原有的「复制」功能(⧉ 复制按钮与 ✎ 编辑并存)。
- 存储机制:会话存储采用追加式日志,不支持就地截断。
安装与启用¶
安装后需重启 DSH 才能生效。插件通过 --profile 参数指定安装目标。
# DSH Desktop app (Electron)
dsh plugin --profile desktop add file:./dsh-plugin-edit-regenerate
# Official launcher / CLI (dsh web)
dsh plugin --profile web add file:./dsh-plugin-edit-regenerate
如果需要手动安装,需在对应 Profile 的 package.json 中添加依赖并执行 pnpm install。
典型用法¶
- 在对话界面中,找到任意一条用户消息。
- 点击消息气泡下方的「✎ 编辑」按钮。
- 修改文本内容(或移除附件)。
- 确认修订。
- 系统将 Fork 一个新会话,使用修订后的文本重新生成回复。
适用场景与注意事项¶
该插件适合需要在对话过程中修正上一轮提示的场景。使用时需注意以下几点:
- 会话加载限制:Fork 的会话在重启 DSH 后可能无法加载,如果父会话中包含 Harness 不识别的事件(例如
session/distill-review-request),会报错SessionFormatUnsupportedError。遇到此问题需运行修复脚本。 - 附件丢失:修订后的消息将不再包含附件,仅保留文本。
- 存储不可截断:由于存储是追加式日志,无法在本地直接删除中间内容,Fork 是 DSH 平台原生的「编辑并重新生成」实现方式。
- 更新机制:由于
pnpm会将file:依赖复制到node_modules,git pull更新源码后,已安装的 Profile 需手动刷新其node_modules中的副本。
故障排查¶
如果重启 DSH 后 Fork 的会话无法加载,通常是因为父会话日志中包含 Harness 不识别的事件。可以使用插件提供的修复脚本处理:
node scripts/repair-session-logs.mjs
此脚本会遍历 $DSH_HOME/sessions 下的日志文件,将不兼容的事件标记为 ignorable: true 并备份原文件。
总结¶
该插件通过在 UI 层提供编辑入口,配合 Fork 机制,实现了对话历史中特定节点的重新生成。对于需要精细化控制上下文的开发者,这是一个实用的辅助工具。