dsh-turn-eraser:在 DSH 里按轮删除对话且可追溯

前言

DeepSeek Harness(DSH)的会话记录是只追加的事件日志,默认没有「删掉某一轮」的入口。长对话里一旦某几轮把上下文带偏、发错内容贴错文件,或试错过程只想保留结论,这些内容会继续进入模型可见的 surface,占 token、也影响后续回复。社区里已有借鉴「整轮删除」思路的插件;dsh-turn-eraser 由 Nagiko0739 维护,在 npm 上包名同为 dsh-turn-eraser,归类为与上下文/记忆相关的工具。下面介绍它做什么、怎么装、怎么用,以及删除在机制上的边界。

这是什么

dsh-turn-eraser 是给 DSH 用的会话工具:在每一轮尾部提供删除入口,并常驻显示「第 N 轮」编号。删除的含义是:把指定轮次从模型可见的上下文里遮蔽掉,磁盘上的原始会话日志不改动,因此可以按需读回被删原文。当前版本在 package 中为 0.2.1,许可证 MIT。

核心功能

README 中已列出的能力如下。

能力 状态
删除某一轮(用户提问 + AI 整轮输出) 已实现
删除此处及以后 已实现
每轮都有删除入口(含没有正式回答的「空回」轮次) 已实现
删除后该轮在界面上隐藏 已实现
轮尾显示「第 N 轮」 已实现
可追溯:读回被删除的原文 已实现
删除整个会话 未实现
彻底擦除(物理抹掉日志) 未实现,且作者不建议

设计要点:占位符写的是轮次号(例如 [已删除第 20~22 轮]),不是内容摘要,模型只知道「洞在哪」,不被告知洞里原文。

安装与启用

插件以当前 DSH 进程权限运行;安装前建议在 GitHub 仓库核对源码与 LICENSE。

推荐从 npm 安装。 在 DSH 设置 → 插件 → 添加插件 中填入包名:

dsh-turn-eraser

或使用命令行(将 <你的配置档名> 换成实际 profile 名):

dsh plugin --profile <你的配置档名> add dsh-turn-eraser

同一添加界面也支持 GitHub 仓库地址或本地目录路径;仓库为 Nagiko0739/dsh-turn-eraser。安装说明写明:零运行时依赖,不会随插件带入额外第三方 npm 包。

典型用法

界面删除

每一轮尾部有小垃圾桶图标。操作步骤:

  1. 点击图标,浮出 删除本轮 / 删除此处及以后。
  2. 选中其一后,该按钮变为「再点一次确认」。
  3. 再次点击才执行删除;约 4 秒无操作会自动收起,降低误触。

删除之后:

  • 模型:从下一轮起看不到被删内容,仅见占位符(如 [已删除第 20~22 轮])。
  • 界面:该轮整体隐藏(含思考过程、工具调用折叠块)。
  • 日志:原文完整保留。

轮次编号显示在垃圾桶右侧,取值来自界面上的 data-turn-tail,人与 AI 可共用同一轮次号指代同一轮。

墓碑机制(简要)

DSH 日志只追加、不能就地改写。插件在日志尾部追加墓碑事件,用 surfaceOp: replace 把指定事件区间从可见 surface 替换掉;原始事件仍在文件中。墓碑须为 user/message 且内容非空,否则可能触达 DSH 写入校验或第三方约束。README 给出了 JSON 形状示例,含 source.producer、removed 事件序号、turn 等字段。

读回被删内容

删除不等于销毁。仓库提供 tools/trace_deletions.py,依赖系统 zstd(macOS 可 brew install zstd;缺失时脚本会明确提示)。

# 列出所有会话的删除记录
python3 tools/trace_deletions.py

# 按关键词筛选并展开被删原文
python3 tools/trace_deletions.py <关键词> --full

能查清删了什么、何时删、属于哪一轮,并读回含思考与工具结果的原文;不能从日志推断「谁」删的,也没有一键撤销删除。要恢复可见上下文,需自行根据读回内容处理,或让 agent 按轮次从日志找回。

适用场景与注意

适合:上下文被几轮带偏后想局部「擦掉」、发错轮次、整理试错过程、在暂不想手动压缩时减轻模型可见上下文长度,且需要保留磁盘日志以便审计或读回。

务必留意(来自 README「已知限制」):

  1. 无一键撤销;surface 的 replace 执行后,被替换节点无法通过后续事件自动还原。
  2. 可追溯不等于防篡改;日志为明文 JSON。
  3. 删除入口挂在官方插槽 conversation.chat.turnTail;DSH 大改 UI 时插件可能需要跟进(代码含读 DOM 兜底)。
  4. 引用了 @deepseek-ai/dsh-client-ui-primitives,官方文档并不推荐插件依赖;拿不到库时有自绘兜底,功能仍可用、外观可能退化。
  5. 删除只作用于当前会话;已在跑的子 Agent 持有自己的上下文快照,可能仍记得主会话里已删内容。
  6. 不做物理擦除,不会重写会话日志文件。

DSH 生态强调「一切皆插件」;SkillHub 等社区目录为独立站点,与 DeepSeek / 幻方无官方从属关系。本文事实来自项目 README 与 package 元数据。

链接

  • 社区目录页:https://www.skillhub.cn/plugins/Nagiko0739/dsh-turn-eraser
  • GitHub:https://github.com/Nagiko0739/dsh-turn-eraser
羽毛球分组比赛记分
小程序二维码

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

Xiaoye