dsh-conversation-rewind
by DTSFO
Same-Session,DeepSeek Harness web UI 的仅追加会话回放和安全用户消息编辑。
Same-Session, append-only conversation rewind and safe user-message editing for the DeepSeek Harness web UI.
安装
dsh plugin --profile web add github:DTSFO/dsh-conversation-rewindGitHub 源码安装:首次需按提示配置 allowBuilds 构建授权后重试
安装与环境配置指引、插件开发教程见 DSH 中文社区文档 ↗
安装即在你的机器上以你的权限运行第三方代码——它可读写文件、使用凭据、访问网络,DSH 的工具审批不会为插件代码加沙箱。「检测到 manifest」仅代表发现 dsh.bundle / dsh.plugin 清单,不构成兼容性或安全审查;安装前请审阅源码,不熟悉的插件先在不含密钥的环境试用。
README
为 DeepSeek Harness Web UI 增加原 Session、append-only(只追加)的消息分支浏览与安全历史消息编辑。
功能
- 在每条可编辑用户消息下方、复制按钮旁直接增加“编辑历史消息”;编辑器原位出现在该消息行中,不再弹出 Modal。
- 原历史切换视图改名为“消息分支”,展示可视化消息树;每个语义分支只有最后一条消息可以点击,中间消息只是树节点。
- 点击分支末端只是客户端只读浏览已有路径:不会发送消息、调用 Provider、唤醒 Agent、写入 inbox、追加 replacement,也不会截断 Session。
- 分支浏览仍在原 Session 内:Session ID 与浏览器 URL 全程不变,不创建子 Session。
- 使用 DSH Surface replacement 元数据,把目标消息、旧回复及后续旧路径从当前对话和后续模型上下文中隐藏。
- 持久事件日志仍然只追加。历史事件保留用于审计与恢复,插件追加 replacement marker,不改写或删除旧事件。
- 修改后的文本作为一条真实的新用户消息发送,助手回复会重新生成。
- 确认编辑后始终从这条消息在原 Session 内新开一个兄弟分支;编辑器不提供任何“后续消息”选项。
- 常驻保护编辑流程的内部 trigger,确保它在 Provider 请求前被取消;Host 重启后的 orphan 恢复同样 fail-closed。
原 Session 语义
- 插件只在确认编辑时验证已经完成、可安全重放的用户轮次,并在提交前重新检查 live Session。
- 一个受保护的内部轮次追加 DSH
SurfaceOpreplacement,覆盖从目标消息到当前活动尾部的旧路径。 - 内部 trigger 与被遮蔽的旧路径不会进入 Provider 请求。
- 内部轮次完全回到 idle 后,修改后的消息才作为普通用户轮次排入同一个 Session。
- 新消息与新回复都是 append-origin 事件,因此修改后的消息之后仍可再次编辑。
确认编辑会从目标消息替换当前活动路径,只把修改后的文本作为一条新的普通用户消息排入同一个 Session。旧消息仍保留在 append-only 历史中,成为新消息的兄弟分支;编辑操作不会重放后续消息。消息分支浏览不会执行 replacement 或重放流程。
安全边界
只有“已完成轮次中唯一一条、由用户直接发送的普通纯文本消息”可编辑。目标之前仍在当前 Surface 上的注入上下文会原样保留;目标之后的上下文则必须是 Host 可重新生成的系统快照或技能目录。包含附件、非文本块、多条直接用户消息、尚未结束或正在运行的轮次、入队历史有歧义,或后续轮次无法安全重放时,目标会被隐藏或请求会被拒绝。
当前编辑要求 Session 在本 DSH 进程中处于 live 状态。Surface 或 inbox 并发变化时操作会 fail-closed。若 Surface replacement 已提交、但后续 checkpoint 失败,错误会返回原 Session 与 replacement event;行内编辑器会立即作废旧消息快照,并在重新加载 Session 后才重新开放编辑入口。
包含附件、歧义用户上下文或其他无法安全重放轮次的分支仍会显示在树中;只要有明确末端仍可只读浏览,但其中消息不会提供编辑入口。
编辑才会改变会话历史;分支浏览不会改变会话。两者都不会恢复工作区文件,也不会逆转工具调用、命令、网络请求或其他外部副作用。
环境要求
- DeepSeek Harness
>=0.1.0-rc.6 - Node.js
^22.19或>=24 - DSH Web profile
安装
dsh plugin --profile web add \
https://github.com/DTSFO/dsh-conversation-rewind/archive/refs/tags/v0.1.7.tar.gz
dsh web
卸载:
dsh plugin --profile web remove dsh-conversation-rewind
使用
- 在 DSH Web 中打开一个已经完成的 Session。
- 点击目标用户消息下方、复制按钮旁的“编辑历史消息”。编辑器会原位展开;修改文本后点击“确认”或“取消”。确认会在同一个 Session 内从该消息新开兄弟分支。
- 打开“消息分支”视图查看消息树,只点击分支末端即可在 Chat 中只读浏览该已有路径。
- 浏览期间发送会被暂时禁用;回到当前活动末端后才可发送或编辑。
- 旧路径仍保留在 append-only 日志中,只有确认编辑才会在原 Session 内追加 replacement 并重新生成回复。
本地开发与测试
pnpm install
pnpm run check
dsh plugin --profile web add /absolute/path/to/dsh-conversation-rewind
dsh web
pnpm run check 会依次执行 TypeScript 检查、ESLint、单元测试与生产构建。
已知限制
- 编辑范围刻意限制为可安全重放的单条普通纯文本用户消息。
- 编辑不会重放后续用户输入;如需切换已有历史路径,请在消息树中点击对应节点。
- 分支浏览是客户端只读投影;Host 当前窗口未提供的 Chat 行无法由插件伪造恢复。
- 非末端消息显示为静态树节点;Host 直接收到非末端选择时会返回
BRANCH_NOT_ENDPOINT。 - Session 必须在当前 Host 进程中打开并处于 live 状态。
- 不恢复工作区,也不逆转外部副作用。
- 当前版本面向 DSH Web UI 与 DSH
0.1.0-rc.6API。
MIT
原始 README: https://github.com/DTSFO/dsh-conversation-rewind/blob/main/README.zh.md ↗
同类插件
查看全部 →
archify
Agent 技能:生成美观、可校验的架构图、工作流图、时序图、数据流图与生命周期图——自包含 HTML、带动画与清晰导出

dsh-turn-rewind
对话回退:基于持久 Change Ledger 回滚会话与工作区状态。

dsh-plugin-cc
把 DeepSeek Harness 接入 Claude Code:评审、批评、委派与会话导入

dsh-interconnect
跨实例互联:经 interconnect 服务在多个 DSH 实例间转发消息与事件。

dsh-chat-import
把 13 家 coding agent(Claude Code、Codex、ChatGPT、Cursor、Gemini、opencode 等)的完整对话历史导入为可续聊的 DeepSeek Harness 会话,并支持反向导出回 Claude Code。

dsh-crew
DSH 插件:从 Claude Code / Codex 向 DSH agent 派活——原生 subagent 进度、宿主内 worker 会话(分级预设),以及为纯文本宿主补上视觉与图像生成的多模态桥