dsh-forget-session-en:DeepSeek Harness 会话彻底删除插件

前言

在 DeepSeek Harness(DSH)中,会话管理是日常使用的基础功能。虽然官方提供了归档、固定等操作,但缺少一种”彻底删除”的能力。已删除的会话往往因为各种复活机制重新出现在侧边栏,或者因为文件句柄占用导致磁盘删除失败,形成顽固的垃圾数据。dsh-forget-session-en 插件解决了这个问题,提供一条可靠的会话清理路径。

这是什么

dsh-forget-session-en 是 DeepSeek Harness 的一个插件,通过在会话行的”…”菜单中添加” Forget session”选项,实现两步确认后彻底删除会话。它是 dsh-forget-session 的英文分支,由 esketids 维护,专注于修复原版中会话删除后重新出现的三个复活路径问题。

核心功能

1. 菜单项集成

插件在会话行的”…”菜单中添加” Forget session”选项,排序为 500,位于官方的固定/重命名/分支/归档项之后。点击后进入两步确认机制:第一次点击后菜单项变为”Click again to confirm”,第二次点击才真正执行删除。

2. 彻底清理范围

删除操作覆盖以下对象:

  • 运行中的工作:通过官方 workspace/session-stop 水流停止并归档
  • 活跃会话(Session store 内部):使用官方 entry.detach() 通道,即 store.delete + attachments.delete + emitDisposed
  • 工作区记账(workspace.json 中的 sessionIds):通过官方 detachSession 通道
  • 归档集 / 固定集:使用官方 unarchiveSession / unpinSession
  • 会话日志目录 ~/.dsh/sessions/<project key>/<id>:整目录删除,包括 _no-cwd、旧版无前缀布局和重试中的文件
  • 投影缓存分片 ~/.dsh/storages/session_projcache/sessions/<id>.json:删除
  • 投影缓存主表 ~/.dsh/storages/session_projcache.json:读取后修改对应条目,其他内容保持不变
  • 复活文件:主机”复活守卫”会在约 2 分钟窗口内自动再次删除
  • 侧边栏会话行:通过官方 sessions.handleSessionRemoved(id) + sessions.refresh() 移除

3. 残留防护机制

插件内置”复活守卫”,在成功删除后启动:

  • 指数退避重试:从 2 秒开始,上限 32 秒
  • 窗口时长:约 130 秒
  • 检查对象:日志目录(项目键已知时按项目扫描,否则全盘扫描)、缓存分片
  • 每次成功删除也会清理对应的缓存分片
  • 再次显式删除同一会话会重置守卫

安装与启用

从 npm 安装(替换 --profile 为实际使用的配置):

dsh plugin --profile web add dsh-forget-session-en

或直接从仓库安装:

dsh plugin --profile web add github:esketids/dsh-forget-session-en

安装后需重启 DSH 才能生效。

典型用法

  1. 在 DSH 侧边栏找到目标会话
  2. 点击会话行右侧的”…”菜单
  3. 选择” Forget session”
  4. 再次点击确认删除
  5. 删除成功后,会话行消失,顶部 Toast 显示删除摘要(删除的工件数量、警告数量)

适用场景与注意

此插件适合需要清理测试会话、废弃会话或保持工作区整洁的开发者。注意插件以当前 DSH 进程权限运行,安装前应检查源码与许可证(MIT)。

小结

dsh-forget-session-en 提供了一条完整的会话清理路径,从 UI 交互到磁盘删除再到复活防护,覆盖了官方机制无法完全处理的边界情况。它通过官方通道执行删除,避免绕过或破坏内部状态,同时不影响 Lingxu 记忆插件的数据。对于需要频繁清理会话的场景,这是一个可靠的补充工具。

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

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

Xiaoye