前言¶
DSH 没有删除会话的接口,只能归档或直接关闭。要彻底清理时,往往需要手动找文件、删目录,容易误删或遗漏。会话回收站(Session Recycle Bin)给 DSH 补上这个能力:删除即移入可恢复的回收站,只有「彻底删除」才真正销毁磁盘上的字节。
是什么¶
会话回收站是 DSH 桌面端的一个插件,由维护者 WangLemna 提供。它把「删除」拆成两步:先移入回收站,随时可以恢复;再通过「彻底删除」真正清空磁盘。插件围绕三条约定设计:一条条目 = 一棵树、不会悄悄销毁任何东西、侧栏入口、会话菜单、模型工具三处入口共用同一批 Host 方法。
核心功能¶
删除与彻底删除¶
- 删除:先弹确认框,写明有多少个子会话会一并移入回收站;会话日志与投影缓存被移动到
~/.dsh/session-recycle-bin/<时间戳>-<id>/,并从工作区登记里摘除。 - 彻底删除:同样先过确认框,写明要销毁的条目数与子会话日志数;只有在确认后才会真正销毁磁盘上的字节。
会话树处理¶
插件按会话日志 header 里的 origin: 'subagent' + parentSession 解析整棵树,删除一个会话会带走整棵树;恢复与彻底删除都把树当成一个整体。恢复时会先检查整棵树的所有目标路径,避免出现「父会话回来了、子会话还在回收站」的半棵树。
入口与操作¶
- 会话右键菜单 → 红色「删除会话…」:先确认,写明子会话数。
- 会话右键菜单 →「批量操作…」:对某个工作区的全部会话批量归档或删除,确认框写明整个选中集合带多少子会话。
- 侧栏「会话回收站」:主区打开完整页面,每条会话行首有复选框、行尾是恢复与彻底删除,上方是选择栏,可批量操作。
- 右键侧栏图标 →「清空回收站…」:一键清空的捷径,同样先过写明条数的确认框。
- 设置 → 会话回收站:同一个回收站页,给习惯在设置里操作的人。
delete_session工具(给模型用):preview/trash/trashMany/archiveMany/list/restore/restoreMany/purge/purgeMany/purgeAll,与 UI 共用同一批 Host 方法。
安全边界¶
- 只有「还有工作」的会话会被拒绝删除;只是打开过会话、没有在跑的任务,可以被删除,恢复后也能继续对话。
- 不会误销毁:清空回收站不可撤销,对话框打开期间整个回收站页冻结,正文永远写明要销毁的条目数与子会话日志数。
- 永远不碰:附件目录(
~/.dsh/attachments/v1/objects)、~/.dsh/sessions下的项目目录本身、以及任何同 ID 的既有会话。 - 父会话还在时,子会话不能被单独删除(返回
session-child),正确动作是删父会话;父会话已不存在的孤儿子会话仍可按 id 清理。 - 回收站条目仍占磁盘,直到显式彻底删除,没有自动过期清理。
- Windows 上跨卷移动会从
rename回退到复制(EXDEV);同卷内是原子 rename。 - 恢复后侧栏可能需要刷新一次页面——DSH 没有「会话出现」事件可为恢复的日志合成行。
- Auto review 权限预设可能拒绝模型发起的
delete_session写调用,那是 DSH 的权限策略,不是插件行为。
安装与启用¶
插件已在 npm 发布为 dsh-recycle-bin。
dsh plugin --profile <profile> add dsh-recycle-bin
也可以直接在市场里搜索「会话回收站 / Session Recycle Bin」点安装。装完刷新一次页面(Ctrl+F5),侧栏入口会出现在「插件」「定时」「市场」那一排。
本地开发安装(源码即运行代码,不需要 build):
plugin_manager { action: "install_bundle", target: "<本目录绝对路径>" }
卸载¶
plugin_manager { action: "remove_bundle" }
回收站里尚未恢复的条目会保留在 ~/.dsh/session-recycle-bin。如果插件已卸载又想把会话找回来,每个条目里都有 entry.json 清单写明每个文件该去哪:把 session/(以及每个 children/<id>/session/)搬回 ~/.dsh/sessions/<projectDir>/<id>/,把 projcache.json 搬回 ~/.dsh/storages/session_projcache/sessions/<id>.json 即可。
版本兼容¶
插件要求 DSH 版本:0.2.0-rc.1 || 0.2.0-rc.2 || 0.2.1-rc.1 || 0.2.1-rc.2。engines.dsh 与 peerDependencies 中 9 个 @deepseek-ai/dsh-* 包也都在 0.2.x-rc.* 区间,并依赖 @deepseek-ai/cordis ~4.0.5。
适用场景与注意¶
- 适合需要频繁清理会话、希望避免误删或手动找文件的 DSH 桌面端用户。
- 插件以当前 DSH 进程权限运行,安装前建议检查源码与许可证。
小结¶
会话回收站为 DSH 补上了删除会话的能力,把「删除」拆成两步,保留恢复余地,同时通过确认框、树处理、安全边界等设计,避免误操作与数据丢失。更多细节与源码可在插件目录页与 GitHub 仓库查看。