dsh-delete:DeepSeek Harness 的可恢复对话删除插件

前言

DeepSeek Harness (DSH) 的会话持久化采用追加模式,且公开服务未提供删除方法。在 Agent 运行时,其销毁句柄仅属于创建者,插件无法在活动写入器下安全移出日志。dsh-delete 通过两阶段策略解决这一问题:运行时仅持久化删除请求并隐藏会话,重启时才完成日志的原子移动与归档。

功能概览

dsh-delete 是一个 Memory 类插件,由 Hyna-hla 维护。它为 DSH 添加了可恢复的对话删除能力,核心功能包括:

  1. 会话菜单入口:在会话列表的 … 菜单中增加“删除对话”选项。
  2. 命令行接口:注册 /delete-conversation 人类命令。
  3. 即时隐藏与队列:确认后立即将会话加入删除队列并从列表中隐藏。
  4. 生命周期验证:Web Workspace 在构建会话索引前,会先验证会话的完整生命周期状态。
  5. 可恢复归档:重启 DSH 时,将日志目录移动到可恢复的垃圾目录(默认 ~/.dsh/conversation-trash)。

安装与启用

插件安装后需重启 DSH 生效。使用官方 CLI 命令添加插件:

node /path/to/DSH/apps/cli/lib/bin.js plugin --profile web add /path/to/DSH-DELETE

安装完成后,Web Workspace 会等待 conversationDeletion 服务完成启动恢复,再构建会话索引。

使用方法

界面操作

在会话列表中找到目标会话,点击行尾的 … 菜单,选择 Delete conversation。确认卡片出现后点击 Delete conversation。

命令行操作

命令要求字面量 CONFIRM,且必须区分大小写。

  • 删除当前对话:
    /delete-conversation CONFIRM
  • 删除指定会话:
    /delete-conversation <session-id> CONFIRM

确认后,目标会话会立即从列表中消失。下次启动 DSH 时,日志会被移入垃圾目录。

配置与注意事项

配置项

插件支持以下配置(cordis.patch.yml 中配置):

字段 默认值 说明
stateDir ~/.dsh/conversation-trash 垃圾目录,必须为绝对路径且位于会话目录之外
commandName delete-conversation 可选的人类命令别名(无前导 /)

安全与限制

  • 确认机制:删除操作必须包含字面量 CONFIRM,否则不会执行任何写入。
  • 后端限制:仅支持 JSONL 后端,明确拒绝 SQLite 后端。
  • 原子操作:日志移动使用同文件系统重命名,不使用 unlink,确保崩溃后可恢复。
  • Node 版本:构建和运行需要 Node.js 版本 ^22.19.0 || >=24.0.0。
  • 数据保留:日志进入可恢复垃圾箱,最终清理策略由部署管理员决定。

恢复数据

若需恢复误删的对话,需停止 DSH,进入垃圾目录,删除 deletion.json 文件,然后将对应目录移回原始位置。注意:恢复操作必须在 DSH 停止时进行,运行中恢复可能导致数据损坏。

生态信息

羽毛球分组比赛记分
小程序二维码

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

小夜