dsh-delete-sessions:在 DSH 侧栏永久删除会话

前言

在 DeepSeek Harness(DSH)里整理侧栏会话时,内置的「归档」只会把会话 id 记入 archivedSessionIds,从分组界面里藏起来,并不会删掉磁盘上的会话日志和投影缓存。长期开发、反复开新会话时,硬盘里会堆着大量已不再需要的 session.v4.jsonl.zstd 与 session_projcache 文件,只能靠手动找路径清理。

社区插件 dsh-delete-sessions(仓库 Linusteller/dsh-session-delete)在侧栏会话的「…」菜单里补上「删除会话」:确认后按固定顺序停活动、摘掉归档/置顶/工作区记账、删缓存与日志,并通知界面刷新。下面介绍它是什么、怎么装、怎么用,以及删除时实际会发生什么。

这是什么

  • 定位:DSH 客户端插件(dsh.client.platform 为 web),在侧栏为每个会话增加「删除会话」菜单项,实现永久删除,不是归档。
  • 维护者:Linusteller(npm 包作者字段为 linusteller)。
  • 包名与版本:npm 包名为 dsh-delete-sessions,当前资料中版本为 0.2.2;Cordis 插件 id 为 dsh-session-delete。
  • 分类:客户端;在 SkillHub 等社区目录中归类为客户端类插件,与 DeepSeek / 幻方无官方从属关系,属于「一切皆插件」生态里的社区贡献。

核心功能

插件只做一件事:从 UI 触发一次完整的会话移除流程,避免「列表里没了、磁盘还在」的半完成状态。README 中描述的顺序如下。

  1. 停活动 — 走 workspace/session-stop(与归档时的「停止并归档」同路径,含 agent.cancel),并短暂等待最后一次事件落盘。
  2. 摘除记账 — 调用 unarchiveSession、unpinSession,并对各工作区执行 detachSession(均幂等)。
  3. 删投影缓存 — 通过 storage-domain 的 session_projcache 域同步清理内存与磁盘;域未挂载时跳过(派生数据,冷读会重建)。
  4. 删日志目录 — 优先用 sessionPersistence.locate() 定位路径(session id 经 DSH 编码,无路径穿越);带重试以应对 Windows 上反病毒/索引短暂占用。
  5. 广播移除 — 发送 api-session/removed,界面立即去掉该行。

安全方面:删除接口只接受回环来源的 POST,body 仅携带 sessionId;会先 sessionPersistence.stat() 校验会话存在再删。

安装与启用

推荐用 bundle 方式安装,安装后 cordis.patch.yml 会自动插入加载项。

dsh plugin --profile desktop add dsh-delete-sessions

若手动安装:将插件目录放到 profile 的 node_modules/dsh-delete-sessions(或使用 link: 依赖),在该 profile 自己的 cordis.patch.yml 中加入:

- insert:
    - id: dsh-session-delete
      name: 'dsh-delete-sessions'

注意:手动加行后不要再应用本仓库自带的 cordis.patch.yml,否则同一插件会因 id 冲突被加载两次。完成后重启 DeepSeek Harness。

运行环境要求 Node.js >=18;peer 依赖 @deepseek-ai/cordis >=4(optional)。许可证为 MIT。

典型用法

  1. 在侧栏任意会话上点击「…」。
  2. 在「归档会话」下方会出现「删除会话」(带删除图标,风格与其余菜单项一致)。
  3. 点击后在确认对话框中确认;删除成功后该行立即从列表消失。

删除不可撤销。任何一步失败会整体报错,不会只清 UI 而留下磁盘文件。

适用场景与注意

适合:需要定期清理试验会话、敏感对话或占用空间的旧日志,且希望操作集中在侧栏、不必手写 shell 删 ~/.dsh/sessions 的开发者。

局限(来自 README):

  • 若 profile 未挂载 session_projcache 域,或无法定位 ~/.dsh/sessions,投影缓存或日志目录可能残留;缓存可在下次冷读时重建,日志需自行清理。
  • 插件以当前 DSH 进程的权限运行;安装前建议阅读 GitHub 源码 与 MIT 许可证,确认行为符合预期。

内置归档仍适用于「暂时藏起来、保留文件」;需要真正腾出磁盘或彻底去掉会话记录时,用本插件的「删除会话」。

链接

  • 社区目录页:https://www.skillhub.cn/plugins/Linusteller/dsh-session-delete
  • 源码与说明:https://github.com/Linusteller/dsh-session-delete
羽毛球分组比赛记分
小程序二维码

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

Xiaoye