dsh-session-cleanup-pro:为 DSH 补上按工作区批量删除会话

前言

在 DeepSeek Harness(DSH)里长期跑 Agent、多工作区切换时,会话会不断落在 $DSH_HOME:日志、投影缓存、工作区登记都会累积。若宿主侧没有完整的「删会话」入口,只能手动找目录或忍受列表越来越长。社区维护的 dsh-session-cleanup-pro(维护者 gcluffy,SkillHub 分类:记忆)在 设置 → 会话清理 提供按工作区分级浏览、搜索、多选与批量删除,并给 Agent 暴露三个清理工具;删除范围覆盖会话产物与登记,冷会话删除后界面可即时更新。本文介绍其定位、能力与安装用法,事实以 GitHub 仓库 README 为准。

这是什么

dsh-session-cleanup-pro 是 DSH 社区插件(MIT 许可证,与 DeepSeek 官方无隶属关系)。一句话:在设置页按工作区分级列出全部会话,支持搜索、单选/多选、批量删除;删除是「真删」——会话日志目录、投影缓存、工作区登记一并处理,并在合适条件下向已连接客户端推送移除事件。当前版本 0.2.0,要求 DSH ≥ 0.2.1-rc.1(package.json 的 engines.dsh)。

核心功能

设置页:会话清理

安装并重启后,在 设置 → 会话清理 使用(package.json 中设置分区标题为「会话清理」)。

  • 按工作区分组,可折叠;组头显示会话数与占用体积。
  • 搜索会话名称、路径或 id。
  • 单选、多选(点击整行切换,Shift 连选)、全选本组 / 全选 / 清空。
  • 每行可展开:完整 id、目录、创建时间、累计 token、轮次。
  • 删除前确认框列出待删会话;涉及运行中会话会提示需要重启。
  • 默认开启「保护运行中的会话」,避免误删当前会话。

删除范围

目标 位置
会话日志 $DSH_HOME/sessions/<project>/<id>/(含 session.vN.jsonl.zstd 等,整个目录)
投影缓存 $DSH_HOME/storages/session_projcache/sessions/<id>.json
工作区登记 优先走宿主 workspaceRegistry(detachSession / unarchiveSession / unpinSession);无该服务时退回直接改 workspace.json

登记经宿主 API 时,删除完成后插件会让宿主广播 api-session/removed,已连接客户端可从会话列表移除对应项,冷会话一般无需刷新页面。

删除后是否要重启

情况 表现
删的是冷会话(不在内存里) 登记、文件与推送完成后,界面可即时更新
删的是运行中会话 列表行会先消失,但宿主 SessionStore 仍持有实例 → 需 重启 DeepSeek Harness 彻底释放

是否支持即时更新,可看 GET /dsh-session-cleanup-pro-4c1d/health 返回的 features 是否包含 host-registry 与 emit-removed。

Agent 工具

对话中 Agent 可调用:

工具 作用
session_delete_list 分级列出全部工作区与会话(名称 / 大小 / 时间 / 状态)
session_delete_scan 仅统计:总数、运行中数量、各工作区占用
session_delete_remove 批量删除;结果中 needRestart 为真时需提醒用户重启

HTTP 接口(设置页后端)

GET  /dsh-session-cleanup-pro-4c1d/api/tree                   → 工作区分级树
POST /dsh-session-cleanup-pro-4c1d/api/delete { ids: [...] }  → 批量删除
GET  /dsh-session-cleanup-pro-4c1d/health                     → 探活 + features

安装与启用

方式一:应用内插件管理器(推荐,桌面端 / Web)

设置 → 插件 → 添加插件(Add plugin),粘贴仓库地址:

https://github.com/gcluffy/dsh-session-cleanup-pro

装完后 重启一次 DSH(首次安装宿主半侧需要重新加载),再在 设置 → 会话清理 使用。

方式二:命令行(仅纯 web profile)

dsh plugin --profile web add github:gcluffy/dsh-session-cleanup-pro

将 web 换成你实际的 profile 名。桌面端(Electron)的 profile 由应用管理,请在应用内插件管理器安装。

勿与同名 npm 项目混淆

npm 上的 dsh-session-delete 为其他作者维护,与本插件无关。本插件包名为 dsh-session-cleanup-pro;0.2.0 目前通过 GitHub 分发,不要用错误的 npm 包名安装。

典型用法

  1. 安装并重启 DSH,打开 设置 → 会话清理。
  2. 按工作区展开,用搜索框定位旧会话或路径。
  3. 勾选要删的会话(或 Shift 连选),确认对话框后执行删除。
  4. 若提示运行中会话或 needRestart,按界面说明关闭保护或安排重启。
  5. 在 Agent 对话中,可让模型先 session_delete_scan 看占用,再 session_delete_remove 批量清理(需模型具备相应工具权限)。

适用场景与注意

适合谁:需要定期清理 DSH 会话磁盘占用、整理多工作区会话列表,或在 Agent 流程里自动化扫描/删除的开发场景。

安全边界(README 说明):插件只做会话产物的读取与删除,不修改 DSH 代码、配置树或其他插件数据;工作区登记采用临时文件 + rename 原子写回,并发删除时登记写回串行化;失败会在设置页展示原因。删除不可恢复,勾选前请确认。

权限与信任:插件以当前 DSH 进程权限访问 $DSH_HOME,安装前建议阅读源码与 MIT 许可证,仅从上述官方仓库地址安装。

生态:DSH 奉行「一切皆插件」;SkillHub 目录页 与 dsh-plugin.org 为社区收录站点,非 DeepSeek / 幻方官方应用商店。

结尾

dsh-session-cleanup-pro 补的是 DSH 侧缺失的会话删除闭环:设置页分级管理、真删磁盘与登记、冷会话即时 UI 更新,以及三个 Agent 工具。需要时从目录页或 GitHub 安装,记得首次重启与「保护运行中会话」默认行为。

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

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

Xiaoye