dsh-plugin-edit-regenerate:修改历史中的用户消息并重新生成

前言

在 DSH 的会话流程里,用户消息一旦发出,后续内容通常会继续追加到会话日志中。对于需要修正提示词、重新基于同一上下文生成回复的场景,直接编辑历史消息并重新生成会更方便。

dsh-plugin-edit-regenerate 是一个 DSH 插件,用来处理这个流程:在用户消息下确认修改,丢弃该消息之后的内容,并从修改后的提示重新生成。

这是什么

dsh-plugin-edit-regenerate 的定位是:在 DSH 会话历史中编辑一条用户消息,并基于修改后的提示重新生成后续回复。

它适合需要在对话中途修正用户提示,而不是从头新建会话的场景。插件以 fork 的方式完成“编辑后重新生成”,原会话保持不改动。

该插件使用 MIT 许可证。仓库地址为:

https://github.com/ExploringBB/dsh-edit-regenerate

本次资料中未明确声明维护者信息,只给出了上述仓库地址。

核心功能

下面介绍已核实的能力。

  1. 在用户消息下提供 “✎ Edit” 编辑入口。
  2. 确认修改后,丢弃该消息之后的内容,并从修改后的提示重新生成。
  3. 非首条消息:在上一轮结束处分叉出新的子会话。
  4. 首条消息:在同一工作区创建空白新会话,并以修改后的文本作为开场提示。
  5. 保留用户消息原有的 “⧉ 复制” 动作,与编辑按钮并存。
  6. 注册 Cordis 服务 editRegenerate,并在浏览器端覆盖 user 消息渲染器。

需要注意,附件不会被保留。带附件的消息在修改后会以纯文本重发。

安装与启用

安装按 DSH profile 区分。desktopweb 相互独立,安装到其中一个 profile 不会影响另一个。

如果使用的是 DSH Desktop,安装到 desktop profile:

dsh plugin --profile desktop add file:./dsh-plugin-edit-regenerate

如果使用的是 official launcher / CLI,也就是 dsh web,安装到 web profile:

dsh plugin --profile web add file:./dsh-plugin-edit-regenerate

也可以手动安装。做法是:

  1. dsh-plugin-edit-regenerate 加入 dsh.profile.bundles
  2. 在该 profile 的 package.jsondependencies 中加入 file:<absolute path>
  3. 在该 profile 目录下运行 pnpm install

安装或更新后,需要重启 DSH 才生效。

如果后续更新了插件源码,已经安装到 profile 中的 file: 依赖副本可能不会自动更新。需要刷新该副本,或者在对应 profile 目录中运行:

pnpm install --force

完成刷新或更新后,再次重启 DSH。

典型用法

下面是文档中的基本用法。

  1. 安装插件并重启 DSH。
  2. 在会话中找到要修改的用户消息。
  3. 点击用户气泡下的 “✎ Edit”。
  4. 确认修改。
  5. 插件会丢弃该消息之后的内容,并从修改后的提示重新生成。

如果修改的是非首条用户消息,插件会在上一轮结束处分叉出新的子会话,原会话保持不改动。

如果修改的是首条用户消息,插件会在同一工作区创建空白新会话,并以修改后的文本作为开场提示。

用户消息上仍会保留原有的 “⧉ 复制” 动作,和 “✎ Edit” 并存。

适用场景与注意

这个插件适合希望在既有会话中修正用户提示,并基于修正后的提示重新生成回复的使用者。它不改变原会话,而是通过 fork 生成新的会话路径。

使用时需要特别注意以下几点:

  1. 插件以当前 DSH 进程权限运行,安装前应检查源码与许可证。
  2. 带附件的消息在修改后会以纯文本重发,附件不会被保留。
  3. DSH 的会话存储为 append-only,不能原地截断,插件通过 fork 实现编辑后重新生成。
  4. desktopweb 两个 profile 相互独立,需要按实际运行方式分别安装。
  5. 更改配置、安装或更新后,需要重启 DSH 才生效。
  6. 更新源码后,已安装 profile 中的 file: 依赖副本可能不会自动更新,需要刷新副本或运行 pnpm install --force

如果 forked 会话在重启 DSH 后加载失败,可先停止 DSH,再运行:

node scripts/repair-session-logs.mjs

结尾

dsh-plugin-edit-regenerate 解决的是一个很具体的问题:在 DSH 会话中修改已经发出的用户消息,并基于修改后的提示重新生成后续内容。它通过 fork 会话避免直接改动原会话,同时保留用户消息上的复制动作,适合作为日常开发中的提示修正工具。

GitHub 仓库:

https://github.com/ExploringBB/dsh-edit-regenerate

本次资料中未提供已核实的社区目录页地址。

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

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

Xiaoye