dsh-plugin-session-delete:为 DSH 侧边栏会话提供可撤销删除

前言

在 DeepSeek Harness(DSH)里长期跑智能体会话时,侧边栏会积累大量历史对话。DSH 内置有归档等能力,但若你希望在列表里直接去掉某条会话、又担心误删无法找回,就需要一套带确认、且能短暂撤销的删除流程。下面介绍的 dsh-plugin-session-delete(维护者 yinvoke)正是面向这一需求:在 Web GUI 会话行的「⋯」菜单中增加 删除会话,经确认后从列表移除,并在右下角提供 5 秒恢复窗口;期限过后由宿主永久清理日志。插件为独立 bundle,不改动 DSH 内置归档逻辑;0.1.0 为实验版本,永久删除前请先备份重要对话。

这是什么

dsh-plugin-session-delete 是 DSH 社区插件,仓库 yinvoke/dsh-plugin-session-delete,目录页见 SkillHub。它在 DSH Web 工作区 UI 中注入删除入口,由宿主配合完成日志迁移、临时存储、恢复与最终清理;客户端与宿主通过操作 token、状态查询和幂等重试处理删除与恢复。

核心功能

经 README 核实,插件主要提供以下能力:

  • 会话行「⋯」菜单中的红色 删除会话 操作。
  • 确认弹窗:标题与会话名分开展示,须勾选确认后删除按钮才可用。
  • 宿主接受删除后,会话立即从侧边栏列表移除;日志移入临时存储,并更新工作区成员记录。
  • 右下角 恢复 提示:约 5 秒倒计时与进度条,样式使用 DSH 主题变量;点击可恢复日志及可恢复的工作区顺序、置顶和归档状态。
  • 宿主侧 5 秒恢复期限,配合磁盘临时存储、原子恢复日志;宿主退出后,到期临时记录可在插件下次启动时继续处理。
  • 拒绝删除仍有活动任务的会话;移动日志前会安全释放已捕获的空闲 agent 生命周期句柄。
  • 客户端同时只支持一个删除/恢复窗口,须先完成当前操作再删其他会话。

安装与启用

lib/ 中提供可直接读取的 JavaScript,无需构建。manifest 面向 DSH 0.2.1-rc.3 或更新(未逐项验证后续版本)。安装或更新后须 完全退出 DSH 并重新打开,不要仅刷新页面。

桌面版或 GUI 托管 profile

打开 设置 → 插件 → 安装,输入 GitHub Release 安装包地址:

https://github.com/yinvoke/dsh-plugin-session-delete/releases/latest/download/dsh-plugin-session-delete.tgz

也可在插件安装界面选择本地克隆目录(需自行克隆仓库)。启用 bundle 后完全退出并重开 DSH。不要用独立 profile CLI 去管理 Electron 桌面应用托管的 desktop profile。

CLI 管理的 profile

先停止目标 profile,将 <profile> 换为实际名称:

dsh plugin --profile <profile> add github:yinvoke/dsh-plugin-session-delete

安装依赖后,还需在该 profile 的 package manifest 里,把 dsh-plugin-session-delete 追加到已有 dsh.profile.bundles 数组(保留原有条目):

{
  "dsh": {
    "profile": {
      "bundles": ["your-existing-bundle", "dsh-plugin-session-delete"]
    }
  }
}

这只是配置片段,勿覆盖完整 manifest。随后重启 profile。本地开发可将安装参数改为 add link:<checkout-directory>,bundle 名称不变。

典型用法

  1. 在会话行 ⋯ 菜单选择 删除会话。
  2. 在弹窗中勾选确认并提交。
  3. 宿主把日志移入临时存储,并从工作区成员中移除该会话。
  4. 在右下角 5 秒内 点击 恢复(若需要);否则期限结束后宿主永久清理临时日志目录。

实际期限由宿主控制,不取决于动画。刷新页面不会取消删除。清理失败会重试;恢复事务失败会保留数据以便处理,不会静默永久清理。

适用场景与注意

适合:本机单进程使用 DSH Web GUI,需要在侧边栏快速去掉误建或已过期的会话,并保留极短撤销窗口的场景。

务必了解:

  • 插件以当前 DSH 进程权限运行;安装前应阅读源码与 MIT 许可证,自行评估信任边界。
  • 仅支持本机单进程:路由只接受回环请求,拒绝外来浏览器 Origin;远程/配对客户端或多进程共用同一存储不在支持范围。
  • 进行中的回合、子代理、后台任务或定时提醒可能阻止删除,需先停止相关活动。
  • 只清理选中会话自己的日志目录,不是完整的隐私数据擦除工具;不会递归清理项目文件、共享附件及独立子代理/分叉日志。
  • 临时数据位于 <DSH_HOME>/session-delete-trash,默认 DSH_HOME 为 ~/.dsh。没有永久回收站,正常恢复期限为 5 秒。
  • 运行时开发环境为 macOS 单进程;其他平台及完整桌面端到端行为 README 标明尚未验证。仓库测试不是真实桌面 DSH 的完整 E2E,重要对话请在目标 DSH 版本用可丢弃会话手动验证。

卸载:GUI 托管 profile 在设置中禁用或移除;CLI profile 先从 dsh.profile.bundles 移除名称,再执行 dsh plugin --profile <profile> remove dsh-plugin-session-delete 并重启。卸载前须完成或恢复待删除操作。

结尾

dsh-plugin-session-delete 在 DSH「一切皆插件」的生态里,补上了侧边栏 可撤销删除会话 这一小块能力:确认弹窗 + 宿主侧 5 秒恢复,与内置归档互补而非替代。进一步了解可访问目录页 skillhub.cn/plugins/yinvoke/dsh-plugin-session-delete 与 GitHub 仓库 github.com/yinvoke/dsh-plugin-session-delete。

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

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

小夜