dshx-message-edit:在现有 DSH 会话里原位编辑提示词与回复

前言

在 DSH 里调提示词或改模型回答时,常见做法是开新分支或复制整段会话再重来。分支会多占一条会话线,复制则容易和原上下文脱节。若你只想改某一条已发送的提示词并从该点重新生成,或在不打断后续对话的前提下修正某条助手回复的展示与模型读到的内容,callaumyan-design 维护的客户端插件 dshx-message-edit 针对的是这一类需求:在当前会话内编辑,界面尽量贴近 ChatGPT 网页版的「编辑」体验,而不是 fork 新 session。

这是什么

dshx-message-edit(npm 包名 dshx-message-edit,当前版本 1.3.0,MIT 许可证)是 DeepSeek Harness 的客户端插件。官方简介:在已有 DSH 对话中编辑已发送的 prompt 或助手回复,并从该点重新生成——原位完成,不新建会话。

维护者:callaumyan-design。社区目录页:SkillHub 插件条目;源码与说明:GitHub 仓库。README 写明目标宿主版本为 DSH 0.2.0-rc.2,后端用真实 dsh-session 测过,前端做过加载冒烟测试。

核心功能

下面介绍插件在界面上能做什么,以及和会话日志的关系(均来自 README)。

提示词编辑

  1. 将鼠标悬停在你发送的消息上,在原生操作栏(与「复制」「分支」并列)点铅笔「编辑」。
  2. 编辑框会载入完整原文;Ctrl+Enter 保存,Esc 取消。
  3. 保存后用新提示词重新生成;原提示词及其后的对话在界面上被隐藏,原位显示新提示词和新回答。
  4. 若存在多个版本,铅笔旁会出现 ‹ 2/3 ›,可在原文与各次修改之间切换查看。

助手回复编辑

  1. 在 AI 回复下方操作栏点铅笔。
  2. 保存后回复在界面上原地变为修改后的文字;模型此后读取的是这个版本,后续对话保留。
  3. 同样可用 ‹ › 查看原文或历次修改。

界面与实现要点(便于排查问题)

  • 编辑按钮样式与相邻原生按钮一致(复用同类 class);用户消息的按钮通过 portal 放进 [data-clock="start"] 操作行,回复侧使用 Chat 的 conversation.chat.assistant-actions 插槽。
  • 「原地替换显示」通过较低 priority 注册 conversation.chat.node 的 user / assistant-step 渲染器实现;包装层仍渲染宿主原组件,仅改传入数据。包装出错时由宿主错误边界退回原渲染器。
  • 提示词版本链依赖宿主已知的 user/message 撤回说明事件(source 中带 fromId / rpcId);切换版本时用 CSS 隐藏其它版本对应的 [data-chat-turn] 回合。
  • 编辑提示词时:surfaceOp: replace 替换旧提示词及之后节点,再 sessionController.prompt() 发新提示词。编辑回复时:修改写入侧文件 %DSH_HOME%\dshx-message-edit\overrides\<sessionId>.json(未设置 DSH_HOME 时为 ~/.dsh),并在 llm/stream waterfall 里于请求发出前改写(只替换 text 块,保留 reasoning 与 tool-call)。
  • 自 v1.3.0 起不再写入自定义会话事件类型,避免不认识的事件导致整段会话「历史加载失败」;旧日志里 v1.2.0 的 dshx-message-edit/prompt-edit 与 dshx-message-edit/override 需修复为 ignorable: true 后仍可读。

安装与启用

插件在 SkillHub 上归类为客户端,支持 web 与 desktop profile;安装后需重启 DSH(package.json 中 requiresRestart: true)。

Web 与 Desktop 请使用 README 中的命令(Desktop 需先用托盘完全退出 DSH Desktop,再使用其自带的 dsh):

# Web profile
dsh plugin --profile web add github:callaumyan-design/dshx-message-edit
# Desktop(用 DSH Desktop 自带的 dsh 命令,先从托盘完全退出 Desktop)
dsh plugin --profile desktop add github:callaumyan-design/dshx-message-edit

卸载:

dsh plugin --profile <profile> remove dshx-message-edit

DSH 生态强调「一切皆插件」;SkillHub 为社区目录站点,与 DeepSeek / 幻方无官方从属关系。安装前建议浏览仓库源码与 MIT 许可证;插件在当前 dsh 进程权限下运行。

典型用法对照

README 用表格归纳了对象、操作与效果,可照此自测:

对象 操作 效果
你的提示词 悬停 → 操作栏铅笔 新提示词重新生成;原提示词及之后对话隐藏,原位显示新内容;‹ › 切回旧版本查看
AI 回复 回复下方操作栏铅笔 回复原地显示为修改后文字,模型读此版本;后续对话保留;‹ › 查看原文或历次修改

/state 为只读且不会恢复冷会话;冷会话通过 sessionController.inspect() 读日志,历史版本仍可切换。

适用场景与注意

适合:在同一 DSH 会话里做小步修正提示词并从此处重跑;需要让模型「看到」改过措辞的助手回复,又不想丢掉后面已聊内容。

已知限制(README 原文):

  • 版本切换只改显示;模型始终读最新版本。若要让模型基于旧版继续,需再编辑一次。
  • 修正提示词只保留文本,原消息中的图片等附件不会带到新提示词。
  • 卸载插件后会话仍可加载;界面与模型侧会回到原始回复(侧文件中的回复修改不再生效)。
  • 回复修改存在本机侧文件;只拷贝会话日志到别处时,这些修改不会跟着走。
  • 生成过程中编辑提示词会先停止当前生成。

结尾

dshx-message-edit 把「改一句、从这点重来」和「改回复、后面照聊」收进单条 DSH 会话,操作栏与版本切换尽量对齐常见聊天产品习惯。需要安装命令、实现细节与 v1.3.0 日志兼容性说明时,以仓库 README 为准。

  • 目录页:https://www.skillhub.cn/plugins/callaumyan-design/dshx-message-edit
  • GitHub:https://github.com/callaumyan-design/dshx-message-edit
羽毛球分组比赛记分
小程序二维码

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

Xiaoye