dsh-web
zhu1090093659/dsh-webDeepSeek Harness(DSH)Web 插件聚合生态包 · 一切皆插件,创意工坊分发(dsh-market.com)
在 DSH 会话里编辑你发过的提示词并重新生成,或编辑 AI 的回复。界面风格与 ChatGPT 网页版类似:
目标版本:DSH
0.2.0-rc.2。后端用真实dsh-session测试过,前端做过加载冒烟测试。
| 对象 | 操作 | 效果 |
|---|---|---|
| 你的提示词 | 悬停 → 操作栏里的铅笔 | 用新提示词重新生成;原提示词和其后的对话被隐藏,原位显示新提示词和新回答。用 ‹ › 切回旧版本查看 |
| AI 回复 | 回复下方操作栏里的铅笔 | 回复原地显示为修改后的文字,模型此后也读这个版本;后续对话保留。用 ‹ › 查看原文或历次修改 |
编辑框读取完整原文;Ctrl+Enter 保存,Esc 取消。
[data-clock="start"];回复的按钮走 Chat 提供的
conversation.chat.assistant-actions 插槽。按钮直接复用相邻原生按钮的 class,
因此大小、颜色、悬停效果都和原生按钮相同。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/stream waterfall 在请求发给模型前改写:
只替换 text 块,reasoning 和 tool-call 块保留。/state 只读,不会恢复冷会话。冷会话通过 sessionController.inspect() 读取日志,
所以历史版本照样可以切换。宿主读取会话日志时,遇到不认识且没有标记 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。
MIT