dsh-session-cleanup
DSH 会话/归档清理插件:在 设置 面板里新增两个页面,用于查看并清理 DSH 的 残留会话与归档会话。
功能
设置 → Sessions清理
- 刷新Sessions:拉取当前快照
- 当前Sessions:内存中正在运行的会话(仅展示,无操作按钮),显示 会话 ID / 日期 / 摘要(标题 + 首条用户消息摘录)
- 残留Sessions:已持久化到磁盘、但当前没有打开的旧会话,每行带 删除 按钮
设置 → 归档清理
- 刷新归档:拉取归档集合快照
- 所有归档:显示 ID / 摘要内容 / 日期
- 每行 删除 按钮 + 一键删除 (N)
- 运行中的会话显示"运行中"徽标,不允许删除
所有删除操作都需要二次确认:第一次点击后按钮变为"再次点击确认删除", 旁边出现"取消",第二次点击才真正执行。
删除时发生了什么
1. 拒绝删除正在运行的会话(受保护) 2. 删除会话的持久化日志文件/目录(路径由 sessionPersistence.locate() 决定, 客户端只能提交会话 ID,不能提交任意路径) 3. 把该会话从所属 workspace 的 sessionIds 中移除(detachSession,持久化写入) 4. 如果它在归档集合里,同步从 archivedSessionIds 中移除(直接写 workspace 存储域,并同步注册表缓存,防止之后的归档操作把已删除的 ID 复活)
删除不可恢复,请谨慎使用。
安装
前提:已安装 DSH(dsh web 可正常运行),且 pnpm 在 PATH 上(dsh plugin 依赖 pnpm)。
# 1. 解压 zip,得到 dsh-session-cleanup 文件夹(假设在 D:\plugins\dsh-session-cleanup)
# 2. 安装到 web profile(file: 形式;相对路径会自动锚定到当前目录)
dsh plugin --profile web add file:D:/plugins/dsh-session-cleanup
# 或 cd 到解压目录的上一级:
dsh plugin --profile web add ./dsh-session-cleanupdsh plugin add 会转发给 pnpm 安装,并自动把 @dsh-external/dsh-session-cleanup 加入该 profile 的 dsh.profile.bundles 层(无需手改 cordis.yml)。
# 3. 重启 dsh web
# 4. 打开 设置 → Sessions清理 / 归档清理卸载
dsh plugin --profile web remove @dsh-external/dsh-session-cleanup
# 然后重启 dsh web关于权限
- 插件在 Host 侧以普通插件身份运行,删除用的是 Node
fs.rm,只作用于
sessionPersistence.locate() 返回的路径。
- 删除 API(
POST /_dsh/session-cleanup/api)校验同源请求,跨站请求会被拒绝。 - 该插件不参与 DSH 的沙箱策略:删除是由使用者在设置页显式触发的管理操作,
与模型工具调用无关。
兼容性
- 依赖 DSH 主机组合提供:
sessions、sessionPersistence、workspaceRegistry、
storageDomain、webServer(可选)服务,以及客户端 slots 服务。
- 会话存储后端需要支持
locate()(JSONL 后端支持;SQLite 等无独立文件的回退为
"跳过文件删除,仅清理登记信息")。
- 无任何第三方 npm 依赖,安装即用。