前言¶
在 DeepSeek Harness(DSH)里长期跑 Agent,会话历史、投影缓存和归档条目会持续落在本机 $DSH_HOME 下。框架设计上移除 Workspace 注册项并不会删掉会话日志,因此没有内置的「删会话、腾磁盘」出口,空间只会慢慢堆高。
社区插件 mkt-agents/dsh-session-cleanup 在 Web 端侧边栏补上一套会话治理面板:按体积查看、归档、移入可撤销回收站,以及清理孤立缓存与失效归档。下面介绍它的定位、能力与安装用法。
这是什么¶
dsh-session-cleanup(目录名 mkt-agents/dsh-session-cleanup)是 mkt-agents 维护的 DSH Web 客户端插件,分类为客户端;在 harness 左侧栏注册「会话清理」入口,Host 半边在同源 Web 服务上提供状态与操作路由。
一句话:把 DSH 缺失的会话删除与空间清理补上,并坚持删除先移动、可还原;只有显式 purge 才真正删字节。
核心功能¶
资料中与 README 一致的能力如下。
会话列表与排序¶
- 会话按工作区分组,展示字节体积、最后更新时间,以及运行中/活跃状态。
- 支持按体积、更新时间、标题排序,并可搜索标题、会话 id、路径,便于先找最占空间的项。
归档与取消归档¶
- 调用
workspaceRegistry.archiveSession,归档后从活动列表移出,不改动磁盘上的会话字节。 - 支持取消归档,回到活动列表。
可撤销删除与回收站¶
- 删除:将会话目录及其投影缓存文件移动到
$DSH_HOME/backups/session-cleanup-<时间戳>/,并写入manifest.json;并非就地销毁。 - 还原:可按整批撤销一次删除,也可只还原其中一条会话。
- purge:唯一真正删除字节的操作,需按批次或按单条显式发起。
- 清空回收站:一次性处理所有
session-cleanup-*批次。
一次删除动作对应一个回收站批次,批量删除可作为整体撤销。
维护型清理¶
- 清理孤立缓存:删除
session_projcache/sessions/*.json中会话日志已不存在的文件,并报告释放字节。 - 清理失效归档:移除会话日志已消失的 archive/pin 条目。
安全与运行约束¶
插件以当前 DSH 进程权限读写本机目录。README 中的安全模型要点:
| 约束 | 行为 |
|---|---|
| 会话仍被 live Agent 持有 | 跳过,不移动(仍持有日志写入句柄) |
| 移动范围 | 仅 $DSH_HOME/sessions 下内容 |
| 删除范围 | 仅 $DSH_HOME/backups 下内容 |
| 部分失败 | 回滚已移动项,丢弃半成品批次 |
| Host 路由 | 仅同源;GET/POST 校验 sec-fetch-site / Origin |
安装前建议浏览 GitHub 仓库 源码与 MIT 许可证。运行要求 Node.js 22 或更高(见仓库 package.json 的 engines)。
安装与启用¶
推荐用一条命令从 GitHub 装入指定 profile(默认示例为 web):
dsh plugin --profile web add https://github.com/mkt-agents/dsh-session-cleanup
将 --profile 换成你实际使用的 profile 名。命令会把插件写入该 profile 的 dsh.profile.bundles。装完后重启 harness,左侧栏应出现「会话清理」。
默认零配置:无需 API 密钥、环境变量或模型账号。cordis.patch.yml 中通常只需 inject: [webServer] 与空的 config: {}。
DSH_HOME 默认为 Windows 下 %USERPROFILE%\.dsh、其他系统 $HOME/.dsh;回收站路径为 $DSH_HOME/backups/session-cleanup-<YYYYMMDD-HHmmss-mmm>/,同级有 manifest.json。
典型用法¶
经过上面的安装与重启,可按 README 中的步骤操作:
- 打开 DSH Web 界面,从左侧栏进入 会话清理。
- 在面板中按工作区浏览会话,用排序与搜索定位目标。
- 勾选会话后:
- 归档:移出活动列表,字节不动。
- 删除:二次确认后进入回收站;需要时用整批或单条 还原。 - 在回收站确认无误后使用 purge 或 清空回收站 释放空间。
- 使用顶部 清理失效归档、清理孤立缓存;孤立缓存清理会报告释放的字节数。
若某条会话删不掉,多半是仍被 live Agent 占用;切换到其他会话后再试。
Host 侧仅在同源下可用,例如:
| 方法 | 路径 | 用途 |
|---|---|---|
GET |
/dsh-session-cleanup/state |
工作区、归档/固定、会话、回收站与统计 |
POST |
/dsh-session-cleanup/action |
archive、unarchive、delete、restore、purge、pruneArchived、pruneOrphanCache、emptyTrash |
action 请求体形如 { op, sessionIds?, batch?, labels? };restore 与 purge 须带 batch。
适用场景与注意¶
适合谁:长期在本地 DSH Web 端积累大量会话、需要按体积治理磁盘、又希望误删可回滚的开发者。
不适合:非 Web 端 harness;Client 仅注册在 main 与 sidebar.panellist 等 Web slot。
空间预期:回收站在 purge 前仍占用与原会话相近的磁盘,这是可撤销设计的代价。
DSH 生态强调「一切皆插件」;SkillHub 目录页 与 dsh.market 列表 为社区收录,与 DeepSeek / 幻方无官方从属关系。
结尾¶
dsh-session-cleanup 补齐 DSH 会话删除与缓存/归档维护,用回收站批次与 manifest 把「删」做成可逆流程。查阅详情与 issue 请到 GitHub:mkt-agents/dsh-session-cleanup,目录介绍见 SkillHub 插件页。