前言¶
在 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 包名安装。
典型用法¶
- 安装并重启 DSH,打开 设置 → 会话清理。
- 按工作区展开,用搜索框定位旧会话或路径。
- 勾选要删的会话(或 Shift 连选),确认对话框后执行删除。
- 若提示运行中会话或
needRestart,按界面说明关闭保护或安排重启。 - 在 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 安装,记得首次重启与「保护运行中会话」默认行为。