dsh-history-edit:在 DSH 对话里撤回、回退与编辑历史

前言

用 DeepSeek Harness(DSH)做长对话或智能体调试时,常见需求是:改一句已发送的用户消息并重新跑模型、从某条 AI 回复处分叉继续、或修正某条回复而不删掉后面的记录。若只能新建会话或手工复制粘贴,分支和对比成本会很高。下面介绍社区插件 dsh-history-edit(维护者 MathieuPortmann,GitHub:MathieuPortmann/dsh-history-edit),它在 DSH Web 聊天页上增加按钮,在不删除会话日志的前提下完成撤回、回退与编辑;分类为客户端插件,界面随页面语言显示英文或法文。

这是什么

dsh-history-edit 是面向 DSH 的会话历史编辑插件:可以 recall 某条用户消息、回到更早的回复点、或通过 rewrite 通道改用户消息并重新回答,也可以在副本里改 AI 回复。官方简介为:recall a message, go back to an earlier reply, or edit an AI reply in a copy of the conversation。插件没有配置项,不向模型增加工具;维护状态为 best-effort,Issue 可能无人回复,欢迎 fork。

核心功能

聊天页上会出现四类操作(名称以英文界面为准;法文页面会用法文文案):

  1. Recall(每条用户消息下方):回到该消息发送前一刻,并把原文填回输入框,可原样重发、修改后重发或附带文件。日志里不会删除任何事件;你发送下一条消息时,被 recall 的那条及其之后的内容会被 set aside(对模型和聊天页隐藏,仍留在 session log 里)。
  2. Edit again(经下方通道 rewrite 编辑过的用户消息上):打开编辑窗口;新内容替换旧消息并触发 AI 再次回答。若之后还有你的消息,会复制一份会话再编辑,原会话保留,页面会打开副本。
  3. Go back here(某条 AI 回复之后还有轮次时):下一条你发送的消息将从该回复处重新开始,更晚的轮次会被 set aside;页面上会有提示条,并提供 Cancel。
  4. Edit reply(AI 回复下方):在副本里把该轮回复改成新文本,原会话不变,页面打开副本。

「Set aside」即隐藏,不是从日志物理删除。实现上依赖 DSH 仅追加的 session log:编辑与回退会写入带 surfaceOp: replace {startSeq, endSeq} 的消息,在模型可见的「surface」上替换一段事件范围,日志本身不删改。

安装与启用

要求 Node ^22.19.0 || >=24.0.0,DSH >=0.2.0-rc.2 <0.3.0(README 在 DSH 0.2.0-rc.2、Node 22.23 上验证过)。安装后需重启对应 profile。

官方安装命令(针对 web profile):

dsh plugin --profile web add github:MathieuPortmann/dsh-history-edit

包上架 npm 后,同一 profile 也可使用:

dsh plugin --profile web add dsh-history-edit

插件以当前 dsh 进程权限运行:会读写在会话上的事件(含必要时新建会话副本),通过 DSH 注册的 POST /dsh-history/<method> 与页面通信(受 DSH 的 Host/Origin 与 browser token 保护);不访问外网、不执行 shell 子进程。安装前建议在 GitHub 阅读源码与 MIT 许可证(当前 package 版本 0.1.0)。

典型用法

  1. 安装并重启 web profile 后,打开 DSH Web 聊天页,在用户消息或 AI 回复旁查看是否出现 Recall、Go back here、Edit reply 等按钮(依赖 DSH 聊天行的 data-chat-flow-kind、data-chat-anchor-key、data-chat-turn 等属性;DSH 页面大改时插件可能需要跟进更新)。
  2. 改一句并重跑:对用户消息点 Recall,在输入框改文案后发送;或走编辑流程后在有后续消息时自动进入会话副本。
  3. 从某条 AI 回复分叉:点 Go back here,确认横幅提示后发送新消息;若要放弃回退,点横幅上的 Cancel。
  4. 只改 AI 文案、不动原线程:在某条 AI 回复下点 Edit reply,在打开的副本里改回复文本。

Host 侧通道方法包括 list、rewrite、rewind、cancelRewind、editReply、canEdit;页面侧由 client.js 绘制按钮、编辑窗与横幅,并隐藏被 set aside 的轮次。

适用场景与注意

  • 适合:需要在同一 DSH 环境里做「改问重答、从中间回复继续、修正 AI 回复并保留原记录」的开发者或日常长对话用户。
  • 平台:纯 JavaScript,README 写明在 Linux 上测试;仅作用于 DSH Web UI 聊天页。
  • 权限与安全:失败时原会话不应被误改(README 权限表说明 session 操作失败会返回错误码并在页面提示);仍建议只在可信环境安装第三方插件。
  • 生态:DSH 强调「一切皆插件」;社区目录 SkillHub 上的 dsh-history-edit 页 与 GitHub 仓库独立维护,与 DeepSeek / 幻方无官方从属关系。

维护者注明 issues 可能无人回复;核心逻辑在 lib/history.js,有 24 个独立测试,不依赖完整 DSH 安装即可 npm test 跑通。

结尾

dsh-history-edit 把「撤回、回退、改用户消息、改 AI 回复」收进 DSH 聊天 UI,并用 append-only 日志与 surface 替换避免丢历史。需要安装命令与行为细节时,以仓库 README 为准。

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

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

小夜