dsh-session-cleanup

DSH PLUGIN安全与权限

仓库 Donglin027/dsh-session-cleanup · npm dsh-session-residue-cleanup

安全与权限 未标注验证等级 安全审查:未标注 可信度:未标注 可安装插件
安装这个插件

DSH 插件,自动清理删除会话后遗留的附件、成本账本与缓存残留,并提供手动 sweep 预览与可回滚删除。

一句话选型结论

按资料字段整理

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

分类安全与权限 收录类型可安装插件 验证等级未标注验证等级 安全审查未标注
验证等级 UNKNOWN 未标注验证等级
GitHub 星标 1 复刻 0 · 未关闭 issue 0
最近更新 2026-11-14 创建于 2026-11-12
README 11.3 KB 正文体量,越大说明说明书写得越细

安装

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

    Node.js 要求 >=20;版本不匹配时安装会报错。

  2. 2
    执行安装命令

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

  3. 3
    确认已挂载

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

  4. 4
    试跑并检查权限

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

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

能做什么

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

dsh-session-cleanup:DeepSeek Harness 会话删除后的残留清理器

  • 删会话后自动清残留
  • 手动 sweep 预览与回滚
  • 按引用计数清理附件
  • 可选清理成本账本
  • 内置技能一键调用

上游标签

cleanupcordisdeepseek-harnessdshdsh-pluginnodejspluginsession-managementskills

验证等级与安全审查

未标注验证等级
自动化流程结论,不是人工审核
验证等级未标注验证等级上游未给出验证结论,安装前请自行确认
安全审查未标注静态分析结论,未标注不代表已通过审查
仓库健康度未标注按仓库活跃度与最近更新时间给出
可信度未标注综合仓库活跃度与验证结果

选择建议

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

值得选的地方

  • 有可直接复制的安装命令,不用自己翻文档找入口。
  • 列出了 5 项功能,能直接看出它解决什么问题。

先想清楚的地方

  • 安全审查还没结论,装之前先看仓库改了什么、要什么权限。
  • 验证通过不等于安全:插件会读写文件、执行命令或联网,装前先到仓库确认它做了什么。

更适合

  • 需要在安全与权限场景里给 DSH 补能力的人。
  • 能接受在本地装依赖、愿意自己确认权限的人。

不太适合

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

同类对比

6 个同类
同分类里挑最接近的几条,字段以各自详情页为准
插件验证等级安全审查星标兼容版本安装命令
dsh-session-cleanup当前 未做沙盒验证 未标注 1 未标注 有
dsh-infinite-gen-4 未做沙盒验证 未标注 1,611 未标注 无
cc-safety-net 未做沙盒验证 未标注 1,591 未标注 无
dsh-wallpaper-engine L5 · 运行验证通过 低风险 1,018 0.2.0-rc.2 等 10 个 有
api-relay-audit L5 · 运行验证通过 低风险 875 0.2.0-rc.2 等 10 个 有
hol-guard L4 · 沙盒安装通过 不在扫描口径 828 未标注 有

仓库档案

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

README 全文

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

ds-session-cleanup — DSH 会话“删除后残留”清理器

解决一个具体问题:在 DSH 里删掉会话后,这个会话留下的附件、统计与缓存并没有全部消失。

DSH 本身没有“删除会话”,右键菜单里的「删除会话」来自已安装的社区插件
@michengai/dsh-archive-manager(本机 1.3.1)。它删除的是:

  • sessions\<工作区slug>\session-\(整目录,含 session.v4.jsonl.zstd)
  • storages\session_projcache\sessions\session-.json
  • storages\workspace.json 里的会话登记
  • %TMP%\dsh-spill-*\session-\(临时 spill)
  • 归档索引

它没有处理的(在 lib/workspace.js 里全库搜 attachment 零命中,没有任何 cost-meter 代码):

残留 位置 影响
该会话上传/粘贴的附件 attachments\v1\objects\<前2位>\ 永久占盘,且宿主没有附件 GC
会话级的成本统计行 storages\cost-meter\ledger.json 的 days[].sessions[] 统计里仍能看到已删会话
最近会话列表 storages\cost-meter\ledger.json.details-cache\recent.json 同上
明细缓存 storages\cost-meter\ledger.json.details-cache\.json 缓存里的按会话明细仍是旧的
billion-context 分片 storages\cost-meter\ledger.json.billion-context\{groups,streams,calls}\ 每个分片带 sessionId,删会话后成孤儿

