前言¶
在 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)。发布到市场后,卡片上的安装按钮与上述命令等价。
本地目录(开发)¶
- 侧栏 插件 → + → 安装第三方插件。
- 填写插件目录的绝对路径(管理器会以
link:依赖链入 profile)。 - 重启 DSH(Host 路由、定时器与客户端 bundle 均需重启后生效)。
重启后:面板栏多回收站图标;会话右键多出「查看归档会话」「删除会话」。
卸载:在插件页移除本插件并重启;不会自动删除 ~/.dsh/session-trash 数据。若要清盘,退出 DSH 后执行 rm -rf ~/.dsh/session-trash。
典型用法¶
- 清理试错会话:右键 删除会话 → 打开回收站确认 → 过期前可随时 恢复。
- 收拾历史归档:打开归档页签 → 选中不再需要的会话 → 移入回收站 → 到期自动清理或手动 彻底删除。
- 让 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。