dsh-session-trash:为 DeepSeek Harness 补上可恢复的会话删除

前言

在 DeepSeek Harness(DSH)里长期跑智能体,侧栏会话会越积越多。官方提供的是归档(archive):会话从列表里藏起来,数据仍在磁盘上,且没有「删掉」这条路径。想清理列表、误操作想反悔,或希望过一段时间再彻底释放空间,单靠归档往往不够顺手。

社区插件 @lazyra/dsh-session-trash(维护者 LazyRa,SkillHub 分类为「记忆」)把「删除」做成移入回收站:默认保留 7 天可恢复,到期自动清理。下文介绍它的定位、能力、安装方式与使用要点;事实均来自项目 README 与 package.json。

这是什么

一句话:为 DSH 增加可恢复的会话删除——删除时把会话目录移动到 <DSH_HOME>/trash/,而不是直接抹掉;侧栏提供回收站页面,支持恢复与彻底删除。

核心功能

下面能力均在 README 中写明,安装验证说明插件从 npm 安装后删除、撤销、回收站均可正常使用。

能力 说明
删除即入回收站 会话目录被移动(rename)到 trash/,不就地删改会话文件
6 秒内撤销 删除后顶部提示条可一键恢复,无需先打开回收站
7 天保留期 期内可随时恢复;启动时扫描一次,之后默认每 6 小时清理过期条目
回收站页面 侧栏「回收站」:搜索标题/路径、按删除时间/大小/名称排序、显示占用
完整恢复 回到原工作区与原位置,标题、排序、置顶等状态一并处理
界面即时刷新 通过 DSH 事件链路(如 api-session/removed / api-session/added),删完侧栏立即更新
快捷键 Ctrl/Cmd + Shift + Delete 删除当前打开的会话
运行中保护 会话仍在跑时会先询问,避免静默打断
中英双语 跟随 DSH 语言设置

与归档的对比(README 表述):归档是藏起来且可反悔;本插件提供明确的「删除 → 回收站 → 恢复或彻底删除」路径,并配合自动过期清理。

附件:attachments/v1/objects/ 为内容寻址存储,多会话可能共用同一对象,删除会话不会删除附件,以免破坏其他会话历史。

安装与启用

插件已发布到 npm,README 给出三种方式;装好后需重启 DSH,侧栏应出现「回收站」。

方式一:插件管理器(推荐)

  1. 侧栏打开 插件
  2. 添加插件
  3. 输入 @lazyra/dsh-session-trash
  4. 安装 → 启用 → 重启 DSH

方式二:命令行

dsh plugin --profile desktop add @lazyra/dsh-session-trash

方式三:从本地目录安装

README 说明可先取得源码目录,再执行(路径换成你的实际路径):

dsh plugin --profile desktop add /path/to/dsh-session-trash

若侧栏没有「回收站」,检查插件是否已启用并已重启。

典型用法

删除会话

侧栏会话行悬停 → ⋯ → 删除会话。删除后可用顶部提示条在约 6 秒内撤销。

管理回收站

侧栏进入 回收站:

  • 恢复:会话回到原工作区与原位置
  • 彻底删除:永久删除,不可撤销(有二次确认)
  • 全部删除:清空回收站
  • 搜索 / 排序 / 刷新:按标题或路径过滤,按删除时间、大小或名称排序

快捷键

快捷键 功能
Ctrl/Cmd + Shift + Delete 删除当前打开的会话

配置

在 profile 的 cordis.patch.yml 中为插件增加 config:

- id: dsh-session-trash
  name: "@lazyra/dsh-session-trash"
  config:
    retentionDays: 7          # 会话保留天数,默认 7
    sweepIntervalMs: 21600000 # 自动清理间隔(毫秒),默认 6 小时
    home: null                # DSH home 路径,默认读 $DSH_HOME 或 ~/.dsh
配置项 类型 默认值 说明
retentionDays number 7 回收站保留天数,到期后自动彻底删除
sweepIntervalMs number 21600000 过期扫描间隔,最小 60000 毫秒
home string \| null null DSH home,留空则自动推断

工作原理(摘要)

删除时除移动 sessions/<projectKey>/<sessionId>/ 外,还需同步 storages/workspace.json(从成员/归档/置顶集合移除)和 storages/session_projcache/(一并进回收站),否则会出现侧栏「幽灵会话」或恢复后标题丢失。回收站条目目录内含 meta.json(原位置、标题、删除时间)与会话本体等文件。

HTTP API 挂在 /api/dsh-session-trash/ 下,均为精确路由,例如 POST list、move、restore、purge、purge-all、sweep 等(详见 README「HTTP 接口」一节)。

适用场景与注意

适合谁:侧栏会话需要定期清理、希望误删可恢复、又希望在保留期后自动释放磁盘的用户。

权限与安全:插件以当前 DSH 进程权限读写本机 <DSH_HOME>;安装前建议阅读源码与 MIT 许可证,确认符合你的环境策略。SkillHub 为社区插件目录,与 DeepSeek / 幻方无官方从属关系。

已知限制(README):

  • projectKey 路径编码在 DSH 侧存在既有行为,插件通过记录原始 key 规避恢复错位
  • 会话日志格式会探测 session.v<N>.jsonl.zstd,若 DSH 引入全新存储结构可能需要插件更新
  • 主要在桌面端验证,Web 端理论可用但未充分测试

结尾

dsh-session-trash 在 DSH「一切皆插件」的生态里,补上了官方归档之外的可恢复删除与回收站管理,默认 7 天保留、定时清扫,并尽量与侧栏状态同步。需要进一步了解或安装,可访问 SkillHub 目录页 与 GitHub 仓库。

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

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

小夜