dsh-session-purge

DSH PLUGIN工具与能力

仓库 Shihang-Hu/dsh-session-purge

工具与能力 L5 · 运行验证通过 安全审查:低风险 可信度:金 可安装插件
安装这个插件

dsh-session-purge 是 Shihang-Hu 维护的 工具与能力 类 DSH 可安装插件, 仓库为 Shihang-Hu/dsh-session-purge,许可证 MIT。 下面按「装什么、怎么装、验没验过、跑起来要注意什么」逐项列出。

一句话选型结论

按资料字段整理

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

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

安装

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

    仓库没有标注兼容版本与 Node.js 要求,先确认你的 DSH 版本能装,再继续。

  2. 2
    执行安装命令

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

  3. 3
    确认已挂载

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

  4. 4
    试跑并检查权限

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

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

能做什么

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

适用场景

文件读写智能体编排

上游标签

deepseek-harnessdshdsh-plugin

验证等级与安全审查

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

选择建议

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

值得选的地方

  • 验证等级 L5:安装和运行都在沙盒里跑通过,装完能直接用的概率高。
  • 静态安全审查为低风险,没有发现明显可疑行为。
  • 有可直接复制的安装命令,不用自己翻文档找入口。

先想清楚的地方

  • 没有声明 Node.js 版本要求,版本不匹配可能装不上。
  • 验证通过不等于安全:插件会读写文件、执行命令或联网,装前先到仓库确认它做了什么。

更适合

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

不太适合

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

同类对比

6 个同类
同分类里挑最接近的几条,字段以各自详情页为准
插件验证等级安全审查星标兼容版本安装命令
dsh-session-purge当前 L5 · 运行验证通过 低风险 0 未标注 有
loopx 未做沙盒验证 未标注 6,233 未标注 无
dsh-startup-screen 未做沙盒验证 未标注 633 未标注 有
minara-skills L4 · 沙盒安装通过 中风险 360 未标注 有
dsh-blender-plugin 未做沙盒验证 未标注 211 未标注 无
tokenledger L5 · 运行验证通过 低风险 204 0.2.0-rc.2 等 11 个 有

仓库档案

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

README 全文

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

dsh-session-purge

English | 简体中文

> [!IMPORTANT]
> 社区第三方插件,与 DeepSeek 官方无隶属关系;触点均为 Harness 内部实现面(非文档化 API)。
> 兼容基线:@deepseek-ai/dsh-desktop 0.2.1-rc.3(Windows x64,nightly 渠道,2026-10-26 逐触点审计)。nightly 更新可能静默破坏兼容——升级 DSH 后先运行 node --test test/purge.test.mjs(应 33/33)。

> [!WARNING]
> 删除即永久,无回收站;脱敏只改写本地日志文件,不能替代密钥轮换。

管理 DeepSeek Harness 会话数据的两个操作:

  • 永久删除:磁盘日志 + 投影缓存 + 工作区记账 + 工具输出临时文件,级联清除全部子代理会话;
  • 原地脱敏:把敏感值(完整值/前缀)掩码写入会话 zstd 日志,保留历史,帧结构不变。

入口

入口 位置
设置 → 会话清理 按工作区分组的会话列表:单会话删除(行内两段确认,Enter/Esc/10 秒撤防)、脱敏对话框、「删除工作区」(组头按钮,两段确认;成员运行中整体 409 拒绝;部分失败保留工作区并逐条报告)、搜索与"仅磁盘残留"筛选
会话行"…"菜单 末尾「删除」项(官方槽位 sidebar.workspaces.session.menu.item),删除该行会话且不切换当前对话

完成对话框报告释放字节、级联数与临时清扫摘要;对话框配色全部取宿主主题 token,跟随深浅色。

页面布局重置

客户端无内置入口;「会话清理」面板底部提供指令(F12 → Console 粘贴执行;重载后空白则手动重启客户端):

