DeepSeek Harness Hub
← 返回列表

会话历史编辑DTSFO/dsh-conversation-rewind

DeepSeek Harnessspec-screened在 GitHub 查看 ↗
未验证

在原会话内安全编辑历史消息并浏览消息分支

尚未跑自动兼容性验证,可查看页面内的依赖与入口分析。 · 最近上游提交 2026/8/17 · 已提供中文文档
综合分
27.6
GitHub 分
27.6
用户评分
★ Stars
1
周下载量
安装插件(需先安装 dsh CLI 引擎:npm install -g @deepseek-ai/dsh)
dsh plugin --profile web add DTSFO/dsh-conversation-rewind
该插件未发布到 npm,走 GitHub 源安装(pnpm 若拦截 prepare 脚本,按其提示在 pnpm-workspace.yaml 的 allowBuilds 中放行后重跑)
数据截至 2026/9/16(元数据每日更新 · 实装验证按队列轮转,单条结论的验证时间见上方)
依赖的 DSH / Cordis 模块
@deepseek-ai/cordis@deepseek-ai/dsh-agent@deepseek-ai/dsh-agent-presets@deepseek-ai/dsh-brand@deepseek-ai/dsh-client-locale@deepseek-ai/dsh-client-runtime@deepseek-ai/dsh-client-ui-conversation@deepseek-ai/dsh-client-ui-primitives@deepseek-ai/dsh-client-ui-slots@deepseek-ai/dsh-invariants@deepseek-ai/dsh-llm@deepseek-ai/dsh-scope
用户评分
还没有人投票,来当第一个
订阅周报,不错过优质插件更新
每周一封 · 高评分插件 + 新用户活动

README

dsh-conversation-rewind

为 DeepSeek Harness Web UI 增加原 Session、append-only(只追加)的消息分支浏览与安全历史消息编辑。

English · DSH 插件专题

功能

- 在每条可编辑用户消息下方、复制按钮旁直接增加“编辑历史消息”;编辑器原位出现在该消息行中,不再弹出 Modal。
- 原历史切换视图改名为“消息分支”,展示可视化消息树;每个语义分支只有最后一条消息可以点击,中间消息只是树节点。
- 点击分支末端只是客户端只读浏览已有路径:不会发送消息、调用 Provider、唤醒 Agent、写入 inbox、追加 replacement,也不会截断 Session。
- 分支浏览仍在原 Session 内:Session ID 与浏览器 URL 全程不变,不创建子 Session。
- 使用 DSH Surface replacement 元数据,把目标消息、旧回复及后续旧路径从当前对话和后续模型上下文中隐藏。
- 持久事件日志仍然只追加。历史事件保留用于审计与恢复,插件追加 replacement marker,不改写或删除旧事件。
- 修改后的文本作为一条真实的新用户消息发送,助手回复会重新生成。
- 确认编辑后始终从这条消息在原 Session 内新开一个兄弟分支;编辑器不提供任何“后续消息”选项。
- 常驻保护编辑流程的内部 trigger,确保它在 Provider 请求前被取消;Host 重启后的 orphan 恢复同样 fail-closed。

原 Session 语义

1. 插件只在确认编辑时验证已经完成、可安全重放的用户轮次,并在提交前重新检查 live Session。
2. 一个受保护的内部轮次追加 DSH SurfaceOp replacement,覆盖从目标消息到当前活动尾部的旧路径。
3. 内部 trigger 与被遮蔽的旧路径不会进入 Provider 请求。
4. 内部轮次完全回到 idle 后,修改后的消息才作为普通用户轮次排入同一个 Session。
5. 新消息与新回复都是 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

使用

1. 在 DSH Web 中打开一个已经完成的 Session。
2. 点击目标用户消息下方、复制按钮旁的“编辑历史消息”。编辑器会原位展开;修改文本后点击“确认”或“取消”。确认会在同一个 Session 内从该消息新开兄弟分支。
3. 打开“消息分支”视图查看消息树,只点击分支末端即可在 Chat 中只读浏览该已有路径。
4. 浏览期间发送会被暂时禁用;回到当前活动末端后才可发送或编辑。
5. 旧路径仍保留在 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.6 API。

MIT

上游仓库有新提交时邮件通知你(每天最多一封,无更新不打扰),随时一键退订。

同作者(DTSFO)的其他插件

💬 加入 DPharness 群聊

插件用法、部署报错、新插件第一时间同步——群里问,比一个人翻文档快。

点击加入 QQ 群
DPharness 群聊二维码,手机 QQ 扫码进群
扫码进群