dsh-plugin-edit-regenerate:编辑历史消息并重新生成

前言

在 DeepSeek Harness (DSH) 的对话流程中,如果需要修改之前的用户输入并重新生成回复,通常需要手动截断历史或新建会话。dsh-plugin-edit-regenerate 插件通过在用户气泡下提供「编辑」按钮,允许你直接修改历史消息。确认修订后,系统会 Fork 一个新会话,从修订后的提示开始重新生成。

插件定位

这是 StabCut 维护的一个 DSH 插件,归类为「工作流」。它的核心作用是允许你编辑对话历史中的用户消息,并基于修订后的文本在 Fork 的会话中重新生成回复。

核心功能

  1. 编辑与重新生成:点击用户气泡下的「✎ 编辑」按钮,修改文本后确认,系统会丢弃当前点之后的所有内容,并在新会话中重新生成。
  2. Fork 会话策略:
    - 非首条消息:在当前回合末尾 Fork 新子会话。
    - 首条消息:创建空白会话,使用修订文本作为开场。
  3. 附件处理:带有附件的消息在修订后会作为纯文本重新发送,附件本身不会保留。
  4. 功能保留:保留原有的「复制」功能(⧉ 复制按钮与 ✎ 编辑并存)。
  5. 存储机制:会话存储采用追加式日志,不支持就地截断。

安装与启用

安装后需重启 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。

典型用法

  1. 在对话界面中,找到任意一条用户消息。
  2. 点击消息气泡下方的「✎ 编辑」按钮。
  3. 修改文本内容(或移除附件)。
  4. 确认修订。
  5. 系统将 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 机制,实现了对话历史中特定节点的重新生成。对于需要精细化控制上下文的开发者,这是一个实用的辅助工具。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