实测:删掉「Pet插件出现两个大肥鱼」后,插件自身清掉约 799 KB,但留下 1 个 675.5 KB 的附件孤儿、
ledger.json 中 3 处、4 个明细缓存文件里的按会话条目、recent.json 记录,以及 billion-context 里的分片。
插件确认框写的是“将永久删除…全部记录(对话内容、统计、缓存)”,与实现不符——本工具就是补这个缺口。

安装

:: A. 从 npm 安装(推荐,走 registry,最稳)
dsh plugin --profile desktop add dsh-session-residue-cleanup

:: B. 从 GitHub Release 的 tarball 安装(Cordis 插件包,无运行时依赖;latest 永远指向最新一版)
dsh plugin --profile desktop add "https://github.com/Donglin027/dsh-session-cleanup/releases/latest/download/dsh-session-residue-cleanup.tgz"

装完重启 DSH 生效。
也可以直接用仓库装:dsh plugin --profile desktop add github:Donglin027/dsh-session-cleanup。
国内网络拉 GitHub 更容易被 reset,npm 那条通路通常更顺。

逐步说明、装完怎么验证、网络报错怎么办、配置项、升级与卸载,见 安装教程.md。

快速使用

:: 1. 预览(默认,不动任何文件)
node projects\ds-session-cleanup\bin\sweep.js

:: 2. 真删:移到 DSH_HOME\trash\session-cleanup\<时间戳>\,可回滚
node projects\ds-session-cleanup\bin\sweep.js --apply

:: 3. 连成本账本/明细一起清(会先备份再改写 JSON)
node projects\ds-session-cleanup\bin\sweep.js --apply --include-ledger

:: 4. 机器可读
node projects\ds-session-cleanup\bin\sweep.js --json

DSH_HOME 取环境变量 DSH_HOME,未设则用 ~/.dsh(Windows 为 %USERPROFILE%\.dsh)。

自动模式(插件,推荐)

装好本地插件后,在 UI 里删会话就会自动清残留,不用再手动跑命令。

  • 插件包:plugin\(本地 link 装的是 @local/dsh-session-cleanup 1.1.0,发布包名 dsh-session-residue-cleanup),监听宿主的 api-session/removed 事件
    —— archive-manager 删完会话才发这个事件,所以不会抢跑。
  • 行为:事件到达后去抖 800 ms,再调用 plugin\lib\cleanup.cjs 的 runSweep({apply:true});
    默认不动账本(includeLedger: false),需要连账本一起清就改配置。
  • 启动兜底:应用启动 3 s 后也扫一次(sweepOnStart: true),补上“删会话时应用崩了”的漏网项。
  • 配置(plugin\cordis.patch.yml 的 config):home、modulePath(可选,覆盖清理核心路径)、
    includeLedger、delayMs、sweepOnStart、dryRun。改完重启 DSH 生效。
  • 安装/升级:plugin_manager install_bundle,target 指 plugin\ 目录;装完 application=restart-required,重启 DSH 才激活。
    设置 → 插件里能看到「会话残留清理」。
  • 注意:v1.1.0 起清理核心随包分发(plugin\lib\cleanup.cjs),按 import.meta.url 解析,项目换位置不用改配置。
  • 注意:插件不导出 Config。cordis 的 Config 必须是 schemastery 的 Schema 实例(带 .validate),
    导出裸 JSON Schema 会让 fiber 直接 failed(Cannot read properties of undefined (reading 'validate'));
    配置照旧写在 cordis.patch.yml 的 config: 下,只是设置页里没有可视化表单。

技能(任意会话可用)

已装成技能:%DSH_HOME%\skills\dsh-session-cleanup\SKILL.md(技能名 dsh-session-cleanup)。
以后在任意会话里说“清一下已删会话的残留”,助手会按同一套流程走:先预览、逐项核对、再 --apply。

