dshx-message-edit
Manifest validEdit a sent prompt or an assistant reply inside an existing DSH conversation, then regenerate from that point — in place, without forking a new session.
dshx-message-edit
在 DSH 会话里编辑你发过的提示词并重新生成,或编辑 AI 的回复。界面风格与 ChatGPT 网页版类似:
- 铅笔「编辑」按钮放在消息原生操作栏里,与「复制」「分支」并列,样式也一致;
- 编辑后直接替换原来的显示;
- 消息有多个版本时,铅笔旁会出现 ‹ 2/3 ›,可以在原文和各次修改之间切换。
目标版本:DSH
0.2.0-rc.2。后端用真实dsh-session测试过,前端做过加载冒烟测试。
用法
| 对象 | 操作 | 效果 |
|---|---|---|
| 你的提示词 | 悬停 → 操作栏里的铅笔 | 用新提示词重新生成;原提示词和其后的对话被隐藏,原位显示新提示词和新回答。用 ‹ › 切回旧版本查看 |
| AI 回复 | 回复下方操作栏里的铅笔 | 回复原地显示为修改后的文字,模型此后也读这个版本;后续对话保留。用 ‹ › 查看原文或历次修改 |
编辑框读取完整原文;Ctrl+Enter 保存,Esc 取消。
实现
- 按钮:提示词的按钮通过 portal 放进原生操作行
[data-clock="start"];回复的按钮走 Chat 提供的conversation.chat.assistant-actions插槽。按钮直接复用相邻原生按钮的 class, 因此大小、颜色、悬停效果都和原生按钮相同。 - 原地替换显示:以更低的 priority 注册
conversation.chat.node的user和assistant-step渲染器。按插槽系统规则,priority 越低越优先渲染,所以会先渲染本插件的包装组件。 包装组件内部仍渲染 Chat 原本的组件,只是修改了传入的数据,所以外观不变。 包装组件一旦出错,宿主的错误边界会自动退回原渲染器。 - 提示词版本:撤回说明那条
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/streamwaterfall 在请求发给模型前改写: 只替换 text 块,reasoning 和 tool-call 块保留。 /state只读,不会恢复冷会话。冷会话通过sessionController.inspect()读取日志, 所以历史版本照样可以切换。
为什么不再写自定义会话事件(v1.3.0)
宿主读取会话日志时,遇到不认识且没有标记 ignorable: true 的事件类型,会拒绝加载整个会话;
而 session.append() 不允许插件设置这个标记。v1.2.0 写入的 dshx-message-edit/prompt-edit 和
dshx-message-edit/override 因此会让编辑过的会话报「历史加载失败」。从 v1.3.0 起,插件只写宿主已知的事件类型。
旧日志里的这两类事件修复成 ignorable: true 后,旧的编辑历史仍然能读出来。
这一点用真实 dsh-session 0.2.0-rc.2 测试过:每次编辑后都用宿主的 validateStoredEvents 检查,日志都能正常加载。
已知限制
- 切换只改变显示:模型始终读取最新版本。想让模型基于旧版本继续,请再编辑一次。
- 修正提示词只保留文本,原消息里的图片等附件不会带过去。
- 卸载本插件后,会话仍能正常加载;界面退回显示原始回复,模型也读原始回复(侧文件里的修改不再生效)。
- 回复的修改存在侧文件里:只拷贝会话日志到别处时,这些修改不会跟着走。
- 正在生成时编辑提示词,会先停止当前生成。
安装
# 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。卸载:dsh plugin --profile <profile> remove dshx-message-edit。
License
MIT
Comments
Loading…
From the same category
by ccch1mneyyy
DSH 官方公众号收录的 TUI 补位插件:Claude Code 风,鲸鱼顶栏/实时状态/流式思考/双击 Esc 回滚/上下文进度+TPS。npm 一键装。 DSH official WeChat featured TUI plugin — Claude Code style: whale bar, live status, streaming thoughts, double-Esc rol
★ 5k
↓ 10.4k/wk
MIT
TypeScript
Oct 21, 2026
dsh plugin --profile terminal add @deepseek-harness-tui/dsh-tuiby strukto-ai
The World's First Virtual Terminal for AI Agents
★ 3.7k
↓ 152/wk
Apache-2.0
TypeScript
Oct 21, 2026
dsh plugin --profile agent add @struktoai/mirage-dshby bowenliang123
The best DeepSeek Harness plugin for context insight and management, with context dashboard / browser / sidebar and context command, for context statistics, composition, breakdown, evolution details,
★ 2.7k
↓ 43.4k/wk
Apache-2.0
TypeScript
Oct 21, 2026
dsh plugin --profile web add dsh-contextby huiliyi37
官方 DeepSeek Harness 的交互式终端 UI 插件:自研 ANSI 极简交互渲染、流式 Markdown/工具卡、16+ 主题、slash 命令与选择器、输入历史与本地偏好持久化、LSP 诊断、memory记忆,很丝滑的开发体验。
★ 288
↓ 274/wk
Apache-2.0
TypeScript
Sep 30, 2026
dsh plugin --profile terminal add @huiliyi37/dsh-tianshu-tuiby c3cvld7aag
富江DSH完美破甲|富江破甲 DSH 本地插件,内置提示词规则,支持 Windows 一键安装、环境自动准备与一键卸载,全中文使用说明。
★ 222
JavaScript
Oct 3, 2026
dsh plugin --profile web add fujiang-armorby Hilbert-beinghappy
面向 DeepSeek Harness 的 Claude Code 风格终端界面,支持 Windows、macOS 与 Linux,兼容透明终端、VS Code 主题和自定义配色。
★ 196
↓ 108/wk
MIT
TypeScript
Oct 13, 2026
dsh plugin --profile web add seektty