删除指定轮次对话,原文可随时读回
30/100
综合分
0
GitHub 星标
—
npm 周下载
—/5
用户评分
数据截至 2026/10/2 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
相关生态插件(非 dsh 原生,按其对应运行时安装)
git clone https://github.com/Nagiko0739/dsh-turn-eraser.git状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:待复验
是什么
生态应用
桌面端 / Web 外壳,不以 dsh plugin add 安装
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
更新放缓:最近一次提交在 32 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码v2.7.0🟢 扫描:未发现敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0静态扫描未发现敏感能力:最多只发网络请求、读取自身元数据或只读文件,未发现执行命令、文件写入或敏感信息读取。
发起外部网络请求
查看扫描证据(共 1 处,展示前 1 条)
- 发起网络请求client.js:119
const response = await fetch(ROUTE, {
扫描于 2026/11/2(1 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
依赖的 DSH / Cordis 模块
@deepseek-ai/cordis给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
功能亮点
- 删除指定对话轮次
- 墓碑标记可追溯
- 原文可随时读回
DSH 插件:删除对话轮次(基于墓碑标记,可追溯)
README
由 DeepSeek 最新模型翻译生成dsh-turn-eraser
给 DeepSeek Harness(DSH)用的会话清理插件:删除某一轮对话。
删除 = 把内容从模型可见的上下文里遮蔽掉。原始会话日志一个字节都不改,随时可以读回来。
但使用删除后,模型在当轮会话中读取/占用的上下文是变小了的。
English summary ↓
为什么做这个
DSH 的会话记录是只追加的事件日志,本身不提供删除某一轮对话的入口。而实际使用中确实会遇到需要"擦掉"某段对话的场景:
- 上下文被污染:某几轮让对话跑偏了,之后每轮都受影响,越聊越歪
- 发错了话:提问打错、贴错文件
- 整理会话:把试错的过程清理掉,留下干净的结论
- 清理过长的上下文,防止模型上下文过重掉进loop/空回。
本插件的特点是:每一轮都能删(包括"空回"轮次),并且删除可回溯。
展开完整文档(README 剩余 1 节)
dsh-turn-eraser
给 DeepSeek Harness(DSH)用的会话清理插件:删除某一轮对话。
删除 = 把内容从模型可见的上下文里遮蔽掉。原始会话日志一个字节都不改,随时可以读回来。
但使用删除后,模型在当轮会话中读取/占用的上下文是变小了的。
English summary ↓
为什么做这个
DSH 的会话记录是只追加的事件日志,本身不提供删除某一轮对话的入口。而实际使用中确实会遇到需要"擦掉"某段对话的场景:
- 上下文被污染:某几轮让对话跑偏了,之后每轮都受影响,越聊越歪
- 发错了话:提问打错、贴错文件
- 整理会话:把试错的过程清理掉,留下干净的结论
- 清理过长的上下文,防止模型上下文过重掉进loop/空回。
本插件的特点是:每一轮都能删(包括"空回"轮次),并且删除可回溯。
功能
| 能力 | 状态 |
| 删除某一轮(你的提问 + AI 的整轮输出) | ✅ 已实现 |
| 删除此处及以后 | ✅ 已实现 |
| 每轮都有删除入口(含没有正式回答的"空回"轮次) | ✅ 已实现 |
| 删除后把该轮从界面上隐藏 | ✅ 已实现 |
| 审计:读回被删除的原文 | ✅ 已实现(见下) |
| 删除整个会话 | ❌ 未实现 |
| 彻底擦除(物理抹掉日志) | ❌ 未实现,也不建议(见「已知限制」) |
安装
推荐:从 npm 安装(最省事)
在 DSH 的 设置 → 插件 → 添加插件 里,填入包名:
dsh-turn-eraser
或者用命令行:
dsh plugin --profile <你的配置档名> add dsh-turn-eraser
💡 如果提示装不上:DSH 有一条「新版本冷却期」的安全策略,刚发布的版本可能被挡住。
这时把版本号一起写上就行,例如 dsh-turn-eraser@0.1.0。
其他方式:同一个输入框也支持 GitHub 仓库地址或本地目录路径。
(本插件的仓库在 Nagiko0739/dsh-turn-eraser。)
使用
每一轮的尾部有一个小垃圾桶图标:
1. 点它 → 浮出两个按钮:删除本轮 / 删除此处及以后
2. 选中哪个,哪个就变成 再点一次确认
3. 再点一次,才真正删除(4 秒不操作自动收起,防误触)
删除后:
- 模型:从下一轮起再也看不到这段内容
- 界面:那一轮整体隐藏(含思考过程、工具调用的折叠块)
- 磁盘上的日志:原文完整保留
工作原理:墓碑(tombstone)
DSH 的会话日志是"只追加"的,历史无法就地改写。所以本插件的删除是这样实现的:
往日志尾部追加一条墓碑事件,声明「把第 X 到第 Y 条事件从可见上下文里替换掉」。
原始事件仍然躺在日志里,只是不再进入模型可见的 surface。
一条墓碑长这样:
{
"type": "user/message",
"data": {
"content": [{ "type": "text", "text": "[已删除 3 轮]" }],
"source": {
"producer": "session-tools",
"action": "delete",
"removed": [1634, 1636, 1638],
"turn": 20,
"preview": "(被删内容的一小段预览)" } },
"surfaceOp": { "op": "replace", "startSeq": 1634, "endSeq": 1654 },
"sourceEventSeqs": [1634, 1636, 1638]
}
⚠️ 两个技术细节,踩过坑:
1. 墓碑必须是 user/message,不能是 assistant/message(后者携带 sourceEventSeqs 会被 DSH 的写入校验拒绝)
2. 墓碑内容不能为空(严格的第三方服务商会拒绝空 user 消息)
可追溯:把删除的内容读回来
这是本插件的一个设计:删除不等于销毁。
列出所有会话的删除记录
python3 tools/audit_deletions.py
筛选 + 展开被删原文
python3 tools/audit_deletions.py <关键词> --full
输出示例:
会话 session-xxxxxxxx 共 1 条墓碑
墓碑 seq=1891 动作=delete 遮蔽 8 个事件被删内容预览:'行,咱们试试新上手的 pypdf 工具…'
---- 以下为原始内容(模型已看不到,日志里仍在)----
seq=1634 [user/message] (你的原话,完整)
seq=1636 [assistant/message] (AI 回复正文)
seq=1638 [tool/result] (工具执行结果)
能做与不能做,说清楚:
| 能 | 不能 |
| 查出"删了什么、什么时候删的、属于哪一轮" | ❌ 查不出"谁删的"(日志里没有操作者身份) |
| 读回被删的原文(含思考过程、工具结果) | ❌ 防不了篡改(日志是明文,改了就查不出来) |
| 只取你要的部分(比如只要正文、跳过思考) | ❌ 提供「一键撤销删除」 |
已知限制
诚实列表(都是实际撞过的):
1. 不能一键撤销。DSH 的 surface 只有 append 和 replace 两种操作,replace 一旦执行,被替换的节点就从可见列表里消失了,后续事件无法把它放回去。要「恢复」,正确做法是用上面的审计工具把原文读出来,而不是改日志。
2. 审计防不了篡改。日志是明文 JSON,谁能读就能改。如果需要防篡改,得引入哈希链或外部存证——本插件没有。
3. 依赖 DSH 的界面结构。删除入口挂在官方插槽 conversation.chat.turnTail 上。这是官方支持的做法,但如果 DSH 大改界面结构,插件可能需要跟进。代码里做了「读 DOM 兜底」以防万一。
4. 引用了一个官方组件库(@deepseek-ai/dsh-client-ui-primitives)。官方文档并不推荐插件引用它。代码里做了自绘兜底:拿不到这个库时按钮依然可用,只是外观退化。
5. 「删除整个会话」尚未实现,目前也没有实现这个功能的计划。
6. 不做物理擦除。本插件永远不会去重写会话日志文件——那是高风险操作(日志有连续编号,重排出错会导致整个会话打不开)。
开发与测试
零运行时依赖,纯 JavaScript(宿主侧)/ 浏览器端(界面侧)。
node --check index.js client.js
node tests/01-tombstone-shape.mjs # 墓碑形状是否符合 DSH 的全部约束
node tests/02-tool-params.mjs # 工具参数解析
node tests/03-tool-execute.mjs # 工具执行路径(含防死锁)
node tests/04-http-entry.mjs # 界面按钮走的 HTTP 入口
node tests/05-real-log-regression.mjs # 真实日志回归(无日志时自动跳过)
node tests/06-client-load.mjs # 客户端 bundle 加载
node tests/07-truncate-span.mjs # 截断的区间计算
node tests/08-tombstone-text.mjs # 墓碑文案的轮数统计
致谢
- dsh-turn-delete(MIT,作者 hanshenmesen)—— 「整轮删除」的思路、以及「用 DOM 兄弟遍历隐藏整轮」的做法借鉴自它。
- dsh-message-recall(MIT)—— 墓碑写入的方式(user/message + surfaceOp: replace)参考了它,包括「占位文本不能为空」这个踩坑经验。
- 开发过程:本项目由 Nagiko0739(需求、产品决策、测试、验收)与 AI 助手协作完成。代码主要由 AI 编写,方向与判断由人把关。
依照多数司法辖区的规则,AI 生成内容不享有著作权,因此版权行只署名人类作者;AI 的贡献记在这里。
License
MIT © 2026 Nagiko0739
English summary
dsh-turn-eraser — a plugin for DeepSeek Harness (DSH) that deletes a conversation turn.
Install from npm: dsh-turn-eraser (or add the GitHub repo / local path in the DSH Plugins page).
Deletion works by appending a tombstone event that hides the target range from the
model-visible context. The underlying session log is never rewritten, so the original
text can always be read back with tools/audit_deletions.py.
- ✅ Delete one turn (your prompt + the whole assistant reply), including turns with no visible answer
- ✅ Delete from this turn onward
- ✅ Every turn has a delete entry point (official conversation.chat.turnTail slot)
- ✅ Traceable by design — deleted content is hidden, not erased
- ❌ No "undo"; to recover content, read it back from the log
- ❌ Not tamper-proof (the log is plaintext)
Licensed under MIT. Built by Nagiko0739 in collaboration with an AI assistant.预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
Nagiko0739/dsh-turn-eraser
删除指定轮次对话,原文可随时读回
相关插件 · 对话 / 记忆
上下文中枢oceanbase/powercontext
上下文跟着工作走 —— 跨会话、跨智能体、跨人。
★ 1,487已汉化DSH
73
智能体记忆库plastic-labs/honcho
Honcho 是记忆基础设施,用来构建有状态的智能体。这些智能体能理解不断变化的人、智能体、群组、项目和想法。
★ 7,894已汉化DSH
71.7
长程智能体控制面loopx-project/loopx
给 Agent 一个目标,让工作持续向前。
★ 6,358已汉化DSH
71.3
智能体上下文数据库volcengine/OpenViking
给 AI 智能体用的上下文数据库
★ 41,379已汉化DSH
71.3
长效机器人团队Fei2411/DS-Bot
DS Bot 是一个基于 DeepSeek Harness简称 dsh的 bot 插件,插件将 dsh 改造为 bot…
★ 5,084已汉化DSH
71.1
可携带记忆层EverMind-AI/EverOS
为什么选择 EverOS
★ 13,778已汉化DSH
71.1
这是你的仓库?认领条目