开关 作用
--apply 真执行;不加就是 dry-run
--permanent 跳过回收站直接删(不可恢复,慎用)
--include-ledger 一并清理 cost-meter 的账本与明细缓存
--include-stray-sessions 把“磁盘上有会话目录但没登记”的目录也移入回收站(默认只提示)
--json / --quiet / --verbose 输出控制

判定规则(安全边界)

  1. 存活 = 磁盘上还有 sessions\\session-\session.v4.jsonl.zstd。
    归档会话仍留在磁盘上,所以“归档”不会被误判为“已删”。
  2. 只承认 session-<8-4-4-4-12> 形态的 id。dsh-pet 这类非标准 id 一律不碰(避免误删 pet 插件数据)。
  3. 附件按“引用计数”判定:解压所有存活会话的日志,收集 "attachmentId":"sha256:<64hex>";
    只有没有任何存活会话引用的对象才会被清。同一对象被多条会话共用时安全。
  4. billion-context 分片只有全部记录都属于已删会话时整文件移走;混合分片不动。
  5. 明细缓存按“整文件移走让插件重算”处理:原地删条会让缓存里的合计与明细对不上。
  6. 账本只删 days[].sessions[] 里已删会话的行,不重算当天合计(byProviderModel 无法按会话归因),
    所以“总额”仍包含已删会话花掉的钱——这是有意保留的账实一致。
  7. 不碰工作区里的任何项目文件。DSH 的多条会话共用同一个工作区,工作区目录下的文件无法按会话归属,
    所以本工具只清 DSH_HOME 内的元数据与附件,不动工作区。
  8. 默认移入 DSH_HOME\trash\session-cleanup\\(保持相对路径),并写 journal.json 记录每一项。
  9. 改 JSON 前先把原文件复制进回收站;改写失败则跳过,不影响其余项。

输出示例

已存盘会话 = 4(f8917732, 38245582, 868ddfae, fdc0b02e)
登记会话 = 3,归档 0
已解码 4 份会话日志(2.95 MB),引用到 2 个附件
【孤儿附件】1 项,675.5 KB
-  675.5 KB  attachments\v1\objects\d5\d5af61f1…5d0597ed
【billion-context 已删会话分片】113 项,68.3 KB
【cost-meter 账本/明细条目】6 项,943.7 KB
合计 120 项,1.65 MB(含账本编辑)