['dsh.sidebar-right.v1','dsh.sidebar-browser.v1','dsh.workspace.view.v5','dsh.conversation.contentWidth','dsh.trajectory'].forEach(p=>Object.keys(localStorage).filter(k=>k.startsWith(p)).forEach(k=>localStorage.removeItem(k)));
location.reload();

只清布局白名单(前缀匹配覆盖按会话键),不动快捷键、草稿、终端与计划任务。备选:更宽 localStorage.clear();更严(精确边界 + 旧启动标记键):

['dsh.sidebar-right.v1','dsh.sidebar-browser.v1','dsh.workspace.view.v5','dsh.conversation.contentWidth','dsh.trajectory.duration','dsh.trajectory.jsonStringWrapping','dsh.session-purge.reset-layout-on-boot'].forEach((p)=>Object.keys(localStorage).filter((k)=>k===p||k.startsWith(p+'.')).forEach((k)=>localStorage.removeItem(k)));location.reload()

删除语义

ctx.get('sessions')                              → 活会话:flush(驻留对象在无代理持有时再驱逐)
ctx.get('storageDomain') → 'session_projcache'   → 投影缓存行(域 + 文件双层)
ctx.get('storageDomain') → 'workspace'           → 工作区记账 + 归档/置顶集合(域 + 文件双层)
$DSH_HOME/sessions///            → 磁盘日志目录
%TEMP%/dsh-{subprocess,spill,acl-skill,...}-*    → 内容提及该会话 id 的工具输出目录(归因清扫)
header.parentSession === id                      → 子代理级联
ctx.emit('api-session/removed')                  → 通知全部客户端刷新
  • 顺序:先删日志并验证删净,再清记账(半删会话不会掉出分组);清理后逐层事后验证,未净显式报错,可直接重试;
  • 工作区记录另走 harness 的 workspaceRegistry.delete()(pendingMutation 协议,进程在删除过程中退出也能在下次启动收尾);无该服务时降级路径写同样的标记,记录删除失败会回滚 order;
  • 护栏:会话 id 须匹配 session-(或裸 uuid,不区分大小写);运行中拒绝(409);级联深度上限 MAX_CASCADE_DEPTH = 8,超出以 cascadeTruncated: true 显式报告;仅驻留不拒绝(先 flush 再清盘);路径必须落在预期根内;符号链接一律拒删;全走 Node fs,不经 shell;
  • TEMP 清扫按内容归因(目录内容提及会话 id 才删),受文件数/字节预算约束(超限报 budgetHit);整棵级联只扫一次,各会话 tempSweep[].dirs 之和可能大于实际删除数(客户端摘要用去重合计 tempSweepTotal)。

脱敏语义

逐帧解压 → 替换 → 逐帧重压缩,帧数与行结构不变;写回前落备份、写回后完整校验(内容一致 + 敏感值绝迹 + 帧数一致),失败自动回滚;成功即删备份。备份清理失败不回滚(避免把脱敏结果还原成明文),报告 backupResidual/backupError;单文件失败不中断其余文件。

  • secrets:完整值(6–512 字符,至多 64 项)→ 掩码 [REDACTED:xxxx…lenNN](保留前 4 位与总长);6–8 位短值会泄露大半,建议改用 prefixes 或直接轮换;
  • prefixes:已知前缀(4–32 位 [A-Za-z0-9_-],至多 64 项),保留前缀、清除其后连续的字母/数字/_/-;
  • 仅"运行中"拒绝(409);请勿对当前正查看的会话执行(界面状态未验证);
  • 需 Node ≥ 23.8 的 zstd API(运行时检测;不满足时该路由 501,其余功能不受影响)。

目录结构与接口

dsh-session-purge/
├── package.json          # 包清单:dsh.bundle.patch + dsh.client 声明
├── cordis.patch.yml      # bundle 层:向 profile 插入插件行
├── lib/index.js          # 宿主半:删除/脱敏管线 + 三个同源 HTTP 路由
├── lib/client.js         # 客户端半:对话框 / 设置面板 / 侧栏行菜单
└── test/purge.test.mjs   # 单元测试(假 ctx + 临时 DSH home)

