dsh-session-cleanup

DSH PLUGIN会话与消息

仓库 mkt-agents/dsh-session-cleanup · npm @local/dsh-session-cleanup

会话与消息 L5 · 运行验证通过 安全审查:低风险 可信度:金 可安装插件
安装这个插件

DSH 侧边栏会话清理插件:按体积排序会话,支持归档、删除进可撤销回收站,并清理孤立投影缓存与失效归档项。

一句话选型结论

按资料字段整理

dsh-session-cleanup 是会话与消息类的 DSH 可安装插件,验证等级 L5 · 运行验证通过,安全审查为低风险,列出 5 项功能,有可直接复制的安装命令。验证通过不等于安全:插件会读写文件、执行命令或联网,装前先到仓库确认它做了什么;涉及密钥或系统权限的,建议先在隔离环境试装。

分类会话与消息 收录类型可安装插件 验证等级L5 · 运行验证通过 安全审查低风险
验证等级 L5 L5 · 运行验证通过
GitHub 星标 1 复刻 0 · 未关闭 issue 0
最近更新 2026-11-11 创建于 2026-11-10
README 12.7 KB 正文体量,越大说明说明书写得越细

安装

可安装插件
在 DSH 里执行,装完用 dsh plugin list 确认已挂上;标了 L4 / L5 的命令已在沙盒里真实跑通
dsh plugin --profile web add github:mkt-agents/dsh-session-cleanup#v1.5.1
  1. 1
    确认版本与运行环境

    兼容的 DSH 版本为 0.2.2-rc.1,Node.js 要求 >=22;版本不匹配时安装会报错。

  2. 2
    执行安装命令

    在 DSH 里执行上面的命令;多包仓库要注意区分具体子包名,别装错包。

  3. 3
    确认已挂载

    用 dsh plugin list 查看列表里是否出现这个插件,出现即挂载成功。

  4. 4
    试跑并检查权限

    加载后跑一个最小用例,确认它能正常工作;同时看它申请了哪些文件、命令或网络权限。

兼容 DSH 版本0.2.2-rc.1版本不匹配时安装会报错
Node.js 要求>=22来自仓库 package.json 的 engines 字段
前置依赖无需要同时安装的同级依赖
npm 包名@local/dsh-session-cleanup可用 npm view 查看包信息

能做什么

5 项功能
字段来自项目仓库与公开索引,中文说明由本站标注

dsh-session-cleanup:为 DeepSeek Harness 侧边栏补上会话清理能力

  • 按体积排序会话
  • 归档与取消归档
  • 可撤销删除回收站
  • 整批或单条还原
  • 清理孤立缓存与失效归档

适用场景

存储文件读写

上游标签

archivecordisdeepseek-harnessdshdsh-plugindsh-web-pluginjavascriptpluginrecycle-binsession-management

验证等级与安全审查

L5 · 运行验证通过
自动化流程结论,不是人工审核
验证等级L5 · 运行验证通过在 dsh 沙盒中完成安装与运行冒烟——装得上、跑得起来
安全审查低风险静态分析结论,未标注不代表已通过审查
仓库健康度活跃按仓库活跃度与最近更新时间给出
可信度金综合仓库活跃度与验证结果

上面的结论来自上游最近一次自动化验证(2026-11-10): 同一套检查会在插件发新版后重跑,页面显示的是最新一次的逐项结果。

逐项检查结果

L1 · 已找到 ✓ 通过
  • L1.0_DEFAULTED_FROM_L3 由 L3 推定 默认通过——L3 安装规范已通过(全库 L3 扫描策略)
L2 · 结构化 ✓ 通过
  • L2.0_DEFAULTED_FROM_L3 由 L3 推定 默认通过——L3 安装规范已通过(全库 L3 扫描策略)
L3 · 安装规范 ✓ 通过
  • L3.1_INSTALL_COMMAND_PARSED 安装命令已解析 方式:安装规范解析
  • L3.2_DSH_VERSION_DECLARED DSH 版本已声明 方式:DSH 版本声明
L4 · 安装已测 ✓ 通过
  • L4.1_INSTALL_EXECUTED_CONFINED 受限沙盒内执行安装 方式:沙盒安装执行
  • L4.2_INSTALL_SUCCESS 沙盒安装成功 方式:沙盒安装执行
  • L4.3_ARTIFACT_CONFIRMED 安装产物已确认 方式:沙盒安装执行