实现要点

  • plugin/lib/session-log.cjs:DSH 会话日志是逐次追加的多帧 zstd,Node 的 zlib.zstdDecompressSync
    和流式解压都只解第一帧,必须按 zstd 帧头手工走边界逐帧解压(magic 0xFD2FB528、
    FHD 的 fcsFlag/singleSegment/checksum/dictFlag、3 字节 block header);readSessionLog() 返回
    {bytes,frames,lines,error,tail},tail>0 说明末帧不完整(会话正在写),只影响该会话的引用收集。
  • plugin/lib/cleanup.cjs:扫描与执行的核心,导出 runSweep(options)。返回结构化报告
    (findings[].items[]、totals、failures、trash),CLI 与插件共用同一份逻辑。
  • bin/sweep.js:薄 CLI(参数解析 + 打印),直接 require('../plugin/lib/cleanup.cjs');支持
    --home 覆盖 DSH 主目录,默认取 DSH_HOME 环境变量、否则 ~/.dsh。
  • lib/cleanup.js、lib/session-log.js:兼容层,只做转发,避免两份实现。
  • plugin/:宿主插件包(ESM + cordis.patch.yml + locale + icon + lib/*.cjs 核心),自包含:
    核心随包分发,插件按自身位置解析,不含任何绝对路径,可整体拷到别的机器。
  • 包内文件是 .cjs 的原因:插件包 package.json 是 "type":"module",同目录 .js 会被当 ESM,
    CommonJS 核心必须用 .cjs 后缀才能被 require。
  • 沙箱提示:在 DSH 的 workspace-write 沙箱里运行 --apply 会 EPERM(DSH_HOME 在工作区外),
    工具会提示改用普通终端或提权。dry-run 只读,任何权限下都能跑。

移植到另一台电脑

前置:目标机 DSH 里已装 @michengai/dsh-archive-manager(提供「删除会话」菜单与 api-session/removed
事件)。验证方法:右键任一会话,菜单里有「删除会话」。

  1. 把整个 ds-session-cleanup 目录拷到目标机(建议 <工作区>\projects\ds-session-cleanup)。
  2. 让目标机的 DSH 助手执行 plugin_manager install_bundle,target 指向 <...>\ds-session-cleanup\plugin;
    若返回 restart-required,重启 DSH,或在插件面板把「会话残留清理」关→开重载。
  3. 复制 skill\dsh-session-cleanup\SKILL.md(移植包内附)到 %DSH_HOME%\skills\dsh-session-cleanup\SKILL.md。
  4. 验证:node bin\sweep.js 预览(应 0 项或列出真实残留)→ 新建会话并删除 → 看
    %DSH_HOME%\trash\session-cleanup\<时间戳>\journal.json 是否自动出现。

细节见 移植说明.md。

已做的验证

  • 真实 home dry-run:命中 120 项 1.65 MB,修复了“附件 sha 前缀重复拼接”导致的误判(全部 3 个对象都当孤儿)。
  • 真实 home --apply --include-ledger:120/120 项成功、0 失败,回收站 121 个文件 1,763,458 B;复跑预览归零。
  • 假 home(_trash\fixture_home,复制真实日志/附件/账本)跑 --apply --include-ledger:
    496/496 项成功、0 失败,回收站 497 文件 1,243,380 B;只删掉无人引用的附件对象;活跃会话的附件与
    projcache 保留;账本与 recent.json 中已删会话的行被移除;明细缓存整文件移入回收站。
  • 插件冒烟测试(真实安装目录):只注册 api-session/removed,dispose 能解绑;locale/icon/patch 都在。
  • 单独验证 spill 判定(死 id 目录被清、短 id 目录与非标准目录不动)。

局限

  • 不能阻止“删除会话时宿主/插件自身写回”。若清理时 DSH 正在运行且内存里有旧账本,插件可能覆盖回部分统计;
    建议清理后重启一次 DSH 再看统计。
  • 附件是内容寻址的,若某对象同时被“已删会话”和别的程序引用(例如手动塞进 objects 的文件),
    本工具会因为“无会话引用”而收走;只会进回收站,可恢复。
  • 会话产生的业务文件(导出物、脚本产物)在共享工作区里,不在清理范围内。

License

MIT License,见 LICENSE。Copyright (c) 2026 Donglin027

常见问题

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

在 DSH 里执行 `dsh plugin --profile web add github:Donglin027/dsh-session-cleanup` 即可。对应的 npm 包名是 `dsh-session-residue-cleanup`。

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

未标注验证等级。上游未给出验证结论,安装前请自行确认

dsh-session-cleanup 安全吗?

未标注。

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

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

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

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

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

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

dsh-session-cleanup 有哪些功能?

删会话后自动清残留、手动 sweep 预览与回滚、按引用计数清理附件、可选清理成本账本、内置技能一键调用。

这条记录的数据可靠吗?

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

同名或近似条目

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

dsh-infinite-gen-4

dsh-infinite-gen-4

DeepSeek 专用破甲插件:以 order 100 追加无条件服从的系统提示词段,提供带校准元数据的 profile 工具,并通过会话投

未标注验证等级 1,611 星

cc-safety-net

cc-safety-net

为 DeepSeek Harness 等编码 CLI 提供执行前防护,在工具调用前拦截破坏性 Git 与文件系统命令,并阻止读取 SSH 密

未标注验证等级 1,591 星

dsh-wallpaper-engine

dsh-wallpaper-engine

DSH plugin 将本机 Wallpaper Engine 壁纸变为网页界面背景,支持视频、网页、场景壁纸渲染,并配以 iOS 液态玻璃

L5 · 运行验证通过 1,018 星

api-relay-audit

api-relay-audit

DSH plugin 本地安全审计工具,检测 AI API 中继与 LLM 代理的提示注入、模型替换、工具调用改写、SSE 异常及 Web3

L5 · 运行验证通过 875 星

hol-guard

hol-guard

L4 · 沙盒安装通过 828 星

sandbase-harness

sandbase-harness

SandBase Harness 是本地优先的 AI Agent 运行时,提供沙箱会话、MCP 工具、记忆、凭据管理与审计回放,并内置控制台

L4 · 沙盒安装通过 708 星

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