dsh-one-click-session-delete:一键永久删除 DeepSeek Harness 会话

前言

DeepSeek Harness(DSH)官方只提供会话归档,持久化层没有删除接口。侧栏会话列表是核心交互面,长期积累会产生大量归档会话,需要一种可逆、可清理的移除方式。

是什么

这是一个给 DSH 工作区侧栏增加「一键永久删除」的客户端插件。维护者为 LINJJ749。插件通过官方扩展 Slot 实现删除操作,不注入 DOM、不改官方 UI。

核心功能

  • 会话行悬停按钮:在每行操作区末尾增加垃圾桶图标,位于官方归档、置顶按钮之后。
  • 菜单项:在会话 ... 菜单中增加「删除会话」操作,位置在「复制会话 ID」之后。
  • 轻量确认:弹出对话框显示会话标题与不可恢复警告,提供取消/确认;删除中显示进度,失败时显示错误信息。
  • 运行中保护:正在打开或运行的会话被拒绝删除,避免写句柄在文件删除后重建无 header 的日志。需先切换到其它会话。
  • 派生会话处理:目标会话若有派生子会话(子代理或带 parentSession 的分叉),首次删除被拒绝并返回数量;确认框提供「一并删除 N 个会话」选项,按先子后父删除整棵子树;子树内有运行中会话则整体拒绝。
  • 完整且边界明确的删除:
  • 会话日志目录:<DSH_HOME>/sessions/--<cwd>--/<sessionId>/。先把 canonical 日志改名为 *.deleted-<时间戳> 作为唯一原子提交点,此后该会话对 list/stat/open 立即不可见,再尽力删除目录。
  • 投影缓存:通过 session_projcache 存储域的写链删除记录,保证内存与磁盘一致。
  • 工作区记账:从所属工作区的 sessionIds、归档集合与置顶集合中移除。
  • 无需刷新页面:删除成功后本地移除该行,后台与 Host 会话基线对齐。
  • 中英双语:继承宿主主题 token 与语言设置。

安装与启用

dsh plugin --profile <your-profile> add github:LINJJ749/dsh-one-click-session-delete

替换 <your-profile> 为你的 profile 名称(例如 desktop 或 web)。包内声明了 dsh.bundle 清单,dsh plugin add 会自动安装并挂载,无需手动修改 cordis.patch.yml。

典型用法

在左侧工作区侧栏把鼠标悬停到会话行上,点击垃圾桶按钮;或打开该行的 ... 菜单选择「删除会话」,在确认框中确认。该行会消失,会话的本地记录被永久删除。

若只想从侧栏收起、保留记录,请使用官方「归档会话」。

适用场景与注意

  • 永久删除没有回收站、不可撤销;归档会话也可删除,会从归档集合一并清理。
  • 正在打开/运行的会话总是被拒绝;删除当前正在查看的会话需要先切换会话。
  • 附件是内容寻址且跨会话共享,本插件不删除附件。
  • 若部署启用了持久 SQLite 内容搜索索引,本插件不触碰索引文件(该索引自带 reconcile 自愈)。
  • 会话根目录来自运行时 sessionPersistence 服务,回退到启动器提供的 home 路径,不硬编码。
  • Host 半只注册一个同源 JSON 路由(POST /session-delete/api/delete),由 Host 的 connection 信任栅栏保护;Client 半只做 Slot 注册。
  • Host 半以宿主进程权限运行(插件不受沙箱约束),会删除 DSH home 下所选会话自己的存储路径。请阅读源码。

兼容性

  • DeepSeek Harness 0.2.1-rc.2(已实测)。
  • Node.js >= 20。
  • Windows / macOS / Linux。

结尾

该插件为 DSH 提供了明确边界、可审计的会话删除能力,适合需要定期清理历史会话的场景。查看目录页与源码:
- 技术目录:https://www.skillhub.cn/plugins/LINJJ749/dsh-one-click-session-delete
- GitHub:https://github.com/LINJJ749/dsh-one-click-session-delete

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

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

小夜