L5 · 运行已测 ✓ 通过
  • L5.1_INSTALL_PASSED_SANDBOXED 沙盒安装通过 方式:沙盒安装执行
  • L5.2_WEB_BOOT_READY Web 启动就绪 方式:Web 启动
  • L5.3_HTTP_SERVED HTTP 服务响应 方式:HTTP 请求
  • L5.4_PLUGIN_INVENTORY_ACTIVE 插件清单中已激活 方式:插件清单查询

风险详情

  • 结论说明 静态扫描 低;动态审计无结论(以下以静态为准)→ 总评级 低。
  • 风险计数 严重 0 / 高 0

选择建议

装之前先看这几条
按条目字段给出的判断,不替你决定用不用

值得选的地方

  • 验证等级 L5:安装和运行都在沙盒里跑通过,装完能直接用的概率高。
  • 静态安全审查为低风险,没有发现明显可疑行为。
  • 有可直接复制的安装命令,不用自己翻文档找入口。
  • 标注了兼容的 DSH 版本(0.2.2-rc.1),按版本装不容易报错。
  • 列出了 5 项功能,能直接看出它解决什么问题。

先想清楚的地方

  • 验证通过不等于安全:插件会读写文件、执行命令或联网,装前先到仓库确认它做了什么。

更适合

  • 需要在会话与消息场景里给 DSH 补能力的人。
  • 想装完就能用、不想自己排依赖的人。
  • 能接受在本地装依赖、愿意自己确认权限的人。

不太适合

  • 只使用 DSH 官方内置能力、不接受第三方插件的人。

同类对比

6 个同类
同分类里挑最接近的几条,字段以各自详情页为准
插件验证等级安全审查星标兼容版本安装命令
dsh-session-cleanup当前 L5 · 运行验证通过 低风险 1 0.2.2-rc.1 有
dsh-desktop L3 · 安装规范通过 低风险 3.0 万 未标注 无
openpets L4 · 沙盒安装通过 低风险 1,274 未标注 有
deeptide L4 · 沙盒安装通过 低风险 1,104 0.1.1-rc.2 有
jingyun-dsh L3 · 安装规范通过 低风险 1,004 未标注 有
study-mate 未做沙盒验证 未标注 856 未标注 无

仓库档案

会话与消息
字段来自项目仓库与公开索引,中文说明由本站标注
作者 / 维护方mkt-agents仓库 dsh-session-cleanup · 默认分支 main
分类会话与消息desktop
收录类型可安装插件声明了 dsh.bundle、可用 dsh plugin add 安装的条目
开发语言JavaScript仓库主语言
许可证MIT商用或二次分发前请确认条款原文
星标 / 复刻 / issue1 / 0 / 0收录时的数值,非实时
创建 / 更新2026-11-10 · 2026-11-11最后推送 2026-11-14
本站收录2026-11-11首次进入本站目录的时间

README 全文

12.7 KB
作者原文,中文版优先;只做安全转义,不改内容

dsh-session-cleanup

DSH 会话清理 — DeepSeek Harness 侧边栏插件:按体积排序会话、归档、删除进可撤销回收站、清理孤立投影缓存。





功能 · 为什么需要 · 安全模型 · 安装 · 配置 · 使用 · Host 路由 · 目录结构 · 测试 · FAQ · English


