← Back to home@sailoumili

dsh-session-remover

DSH 插件:侧栏会话行菜单增加「删除对话」与「批量删除」,把对话及其子代理会话移入 Windows 回收站,可从回收站还原。 | DSH plugin: adds Delete conversation and Batch delete to the sidebar session menu; a conversation and its subagent sessions move to the Windows recycle bin and can be restored.

Stars
1
Language
JavaScript
Created
Oct 6, 2026
Updated
Oct 6, 2026
GitHub repo

Introduction

dsh-session-remover

在侧栏会话行的「…」菜单中增加「删除对话」与「批量删除…」两项,将对话及其子代理会话移入 Windows 回收站,需要时可予以还原。

  • 包名:dsh-session-remover
  • 仓库:https://github.com/sailoumili/dsh-session-remover
  • 兼容 DSH 0.1.7 及以上版本,适用于网页版与桌面版
  • 界面文字随 DSH 界面语言切换,提供中文与英文两套
  • 仅支持 Windows,无第三方运行时依赖

安装

网页版

  1. 在左侧栏单击「插件」。
  2. 单击「添加插件」。
  3. 在「包名或地址」输入框中填写 dsh-session-remover,单击「安装」,等待安装完成。
  4. 在该插件页面中启用该插件。
  5. 重启 DSH。

等效命令行:

dsh plugin --profile web add dsh-session-remover

桌面版

桌面版使用独立的插件清单(~/.dsh/profiles/desktop),与网页版互不影响,须单独安装一次。操作步骤与网页版一致:左侧栏「插件」→「添加插件」→ 填写包名 →「安装」→ 启用 → 重启。

dsh plugin --profile desktop add dsh-session-remover

用法

  1. 将指针移至侧栏任一会话行,单击行尾的「…」。
  2. 菜单中最后两项为「删除对话」与「批量删除…」。
  3. 删除单条:单击「删除对话」,在确认框中单击「确定」,页面自动刷新,该行消失。
  4. 批量删除:单击「批量删除…」,在浮层中勾选目标对话(可使用「全选 / 全不选」),勾选确认项,单击「删除选中的 N 个」,再次确认后逐条删除。
  5. 退出批量删除:单击「取消」「关闭」、单击浮层外部区域或按 Esc 均可;删除进行期间不响应关闭,须待其结束。
  6. 还原:在资源管理器中打开回收站,右键单击对应会话文件夹,选择「还原」,重启 DSH。

说明

  • 删除为移入回收站,并非抹除:同盘移动,不复制数据,.dsh 内不留副本。删除前先按会话所在磁盘核对两件事:该磁盘是否关闭了回收站(Windows 该开关按磁盘逐个设置)、该磁盘是否有可用的回收站;任一不满足即拒绝删除,不会退化为永久删除。移入后另按「原位置 + 名字」逐项核对,确认确实进入回收站;核对直接读取本机回收站索引(只列文件名,不逐项读取),耗时基本不受回收站已存项数影响。
  • 一并删除子代理会话:子代理会话不显示于侧栏与搜索,未一并清理将持续累积。由 fork 产生的分叉会话属独立对话,不被连带删除。
  • 清理三处记录:投影缓存、工作区记账、归档集合。投影缓存为派生数据,还原后由 DSH 自动重建;后两处予以清理以避免在本地留存痕迹,代价是还原后的对话归入侧栏的「未分组」。
  • 支持删除当前打开的对话:删除前先停止其运行中的任务并落盘,无需重启 DSH。

已知限制

  • 仅支持 Windows。移入回收站依赖系统脚本宿主 cscript.exe(Windows 自带);在其他系统上插件拒绝删除并报错,不会退化为永久删除。
  • 所在磁盘没有回收站时拒绝删除。会话目录若位于网络盘、U 盘或未启用回收站的磁盘(如 FAT/exFAT),移入回收站会退化为永久删除,插件一律拒绝。处理办法:先把会话目录搬到本地磁盘,或在该磁盘上删除任意一个文件以启用回收站,再重试。
  • 回收站清空后不可还原。插件仅负责将文件移入回收站,是否清空由用户决定;回收站存在容量上限,超出配额时 Windows 将丢弃最早的项。
  • 还原后可能不在原工作区。插件清除了工作区记账,还原的对话将出现在「未分组」中。如需恢复至原工作区,须在 DSH 停止运行时手工编辑 ~/.dsh/storages/workspace.json。
  • 附件不予回收。DSH 附件按内容寻址、跨会话共享,且无引用计数,插件无法安全判断其可否回收。
  • 删除失败时服务端返回的原因文本同样随界面语言切换:服务端只回错误码与参数,界面文字统一由前端按当前语言取词。
  • 端点仅接受本机请求。/api/session.delete 仅放行回环地址(127.0.0.1 / localhost / [::1]),局域网来源一律返回 403。本插件的路由位于官方鉴权栅栏之外,而官方基于浏览器 cookie 的鉴权依赖插件无法获取的签名密钥;删除数据属高风险操作,故从严处理。将 DSH 绑定至 0.0.0.0 并从其他机器访问时,删除将返回 403。
  • 无法读取会话目录时不作任何改动。会话树收集失败即整体放弃删除,不会将「读取失败」视为「磁盘上不存在」。
  • 批量删除浮层不锁定焦点,按 Tab 键可能移至浮层后方的页面元素。

许可

MIT