dsh-conversation-trash:为 DSH 对话补上「删除」与回收站

前言

DeepSeek Harness(DSH)侧栏里可以归档(archive)会话,但宿主持久化层没有暴露「删除」原语,Workspace 注册表也会刻意保留每一份 session 日志。对日常开发来说,误建对话、试跑子代理、或只想清掉侧栏条目时,缺少一条可撤销的删除路径,列表只会越积越多。

dsh-conversation-trash 由社区维护者 wusoudiaowei 发布,在 SkillHub 上归类为「记忆」类插件。它不修改宿主二进制、不改写日志格式,而是用宿主已支持的操作组合出「移入回收站 → 8 秒内撤销 → 稍后恢复或彻底删除」的流程。下文按安装、用法、实现要点与限制说明。

这是什么

一句话:DSH 对话回收站——从侧栏把会话移入回收站,确认后 8 秒内可 Undo,之后可在回收站面板恢复或永久清除。

核心功能

以下能力均来自项目 README,安装后由插件向 UI 与本地 HTTP 路由提供。

  • 侧栏删除入口:在会话行 … 菜单中,Archive 下方提供危险样式的「删除对话 / Delete conversation」。
  • 8 秒撤销:确认后行从列表消失,toast 提供 Undo,不是静默不可逆删除。
  • 删除前预览:对话框展示标题,以及会随父会话一起移走的子代理会话数量。
  • 子代理级联:被删会话拥有的 subagent 会话一并进入回收站;fork 是独立对话,不受影响。
  • 先停再藏:通过宿主 archiveSession 且 stopActivity: true,先停止进行中的工作再隐藏行。
  • 回收站面板:侧栏底部按钮带数量角标,可单条恢复、单条永久删除或清空回收站。
  • 数据落盘:回收站目录为 ~/.dsh/session-trash/,索引为同目录下的 index.json(原子写入)。

安装与启用

官方安装命令(desktop profile):

dsh plugin --profile desktop add github:wusoudiaowei/dsh-conversation-trash

Windows 也可将插件目录复制到 %USERPROFILE%\.dsh\profiles\desktop\node_modules\dsh-conversation-trash,并在 profile 的 dsh.profile.bundles 中注册后重启 DSH;仓库提供幂等的 install.ps1 完成这两步。

插件以当前 DSH 进程权限读写 ~/.dsh 下的会话与回收站目录。安装前建议在 GitHub 阅读源码与 MIT 许可证,并确认与本地 DSH 版本满足 engines 要求。

典型用法

  1. 在侧栏悬停某条对话,打开 … 菜单。
  2. 选择 删除对话 / Delete conversation。
  3. 在对话框中确认标题与子代理数量。
  4. 确认后列表移除该行;若误操作,在 8 秒内点 toast 中的 Undo。
  5. 需要稍后处理时,打开侧栏底部回收站按钮:恢复条目,或永久删除 / 清空(部分彻底删除能力 README 注明尚无设置 UI,可经 HTTP 路由操作,见下节)。

实现要点(便于排障)

删除流程在 README 中概括为三步:

步骤 行为
1 workspaceRegistry.archiveSession(id, { stopActivity: true })
2 会话目录从 ~/.dsh/sessions/<workspace>/<session-id>/ 移到 ~/.dsh/session-trash/<session-id>/
3 向 ~/.dsh/session-trash/index.json 写入条目

恢复会把目录移回并 unarchive;purge 则永久删除。Windows 上日志文件可能仍被占用,移动会带退避重试;失败会记 moved: false,由启动时 sweep 收尾。

仅本机、同源 JSON 接口(节选):

方法 路径 用途
GET /dsh-conversation-trash/list 列表与总大小
POST /dsh-conversation-trash/preview {sessionId} → 标题与子代理 id
POST /dsh-conversation-trash/delete {sessionId, displayTitle}
POST /dsh-conversation-trash/restore {sessionId}
POST /dsh-conversation-trash/purge {sessionId}
POST /dsh-conversation-trash/purge-all {}

适用场景与已知限制

适合:需要在 DSH desktop 侧栏清理对话、又希望有短暂撤销窗口和独立回收站的开发者;需要连同子代理会话一起整理父会话时。

注意(README Known limits):

  • 删除后,在「All conversations (show archived)」里仍可能看到该对话,直到下次重启——此时已归档且日志目录已移走。
  • 删除当前正在查看的对话不会自动跳转离开。
  • 依赖宿主内部 slot、archiveSession、日志目录布局;未来 DSH 版本可能不兼容,失败应可见且非破坏性。
  • 若上游日后提供真正的 session/delete,作者建议本插件退役。

DSH 生态强调「一切皆插件」;SkillHub 为社区目录站点,与 DeepSeek / 幻方无官方从属关系。

结尾

dsh-conversation-trash 用归档加目录移动补上了 DSH 侧栏缺失的删除体验:8 秒撤销、回收站恢复或 purge,且不碰宿主二进制与日志格式。进一步了解设计与被拒方案可见仓库 docs/design.md。

  • 目录页:https://www.skillhub.cn/plugins/wusoudiaowei/dsh-conversation-trash
  • GitHub:https://github.com/wusoudiaowei/dsh-conversation-trash
羽毛球分组比赛记分
小程序二维码

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

Xiaoye