dsh-session-remover:从侧边栏永久删除 DSH 会话及本地数据

前言

DeepSeek Harness(DSH)的会话会落在本机:JSONL 日志、投影缓存、工作区注册表里的引用。归档或改名只能改变「是否显示」,不会把磁盘上的会话目录清掉。若需要彻底移除某次对话——包括侧边栏条目和对应文件——官方界面里没有单独的「永久删除」入口时,只能手动找路径删目录,容易漏掉缓存或注册表残留。

下面介绍社区插件 dsh-session-remover(npm 包名 @jamolpe88/dsh-session-remover),维护者为 JaMoLpE88,分类为客户端插件。它在每个会话行的 ⋯ 菜单里增加一条红色的 Delete session,经确认后关闭正在运行的 Agent,再删除会话目录、投影缓存,并清理工作区注册表中的引用。插件不发起网络请求,也没有设置页。

这是什么

一句话:在 DSH Desktop 侧边栏会话菜单中,经二次确认后永久删除指定会话及其在本机的对话日志与缓存数据。

与「仅归档、隐藏侧边栏行」不同,删除会直接移除 <session store>/<project>/<session-id>/ 下的 .jsonl.zstd 等文件,并删除 storages/session_projcache/sessions/<session-id>.json,同时在 storages/workspace.json 里解除挂载、取消置顶与归档标记。会话不会进入回收站,空间会立即释放。

界面为英文;README 说明无设置页、无归档管理器、无 Agent 工具或斜杠命令。

核心功能

侧边栏入口与确认流程

  • 在每个会话行 ⋯ 菜单中,在内置项(pin、rename、fork、archive、copy Session ID)之后增加红色 Delete session。
  • 弹出 DSH 风格确认框,写明将要删除的会话名;Cancel 默认获焦,按 Escape 可关闭且不执行任何操作;只有确认 Delete permanently 后才会向 Host 发送请求。

删除前关闭会话

若该会话当前打开,插件会按 DSH 自身 Agent 的 teardown 顺序(stop、drain、释放 writer、detach)关闭,完成后再动存储。

实际清除的范围

路径 含义
<session store>/<project>/<session-id>/ 会话目录及版本化 JSONL 日志等
storages/session_projcache/sessions/<session-id>.json 标题、消息派生字段等投影缓存
storages/workspace.json 仅更新引用:detach、unpin、清除 archive 标记

删除后会刷新侧边栏;若删的是当前主面板显示的会话,会清空主面板。Host 侧还会用廉价搜索协调 SQLite 搜索索引。

不会删除的内容

  • 附件:图片与文件在 attachments/v1/objects/<hash> 内容寻址存储中,可能被 fork 后的会话共用;插件不删附件,避免误伤其他会话。
  • 其他会话、工作区工程文件、DSH 自身日志、用户自备份、已离开本机的副本等均不触碰。

已归档且侧边栏无行的会话:需先在 DSH 自带归档页取消归档,再在其 ⋯ 菜单中删除。

安装与启用

要求(来自 README):

  • DSH Desktop >= 0.2.1-rc.3,profile 为 desktop(README 在 0.2.1-rc.3、Windows 11 上测试)。
  • 默认的 per-session JSONL 会话存储;非 JSONL 后端在加载时会被拒绝。
  • Node 22+(DSH 自带运行时)。
  • 安装或更新插件后须完全退出并重新打开 DSH。Host 半部拦截 Agent 生命周期,只能关闭「插件加载之后」打开的会话;对加载前已打开的会话会拒绝删除,避免半删状态。

从 npm 安装:

dsh plugin --profile desktop add @jamolpe88/dsh-session-remover

从 GitHub 仓库安装:

dsh plugin --profile desktop add github:JaMoLpE88/dsh-session-remover

安装完成后完全退出 DSH 再打开,并刷新窗口。

package.json 中当前版本为 0.1.1,许可证 MIT。兼容性表注明 macOS、Linux 与 web profile 未测试;会话存储须为 JSONL 后端。

典型用法

  1. 在侧边栏将鼠标悬停于目标会话,打开 ⋯ 菜单。
  2. 选择最后一行红色的 Delete session。
  3. 在对话框中核对会话名称,点击 Delete permanently 确认,或取消。

删除过程经 Host 路由 POST /plugins/session-remover/delete 完成;请求须通过 Host 的 request fence,并携带头 x-session-remover-confirmation: delete-session,普通链接或跨站表单无法伪造该头。会话 id 在写路径前会按 ^[A-Za-z0-9][A-Za-z0-9_-]{0,127}$ 校验。

适用场景与注意

适合谁:需要在 DSH 内一键、可确认地清除某会话在本机的痕迹(隐私整理、误建会话、不再需要的实验对话),且接受「纯文本会话几乎不占附件空间、带图会话的附件仍留在磁盘」这一设计。

权限与安全:插件以当前 DSH 进程权限读写本机会话存储与工作区注册表。安装前建议阅读 GitHub 仓库 源码与 MIT 许可证;删除不可恢复,确认框中的会话名务必核对。

生态说明:DSH 采用「一切皆插件」的扩展方式;社区目录站点 dsh-plugin.org 与 DeepSeek / 幻方无官方从属关系,本文介绍的是社区维护的客户端插件。

结尾

dsh-session-remover 把「永久删会话」收成侧边栏里一行菜单加一次确认:会话目录、投影缓存与工作区引用一并清理,且不删共享附件存储。若你的 DSH 版本与 JSONL 存储满足 README 要求,可按上文命令安装并在重启后使用。

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

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

Xiaoye