信任模型与宿主 api-request-trust 一致:授权主体必须为 loopback;sec-fetch-site: cross-site 一律拒绝;Origin 存在时必须等于该主体(桌面端经 dsh-app:// 转发会剥离 Origin,故缺失即放行)。

GET  /_dsh/session-purge/list             → { ok, sessions: [...] }(行含 workspaceId / workspace)
POST /_dsh/session-purge/delete           → { sessionId } → { ok, deleted[], freedBytes, projRows, wsRefs, tempSweep[], tempSweepTotal, live[], descendants[], cascadeTruncated }
POST /_dsh/session-purge/delete-workspace → { workspaceId } → { ok, workspaceId, workspaceTitle, deleted[], failures[], freedBytes, projRows, wsRefs, tempSweep[], tempSweepTotal, workspaceRecordDeleted, cascadeTruncated }
POST /_dsh/session-purge/redact           → { sessionId, secrets?, prefixes? } → { ok, files[], totalReplacements, backupsResidual, failures }

安装(会修改 DSH profile)

克隆或下载本仓库(无 npm 依赖),然后二选一:把 dsh-session-purge 放入 profile 的 bundles 列表,或在目标 profile 的 cordis.patch.yml 中 insert 一行 name: 'dsh-session-purge'。二者都做会加载两次。桌面版实测无需重启(dsh-hmr 热加载插件行)。

测试

node --test test/purge.test.mjs

当前 33/33(Node 24.21;无 zstd 的运行时跳过脱敏用例)。

已知限制(如实)

  • 无回收站;不回收 attachments 引用计数;
  • TEMP 清扫是内容归因:从未提及会话 id 的输出会留存;
  • 删除当前正查看的会话宿主不拦(无窗口守卫),其后界面表现未经端到端验证;
  • 子代理不在面板列出(清理依赖主会话级联);对话页的子代理家族条目是父日志的派生投影,删除后界面残留到重建(磁盘与记账已净);孤儿子代理需手工清理;
  • 驻留会话删除后:宿主仍持代理对象则保守跳过,幽灵行留到下次重启;
  • Electron 渲染缓存可能短期保留已渲染内容(推断,未端到端验证);
  • 端到端验证:0.2.0-rc.2 真机验证三个路由与两个入口;0.2.1-rc.3 起为逐触点静态审计(2026-10-26,未重复端到端);脱敏路由与"运行中拒绝"等守卫尚未在真实数据上触发过。

变更历史见 CHANGELOG.md(自 0.3.4 起记录)。

常见问题

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

在 DSH 里执行 `dsh plugin --profile web add github:Shihang-Hu/dsh-session-purge` 即可。

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

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

dsh-session-purge 安全吗?

低风险。

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

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

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

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

这条记录的数据可靠吗?

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

同名或近似条目

4 条
不同作者的仓库分开列,请确认你要装的是哪一个
工具与能力
按星标排序,可作替代方案

loopx

loopx

LoopX 是面向长周期 Agent 的本地优先控制平面,作为 DSH plugin 为 DeepSeek Harness 提供持久目标、证

未标注验证等级 6,233 星

dsh-startup-screen

dsh-startup-screen

DeepSeek Harness 的启动界面与启动动画插件。

未标注验证等级 633 星

dsh-blender-plugin

dsh-blender-plugin

让 AI 模型通过直连 TCP 通道实时驱动 Blender 的 DSH plugin:15 个工具覆盖视口取帧、任意角度渲染、内循环搜索、

未标注验证等级 211 星

tokenledger

TokenLedger

TokenLedger 为 DeepSeek Harness 提供零配置的 Token 用量记账,自动归属到实际服务请求的中转站,无需凭据即

L5 · 运行验证通过 204 星

deepseek-harness-jev

deepseek-harness-jev

把 TypeSafe Jev 接入 DeepSeek Harness 作为 System One 决策层,为技能与文件选择、任务监督、纠偏和

未标注验证等级 203 星

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