Session Cleaner:侧栏永久删会话与全局归档开关

前言

在 DeepSeek Harness(DSH)里长期跑智能体,侧栏会话会不断累积:试过的分支、已归档的旧对话、占磁盘的会话日志。内置能力可以归档会话,但要从列表里彻底清掉一条记录(含磁盘上的日志与投影缓存),或一次性控制「所有工作区里归档会话是否显示」,往往要逐个菜单操作,或手动删目录。Session Cleaner 是挂在 Web 侧栏上的客户端插件,由维护者 gcggcg 发布,在会话行菜单里提供不可撤销的删除,并在侧栏用单个开关统一显示或隐藏全部已归档会话。

这是什么

Session Cleaner(npm 包名 @estelle-ge/dsh-plugin-session-cleaner,GitHub 仓库 gcggcg/dsh-plugin-session-cleaner)面向 DSH Web 侧栏:从任意会话行的 ... 菜单永久删除该会话,并通过侧栏全局开关一键显示或隐藏所有工作区(含「未分组」)下的已归档会话。分类上属于客户端插件;Host 端注册删除 API,浏览器端注入菜单与开关 UI。当前 package 版本为 0.2.0,许可证 MIT;要求 DSH 版本 >=0.2.1-rc.3 且 <0.3.0-0。

删除会话

侧栏中任意会话行 → ... → 删除会话(红色危险项)。二次确认后,Host 会按顺序处理:

  1. 若该会话正在运行,先停止其 Agent(最多等待 8 秒;超时则拒绝删除,不改动任何内容);
  2. 从工作区归属、置顶集合、归档集合中移除该会话;
  3. 删除 $DSH_HOME/sessions/<project>/<session-id>/ 下的会话日志目录;
  4. 删除投影缓存 $DSH_HOME/storages/session_projcache/sessions/<session-id>.json(以及存在时的派生搜索索引);
  5. 通知已连接的浏览器移除侧栏对应行。

删除不可撤销。DSH 曾打开过的会话(含当前主视图中的会话)也可直接删除,无需重启应用;删除当前会话后客户端会自动新建空会话。会话 ID 支持 session-<uuid>、旧版 sess_<uuid> 与子代理裸 <uuid> 等 DSH 形态。

删除经 Host 受认证路由 POST /api/session-cleaner/delete 完成,使用官方 slot sidebar.workspaces.session.menu.item(order: 500,danger)。

全局显示 / 隐藏归档会话

侧栏面板列表里、「自动化任务」下方有一行 归档会话 开关(胶囊形 button[role="switch"]),默认关闭(隐藏全部归档会话)。点一次即切换:打开则所有工作区的已归档会话一次性全部显示;关闭则一次性全部隐藏,无需在每个工作区的 ... 里逐个切换。

可见性保存在浏览器 localStorage,键名为 dsh.session-cleaner.archived-visible:'1' 表示显示,'0' 或缺省表示隐藏;刷新或重启后仍有效。插件关闭开关时,即使用户把内置筛选切到「全部对话(显示已归档)」,也会拉回「隐藏已归档」,以保证默认隐藏行为;要看或取消归档某条会话,需先打开侧栏归档开关。折叠的工作区分组未展开时不会渲染会话行,展开后才能看到该工作区的归档会话。

安装与启用

Desktop(推荐):DeepSeek Harness Desktop →「插件」→「添加插件」,输入 npm 包名或等价 GitHub 地址,确认后完全退出并重启应用:

@estelle-ge/dsh-plugin-session-cleaner
# 等价写法(从 GitHub 仓库安装同一个插件)
github:gcggcg/dsh-plugin-session-cleaner

插件无需单独构建;安装后 Host 入口 index.js 与浏览器 bundle client.js 会被直接加载。Desktop 的 profile 由 Electron 应用管理,CLI 的 dsh plugin --profile desktop ... 会被拒绝。

Web / TUI(CLI):

dsh plugin --profile web add @estelle-ge/dsh-plugin-session-cleaner

本地开发可用 dsh plugin --profile web add link:<本仓库绝对路径>。安装或更新后需完全退出并重启 Desktop,或刷新 Web 页面,以便浏览器端 bundle 重新加载。

开放插件市场页面:https://dshopen.org/zh/plugins/@estelle-ge/dsh-plugin-session-cleaner/ 。社区目录为独立站点,与 DeepSeek / 幻方无官方从属关系。

典型用法

清掉一条不再需要的会话:侧栏定位会话 → ... → 删除会话 → 确认。若 Agent 仍在跑且 8 秒内停不下,按提示先停止该会话工作后再删。

批量查看或处理归档:打开侧栏「归档会话」开关,各工作区归档行出现后可使用内置「取消归档」;处理完再关开关,列表恢复默认隐藏归档。

Web profile 维护环境:在对应机器上执行上面的 dsh plugin --profile web add ...,重启或刷新 Web UI 后生效。

适用场景与注意

适合需要定期清理 DSH 会话磁盘占用、或希望侧栏默认隐藏归档、偶尔一键展开全部归档的开发者。插件在 Host 侧以当前 DSH 进程权限删除目录与缓存,安装前应阅读仓库源码与 MIT 许可证,确认可接受破坏性删除行为。

已知限制(摘自上游 README):已打开但空闲的会话删除后,Host 内存中的 Session 对象可能保留到进程重启;插件开启且归档开关关闭时会接管内置归档筛选;侧栏开关注入依赖内置面板 DOM,DSH 大版本升级后可能需要插件适配。

插件以 DSH 既有服务(如 webServer、sessionPersistence、workspaceRegistry 等)实现,Host 端不引入新的运行时依赖。

链接

  • 社区目录页:https://www.skillhub.cn/plugins/gcggcg/dsh-plugin-session-cleaner
  • GitHub:https://github.com/gcggcg/dsh-plugin-session-cleaner
  • npm:https://www.npmjs.com/package/@estelle-ge/dsh-plugin-session-cleaner

Session Cleaner 把「永久删除单条会话」和「全局归档可见性」收进侧栏两处入口,适合在 Harness 日常开发中控制会话列表与本地 $DSH_HOME 占用。

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

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

小夜