dsh-manage-deletion: DSH Session Deletion and Recycle Bin

前言

在 DeepSeek Harness(DSH)里长期跑智能体会积累大量会话。宿主默认提供归档或手工删目录的方式,但「删会话」和「删会话在工作区里写过的文件」往往要分开处理,误删也难按时间批量找回。插件 dsh-manage-deletion(维护者 ingk888766-cloud,分类 admin-security)把删除、可选文件范围、回收站还原和多选批量合成一套流程;正在执行的会话会被拒绝,避免打断活动回合。

这是什么

dsh-manage-deletion 是 DSH 的会话删除管理插件:删会话时可选择是否一并移走该会话在工作目录内通过 write / edit 产生过的文件;删除默认进插件回收站,可按删除时间单条或批量还原;支持侧栏扫描、行内垃圾桶与多选批量。实现上数据只走宿主服务(sessionPersistence、sessions、workspaceRegistry 等),不直接解析宿主内部文件结构;运行时无额外 npm 依赖(Node 内置模块 + React)。当前包版本 1.3.5,许可证 MIT。

核心功能

入口与操作方式

  • 侧栏 「删除管理」 页:快速扫描、勾选、批量删除。
  • 会话行右侧 垃圾桶:删单个会话。
  • 工作区顶部 「多选」:勾会话或全选后「删除选中」。

删除范围

  • 默认:会话日志目录移入 $DSH_HOME/manage-deletion/trash/<条目>/session,并写入 index.json;DSH 侧栏中该会话消失。
  • 可选「同时删除这些会话产生的文件」:仅收集该会话自己写/编过、且路径落在该会话工作目录(cwd)内的文件;确认对话框会逐条列出,可取消勾选。恢复时会话与勾选过的文件一并还原。不在 cwd 内的路径一律忽略,工作区里其他文件不会被动到。

回收站与彻底删除

回收站按删除时间列出条目,支持单条或批量「恢复选中」。回收站内的 彻底删除 会物理删除日志与工作区副本,需二次确认,不可恢复。

拒绝与安全边界

  • 正在跑(有活动回合)的会话:拒绝删除,不动其文件。
  • 打开但空闲的会话可以删。
  • 置顶会话可先删:删除前会自动取消置顶。
  • 删除前会调用宿主 workspaceRegistry.archiveSession() 归档,再移动日志;移动失败会回滚归档,避免「侧栏看不见但数据仍在」的残留状态。
  • 同一时刻只允许一个删除/恢复操作(并发保护)。

扫描与列表性能

会话数量多时,扫描结果缓存 60 秒,首屏默认 50 行(可通过配置调整 listLimit 等)。

安装与启用

  1. 安装插件(命令来自官方 README):
dsh plugin --profile desktop add dsh-manage-deletion

也可在 DSH 插件市场安装等价包名 dsh-manage-deletion。

  1. 重启 DSH:Web 端重启服务并刷新页面;Desktop 退出后重新打开。侧栏会出现 「删除管理」。

环境与兼容(见仓库 package.json):

  • DSH:>=0.2.0-rc.2 <0.3.0(在 0.2.2-rc.1 上开发与实测)
  • Node:>=22.19
  • profile:web、desktop

典型用法

30 秒上手(界面)

  1. 删单个:鼠标移到会话行 → 点右侧垃圾桶 → 确认框点「删除」。
  2. 批量:工作区顶部「多选」→ 勾选会话(或「全选」)→「删除选中」。
  3. 扫全部:侧栏「删除管理」→「快速扫描」→ 勾选 →「删除选中」。
  4. 误删恢复:删除管理 →「回收站」→ 勾选 →「恢复选中」。

composition 配置(可选)

插件不导出 schemastery schema;在 composition 条目里为 manage-deletion 增加 config,例如控制空会话判定、批量上限、回收站目录等:

- id: manage-deletion
  name: 'dsh-manage-deletion'
  config:
    blankMaxBytes: 1200     # 扫描时的空会话上限
    tinyMaxBytes: 20480     # 很小且很久没动
    oldDays: 30
    threshold: 20
    includeSubagents: true
    titleResolveLimit: 200  # 一次扫描最多折叠多少个标题
    listLimit: 1000
    maxBatch: 50            # 单次删除上限
    trashDir: ''            # 空 = $DSH_HOME/manage-deletion/trash

Agent 工具

智能体可通过宿主暴露的工具做只读扫描或经确认的清理:

工具 作用
manage_deletion_scan 只读扫描:统计、候选(含判定依据)、回收站状态
manage_deletion_clean mode=archive / unarchive / trash;trash 可带 deleteFiles、deleteExtraFiles;必须 confirm=true
manage_deletion_trash action=list / restore / purge

示例意图:「扫一下空会话和子代理残留」→ manage_deletion_scan;「把前 10 个删掉」→ manage_deletion_clean(mode=trash, confirm=true)。

适用场景与注意

适合:需要定期清理空会话、旧会话或子代理残留;希望删除前有清单、删除后有回收站;要在界面与 Agent 工具两条路径上统一语义的团队或个人。

务必注意:

  • 插件以当前 DSH 进程的权限读写会话目录与工作区文件;安装前请阅读源码与 MIT 许可证,确认是否符合你的安全策略(分类为 admin-security 即与此相关)。
  • 「同时删除产生的文件」有 cwd 硬边界,不会删工作区根目录下与会话无关的文件;彻底删除不可恢复。
  • DSH 生态遵循「一切皆插件」;社区目录(如 SkillHub)为独立站点,与 DeepSeek / 幻方无官方从属关系,本文安装与能力描述均以仓库 README 与 package.json 为准。

延伸阅读

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

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

Xiaoye