前言¶
在 DeepSeek Harness(DSH)里,会话列表上的「删除」往往只影响界面:行从列表消失,或进入归档,但 ~/.dsh/sessions 下的会话目录和日志仍留在磁盘上。官方包文档里也明确提到会话文件不会因列表操作而删除,长期开发时目录只会越来越大。若你需要可控地清掉某次对话占用的空间,又希望误删还能找回,就需要在「归档」和「手删文件夹」之间多一层机制。
下面介绍社区客户端插件 dsh-delete-chat(维护者 abangbang):把删除做成「先移入回收站、再在回收站里永久清除」,并附带侧边栏 Trash 页与 CLI。
这是什么¶
dsh-delete-chat 是 DSH 的客户端插件(分类:客户端)。它在不立刻抹掉磁盘数据的前提下,实现「真正删除会话目录」:会话行菜单里的 Delete chat 会把对应 session-<uuid>/ 目录 rename 到 ~/.dsh/session-trash,同时更新工作区记账;侧边栏增加 Trash 面板,用于筛选、多选、恢复或永久删除;还提供 dsh-delete-chat 命令行,可在无 GUI 时操作同一套回收站。
插件目标 DSH 版本在仓库 badge 中为 0.2.1-rc.2;包版本以 package.json 为准(当前资料中为 0.4.6),许可证 MIT。
核心功能¶
软删除(移入回收站)¶
在会话行 「⋯」→ Delete chat 并确认后:
- 调用宿主归档并停止进行中的回合,列表里立即看不到该行。
- 将会话目录从
<sessions-root>/…/session-<uuid>/移到~/.dsh/session-trash/<project>/session-<uuid>/(同卷上为原子 rename;跨卷时按EXDEV回退为复制再删源目录)。 - 改写
storages/workspace.json,从sessionIds去掉该 id(并保留.bak-<stamp>备份)。 - 更新
~/.dsh/session-trash/index.json,记录标题、cwd、大小、最后活动与删除时间,无需解析 zstd 日志。
对话框会展示例如 Status moved to trash 与占用大小;此步可逆,直到在回收站里执行永久删除。
侧边栏 Trash 页¶
全局面板列表(aria-label="全局面板")会出现 Trash 行,括号内为回收站条目数(为 0 时隐藏计数,超过 99 显示 99+)。选中后中央区域变为与插件管理类似的页面,可:
- 按标题、路径或项目 筛选;
- 多选 或全选,页脚显示选中数量;
- Restore:目录移回会话根并重新入账、取消归档;
- Delete permanently、Empty trash:仅在此页提供,弹窗确认数量、释放字节、是否可逆;永久类操作为红色确认,恢复为琥珀色。
列表行展示大小、回收站内绝对路径、最后活动(日志 mtime)与删除时间(YYYY-MM-DD HH:mm:ss)。
布局与国际化¶
同时支持按项目 <root>/<project>/session-<uuid>/ 与扁平 <root>/session-<uuid>/。界面文案随宿主语言(中/英)切换,行菜单、弹窗与 Trash 页会随之重渲染。
CLI¶
安装后可用二进制 dsh-delete-chat,常用参数包括:
--trash/--trash-list--restore--purge --yes--empty --yes
GUI 被目录锁阻塞时,可先退出 DSH 再用 CLI 兜底(README 建议锁常来自宿主自身句柄)。
其他¶
仓库自带 format-1 市场索引,可添加为私有插件市场源;插件以当前 DSH 进程权限读写 ~/.dsh 下路径。
安装与启用¶
在 DSH 对话里直接请求安装(中英文均可):
Install https://github.com/abangbang/dsh-delete-chat
或:
帮我安装 https://github.com/abangbang/dsh-delete-chat
安装完成后 需要重启 DSH。插件树与客户端 bundle 在启动时组装,且客户端带 immutable 缓存头,仅刷新页面不够。
典型用法¶
从列表删除一次对话¶
- 在目标会话行打开 「⋯」。
- 选择 Delete chat。
- 在确认框中确认;行从列表消失,目录进入
~/.dsh/session-trash。
在回收站恢复或清空¶
- 在侧边栏全局面板点 Trash。
- 用筛选找到目标会话,勾选一行或多行。
- 点 Restore 移回原位置;或点 Delete permanently / Empty trash,在弹窗中再次确认(不可撤销)。
回收站目录结构示意:
~/.dsh/
├── sessions/
│ └── <project>/session-<uuid>/
└── session-trash/
├── index.json
└── <project>/session-<uuid>/
命令行(无 GUI)¶
退出 DSH 后,在 shell 中调用 dsh-delete-chat 与上述 flags;具体子命令以 --help 与 README 为准。
适用场景与注意¶
适合谁: 长期在 DSH 里开大量会话、希望列表「删掉」后磁盘也收敛,但又想保留误删恢复窗口的开发者。
务必知晓:
- 回收站 不是 操作系统回收站;路径在
<DSH home>/session-trash。手动删除该目录等于跳过所有确认,永久丢失。 - 插件与 DSH 同源信任:安装前请查看 GitHub 仓库 源码与 MIT 许可证,确认可接受其读写会话目录与
workspace.json的行为。 - 部分失败场景(如 Windows 上目录被占用导致 move 失败)可能已归档但未移走;README 给出恢复顺序:优先 Restore、重试、CLI、必要时用
workspace.json.bak-<stamp>回滚。永久删除仅能从 Trash 页触发。
DSH 生态强调「一切皆插件」;SkillHub 目录页 是社区索引,与 DeepSeek / 幻方无官方从属关系。
结尾¶
dsh-delete-chat 补上了 DSH 默认缺失的「删目录 + 清记账」链路,并用 session-trash 与确认弹窗把不可逆操作限制在回收站里。需要安装说明与故障表时,以仓库 README 为准。
- 目录页:https://www.skillhub.cn/plugins/abangbang/dsh-delete-chat
- GitHub:https://github.com/abangbang/dsh-delete-chat