dsh-session-trash:给 DeepSeek Harness 补上可恢复的会话回收站

前言

在 DeepSeek Harness(DSH)里长时间跑 agent 时,侧栏会堆积大量会话。DSH 自带「归档」只是把会话 id 记进 workspace.json 的集合,磁盘上的 session.v4.jsonl.zstd 并不会搬走;侧栏里看不见了,空间却照样占着。若要真删,又怕误删没法救。

下面介绍的第三方插件 dsh-session-trash(维护者 zhaoqianguo,分类:记忆)把「删除」做成移入 ~/.dsh/session-trash 的回收站流程:可恢复、可彻底清除、可按保留天数自动过期,并接管归档会话的列表与批量操作,附带容量统计与 10 个 agent 工具。

这是什么

dsh-session-trash 是面向 DSH Web profile 的 Cordis 插件:Host 侧注册 HTTP 路由与 agent 工具,Web 侧注入侧栏图标、右键菜单和双页签面板。运行时零额外依赖、无构建步骤;源码与许可证见 GitHub,社区目录页为 SkillHub 插件条目(与 DeepSeek / 幻方无官方从属关系)。

核心功能

人机界面

能力 入口
删除会话(移入回收站) 侧栏会话行右键 → 删除会话(可恢复,无二次确认);底部 toast「已移入回收站」
回收站 / 归档面板 侧栏面板栏 → 回收站 图标;或右键 → 查看归档会话(直接落在归档页签)
容量统计 面板顶部:回收站 / 归档 / 活动会话的条数与磁盘占用
批量操作 回收站:全选、恢复、彻底删除、清理已过期;归档:取消归档、移入回收站
不可撤销操作 彻底删除(单个或批量)、清空回收站均弹确认框

回收站页还支持改保留天数、单行恢复 / 彻底删除;归档页列出仍存在于磁盘上的归档会话,可取消归档或移入回收站(归档本身不会自动删,只有进入回收站后才受保留天数约束)。

自动清理

插件启动约 10 秒后扫描一次过期条目,之后每小时扫描一次。保留天数写在 ~/.dsh/session-trash/settings.json(默认示例为 30 天);0 表示永不自动删除,可在面板直接修改。

Agent 工具(10 个)

工具 作用
session_trash_list 列出回收站条目及占用、归档统计
session_trash_delete 移入回收站
session_trash_restore 恢复
session_trash_purge / session_trash_purge_many 彻底删除
session_trash_empty 清空回收站
session_trash_settings 读/写保留天数
session_trash_archive_list 列出归档会话及占用
session_trash_archive_delete / session_trash_archive_restore 归档 → 回收站 / 取消归档

典型自检:安装后删一条会话,对 agent 说「列出回收站」,应触发 session_trash_list;侧栏同时出现回收站图标即表示 Host 与客户端均已加载。

工作原理(简要)

DSH 会话目录形如:

~/.dsh/sessions/--<编码后的工作区路径>--/session-<uuid>/session.v4.jsonl.zstd

删除分两步:先 archiveSession 让侧栏立刻隐藏并阻断 agent 再写该会话;再把整个会话目录 rename 到 ~/.dsh/session-trash/items/<id>/session,并写入 meta.json(标题、原工作区、删除与过期时间、占用)。任一步失败会回滚归档状态。恢复即搬回原路径并 unarchiveSession;彻底删除为 rm -rf 并从归档集合移除 id。

Web 客户端统一 POST /api/session-trash,body 带 action 字段(如 list、panel、delete、restore、purge-expired、archive-list 等);panel 一次返回面板所需的列表、统计与设置。

安装与启用

插件以当前 DSH 进程权限读写 ~/.dsh 下文件,安装前应自行查看源码与 MIT 许可证。

从 GitHub / 插件市场

dsh plugin --profile web add github:<owner>/dsh-session-trash

将 <owner> 换为仓库所有者(本插件为 zhaoqianguo)。发布到市场后,卡片上的安装按钮与上述命令等价。

本地目录(开发)

  1. 侧栏 插件 → + → 安装第三方插件。
  2. 填写插件目录的绝对路径(管理器会以 link: 依赖链入 profile)。
  3. 重启 DSH(Host 路由、定时器与客户端 bundle 均需重启后生效)。

重启后:面板栏多回收站图标;会话右键多出「查看归档会话」「删除会话」。

卸载:在插件页移除本插件并重启;不会自动删除 ~/.dsh/session-trash 数据。若要清盘,退出 DSH 后执行 rm -rf ~/.dsh/session-trash。

典型用法

  1. 清理试错会话:右键 删除会话 → 打开回收站确认 → 过期前可随时 恢复。
  2. 收拾历史归档:打开归档页签 → 选中不再需要的会话 → 移入回收站 → 到期自动清理或手动 彻底删除。
  3. 让 agent 代劳:例如「把某 session id 移入回收站」「清空已过期条目」「把保留天数改成 7」——对应上表工具名。

适用场景与注意

适合需要频繁开新会话、又希望误删可救、并能一眼看到回收站 / 归档 / 活动会话占用的 DSH 用户。

README 记载的边界包括:

  • 恢复后侧栏会话行可能需刷新页面(⌘R / Ctrl+R)。
  • 仍有活动工作的会话无法删除,需先停止任务。
  • 面板统计为实时扫盘,会话量极大时打开面板可能略慢。
  • 只回收 sessions 下日志;session_projcache 标题缓存与 attachments 附件不随会话一并搬走。
  • 正在查看的会话被删后,界面可能仍显示内存中的内容,切换会话或刷新即可;数据在回收站可恢复。

Node 引擎要求 >=18.18(见 package.json)。插件自测可在仓库内执行 cd session-trash && npm test(25 个用例),无需安装进 DSH。

结尾

dsh-session-trash 把 DSH 会话从「归档仅藏 id、文件仍在盘上」推进到可管理的回收站模型,并统一归档会话的操作入口与容量视图。进一步了解实现细节与发布说明见仓库 README;安装入口见 SkillHub 目录 与 GitHub。

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

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

Xiaoye