功能

  • 按体积排序的会话列表 —— 左栏按工作区导航,右栏列出该工作区会话,显示字节体积、最后更新时间、已打开/运行中徽章,一眼找出最占空间的会话。
  • 已打开的空闲会话也能删 —— 只有正在跑回合(running)的会话会被拦下并给出明确原因;已打开但空闲的会话(已打开、running: false)删除按钮可用,目录整体移入回收站,客户端同步丢弃该行。
  • 归档 / 取消归档 —— 走 workspaceRegistry.archiveSession,归档会话从活动列表移出但一个字节都不动。
  • 会话记录预览 —— 点会话标题在右栏打开只读记录:最近 12 条用户/助手文本 + 记录数、体积、更新时间,确认内容之后再归档或删除。
  • 可撤销删除 —— 删除会把会话目录和它的投影缓存文件一起 移动 到 $DSH_HOME/backups/session-cleanup-/,并写一份 manifest。没有东西被销毁。
  • 会话行右键删除 —— 侧边栏会话的「…」菜单(置顶 / 重命名 / 分叉 / 复制 ID / 在文件夹显示 / 归档)末尾多一项 删除会话,与面板走同一条可撤销路径;第一次点击要求确认,再点一次才移入回收站,成功或失败都在菜单下方给出提示。
  • 回收站勾选还原 / 永久删除 —— 每条会话可勾选,每批可全选或半选;统一用「还原所选」「永久删除所选」。按批全选等于原来的整批操作。永久删除会确认实际会话数且不可恢复,取消不发请求。清空回收站仍独立,并分开报告批次与会话数。
  • 显式 purge —— 唯一真正删除字节的操作,必须按所选会话或按单条显式请求。
  • 清空回收站 —— 一次性丢掉所有 session-cleanup-* 批次。
  • 删除后两侧同步 —— 删除成功后 Host 广播 api-session/removed,面板也刷新客户端会话列表,侧边栏不会再留一条“已经不存在的会话”。
  • 孤立缓存清理 —— 删除 session_projcache/sessions/*.json 中会话日志已不存在的文件,需二次确认(此操作不可撤销),并报告释放的字节数。
  • 失效归档清理 —— 丢掉会话日志已消失的归档/固定(archive/pin)条目。

为什么需要

DSH 没有"删除会话"这个能力。移除一个 Workspace 注册项是故意保留会话历史的,所以用户想清空间时没有出口:历史日志、投影缓存、失效的归档条目只会越积越多。

这个插件把缺失的那几个操作补上,并且坚持一条原则:删除必须可逆。真正不可逆的动作只留一个 purge,且必须显式点名。

安全模型

约束 行为
会话正在跑回合(running) 跳过,不移动 —— 这一轮还在往日志里追加事件
会话已打开但空闲(已打开) 正常删除 —— 目录整体移入回收站,并通知客户端丢弃该行
移动范围 只动 $DSH_HOME/sessions 下的内容
删除范围 只动 $DSH_HOME/backups 下的内容
部分失败 回滚已移动的条目,并丢弃半成品批次
跨卷移动 回退到 copy-then-remove(EXDEV)
跨站写入 两条路由都校验 sec-fetch-site / Origin 对 Host
请求体 上限 64 KiB;label 截断到 200 字符
路径穿越 批次名必须匹配 session-cleanup-;还原/按条清除还会校验 manifest 里的目录名,相对路径越界即拒绝
共享批次回滚 批量删除中后一条失败时,只回滚该条,不会删掉批次里已经成功的会话
manifest 损坏或写入失败 先回滚该条;若目录仍留在回收站,会扫描会话树并允许还原

安装

方式一:一条命令装 GitHub 仓库(推荐)

dsh plugin --profile web add https://github.com/mkt-agents/dsh-session-cleanup

--profile 换成你自己的 profile 名(默认 web)。命令会把它写进该 profile 的 dsh.profile.bundles,装完重启 harness,左侧栏出现「会话清理」入口。

方式二:克隆到本地再装(要改代码时用)

git clone https://github.com/mkt-agents/dsh-session-cleanup.git
dsh plugin --profile web add ./dsh-session-cleanup

方式三:作为 bundle patch 手工挂载

把插件目录放进 profile 的插件目录后,在 bundle patch 里加一段 cordis.patch.yml:

- insert:
- id: session-cleanup
name: '@local/dsh-session-cleanup'
inject: [webServer]
config: {}

配置

默认零配置:不需要任何密钥、环境变量或模型账号,装完即用。可调的只有 patch 里的两项:

键 默认 说明
inject [webServer] Host 半边需要的宿主服务;去掉就只剩 Client 半边
config {} 目前没有必填项,留空即可

运行期约定:

  • DSH_HOME 默认 %USERPROFILE%\.dsh(Windows)/ $HOME/.dsh(其他);换目录只影响会话与回收站的定位。
  • 回收站目录:$DSH_HOME/backups/session-cleanup-/,同级 manifest.json 记录批次、会话 id、cwd 分组、标题、体积和删除时间。
  • Host 路由只在同源下可用(/dsh-session-cleanup/state、/dsh-session-cleanup/preview、/dsh-session-cleanup/action),不监听公网、不需要单独端口。
  • package.json 把 Client 半边声明为立即注入的 Web client,依赖 react、@deepseek-ai/dsh-client-runtime、@deepseek-ai/dsh-client-locale、@deepseek-ai/dsh-client-ui-slots。

使用

  1. 打开 Web 界面,左侧栏出现 会话清理 入口。
  2. 面板是左导航 + 右列表:左栏按工作区切换(含 未分组、已归档、回收站、孤立缓存 四个固定入口),右栏只显示当前工作区的会话,可按体积 / 更新时间 / 标题排序,支持搜索标题、id、路径。
  3. 勾选会话后:
    - 归档 —— 移出活动列表,字节不动。
    - 删除 —— 二次确认后移入回收站,可在回收站勾选后还原或永久删除。侧栏菜单删除同样要确认后再移入回收站。
    - 点标题(不是勾选框)打开记录预览,只看不选;预览里也能归档/取消归档/删除。
    - 切换左侧工作区或固定入口会清空勾选,避免对看不见的会话做批量操作;同一视图里的搜索筛选会保留勾选,并提示有多少项被滤出。
  4. 回收站可勾选会话或按批全选,用 还原所选 / 永久删除所选(无选择时禁用;永久删除先确认实际会话数,取消零请求)。按条还原/清除仍然可用。清空回收站 独立保留,并分开报告批次与会话数。切换视图会清空回收站勾选。
  5. 清理类操作各归其位:失效归档 在「已归档」页,孤立缓存 在「孤立缓存」页(会报告释放字节)。

Host 路由

仅同源。

方法 路径 用途
GET /dsh-session-cleanup/state workspaces、归档/固定集合、会话、回收站、统计
GET /dsh-session-cleanup/preview 只读会话记录预览(?id=)
POST /dsh-session-cleanup/action archive | unarchive | delete | restore | purge | pruneArchived | pruneOrphanCache | emptyTrash

action 接受 { op, sessionIds?, batch?, labels? }。restore 和 purge 必须带 batch;sessionIds 为空表示作用于整批。一次删除动作 = 一个回收站批次,所以批量删除可以作为一个整体撤销。

目录结构

index.js             Host 半边:路由、回收站批次、孤立缓存扫描(1516 行)
client.js            Client 半边:main 面板 + sidebar 入口(2593 行)
cordis.patch.yml     bundle patch
locale/{en,zh}.json  插件元数据字符串
icon.svg             侧边栏图标
test/host.test.mjs            Host 路由测试(92 条断言,含 R1–R7 回归)
test/client.test.mjs          Client 渲染测试(144 条断言,含 R4 与回收站勾选及作用域防护)
test/independent-host.mjs     独立 Host 复现集(53 条断言,原样保留)
test/independent-client.mjs   独立 Client 复现集(14 条断言,原样保留)

测试

npm test
npm run test:independent

官方套件与独立复现集都跑在纯 Node 上,零依赖:Host 套件用临时 DSH_HOME 驱动真实路由处理函数,Client 套件用极简 hook 运行时执行组件树。故障注入钩子仅在 DSHSC_TEST_HOOKS=1 时生效。独立 67 条断言未改期望、未跳过。

92/92 passed    official host
144/144 passed  official client
53/53 passed    independent host
14/14 passed    independent client

FAQ

删除的会话去哪了?
$DSH_HOME/backups/session-cleanup-/,同目录下 manifest.json 记录批次、会话 id、cwd 分组、标题、体积和删除时间。

为什么有些会话删不掉?
只有正在跑回合(running)的会话删不掉:那一轮还在往日志里追加事件。先停止该回合再删。已打开但空闲(已打开、running: false)的会话可以直接删除,目录会整体移入回收站。

回收站会占空间吗?
会,而且和原来一样大 —— 这是可撤销的代价。确认无误后 purge 或清空回收站。

能用在非 Web 端吗?
不能。Client 半边注册在 main 与 sidebar.panellist 两个 Web slot 上。

插件 id 能改吗?
能。@local/dsh-session-cleanup 是本地占位,发布到 npm 时换成你自己的 scope,同时改 cordis.patch.yml 里的 name。

English

A DeepSeek Harness (DSH) Web plugin that adds a session cleanup panel to the sidebar: list sessions by size, archive them, delete them into an undoable recycle bin, and clear orphaned projection cache.

Installation (English)

dsh plugin --profile web add https://github.com/mkt-agents/dsh-session-cleanup

Restart the harness afterwards — a Session Cleanup entry shows up in the sidebar. Pick your own profile name if it is not web. No API key, no environment variable, no extra configuration.

DSH has no session-delete capability (removing a Workspace registration deliberately leaves session histories in place). This plugin owns the missing operations.

  • Size-sorted list — sessions grouped by workspace with byte size, last-updated time, and an open/running badge.
  • Archive / unarchive — delegates to workspaceRegistry.archiveSession; archived sessions leave the active list without touching bytes.
  • Reversible delete — the session directory and its projection-cache file are moved into $DSH_HOME/backups/session-cleanup-/ with a manifest. Nothing is destroyed.
  • Restore per batch or per session — undo a whole delete action, or bring back a single session of it.
  • Explicit purge — the only operation that removes bytes, requested per batch or per session.
  • Orphan cache cleanup — remove session_projcache/sessions/*.json whose session log is gone, reporting freed bytes.
  • Stale archive pruning — drop archive/pin entries whose session log no longer exists.

Safety: only a session with a turn in flight owns its log writer, so only that one is skipped. An attached-but-idle session is moved like any other, and the Host is told the row is gone. Nothing outside $DSH_HOME/sessions is ever moved; nothing outside $DSH_HOME/backups is ever removed. Moves are rollback-safe, cross-volume moves fall back to copy-then-remove, and both routes reject cross-site writes.

License

MIT

常见问题

9 问
答案由本站依据条目字段整理,不引用上游原文
dsh-session-cleanup 怎么安装?

在 DSH 里执行 `dsh plugin --profile web add github:mkt-agents/dsh-session-cleanup#v1.5.1` 即可。对应的 npm 包名是 `@local/dsh-session-cleanup`。

dsh-session-cleanup 的验证等级是什么意思?

L5 · 运行验证通过。在 dsh 沙盒中完成安装与运行冒烟——装得上、跑得起来

dsh-session-cleanup 安全吗?

低风险。静态扫描 低;动态审计无结论(以下以静态为准)→ 总评级 低。

dsh-session-cleanup 装之前要先确认什么?

先看它会读写哪些文件、执行哪些命令、连接哪些网络地址;验证等级只说明装得上、跑得起来,不等于安全。涉及密钥或系统权限的,建议先在隔离环境试装。

dsh-session-cleanup 支持哪些 DSH 版本?

上游记录的兼容版本包括 0.2.2-rc.1。

dsh-session-cleanup 需要什么运行环境?

Node.js >=22。环境不满足时安装会失败,建议先确认本机版本。

dsh-session-cleanup 用的是什么许可证?

上游标注为 MIT。商用或二次分发前请到仓库确认许可证原文。

dsh-session-cleanup 有哪些功能?

按体积排序会话、归档与取消归档、可撤销删除回收站、整批或单条还原、清理孤立缓存与失效归档。

这条记录的数据可靠吗?

本站按仓库名去重后合并整理,字段以作者仓库与 npm 元数据为准;安装命令、仓库地址与 README 保持原文,带 L4 / L5 标记的安装命令已在隔离沙盒里真实跑通。

同名或近似条目

6 条
不同作者的仓库分开列,请确认你要装的是哪一个
会话与消息
按星标排序,可作替代方案

dsh-desktop

dsh-desktop

为 DeepSeek Harness (DSH) 插件生态打造的现代化桌面端解决方案。万物皆「插件」,桌面本身也是「插件」。

L3 · 安装规范通过 3.0 万 星

openpets

openpets

L4 · 沙盒安装通过 1,274 星

deeptide

deeptide

L4 · 沙盒安装通过 1,104 星

jingyun-dsh

jingyun-dsh

井云 DSH 客户端插件,为 DeepSeek Harness 注入会员登录、订阅支付、算力管控与应用市场,让智能体和技能快速变成可交易商品

L3 · 安装规范通过 1,004 星

study-mate

study-mate

StudyMate 是 DSH 的「学习模式」预设与技能包,为数学、计算机科目定制学习路线、讲解课件与练习评估,跨科目共享记忆。

未标注验证等级 856 星

插件的元信息来自作者仓库;分类、验证等级与安全结论的中文说明为中文整理,最近核验 2026-11-10。