永久删除会话数据,并原地脱敏日志中的密钥
30/100
综合分
0
GitHub 星标
—
npm 周下载
—/5
用户评分
数据截至 2026/10/27 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add Shihang-Hu/dsh-session-purge该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:仅索引
图例:✓ 通过! 需注意— 未判定 / 无数据· 「未判定」= 本站尚无数据,不代表插件有问题
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
非官方 DeepSeek Harness 插件:永久清除会话(磁盘日志、投影缓存、工作区记账、临时输出、子代理级联),并在 zstd 会话日志中就地脱敏密钥。
README
由 DeepSeek 最新模型翻译生成dsh-session-purge
[!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(应 28/28)。
[!WARNING]
删除即永久,无回收站;脱敏只改写本地日志文件,不能替代密钥轮换。
管理 DeepSeek Harness 会话数据的两个操作:
- 永久删除:磁盘日志 + 投影缓存 + 工作区记账 + 工具输出临时文件,级联清除全部子代理会话;
- 原地脱敏:把敏感值(完整值/前缀)掩码写入会话 zstd 日志,保留历史,帧结构不变。
入口
| 入口 | 位置 |
| 设置 → 会话清理 | 按工作区分组的会话列表:单会话删除(行内两段确认,Enter/Esc/10 秒撤防)、脱敏对话框、「删除工作区」(组头按钮,两段确认;成员运行中整体 409 拒绝;部分失败保留工作区并逐条报告)、搜索与"仅磁盘残留"筛选 |
| 会话行"…
展开完整文档(README 剩余 1 节)
dsh-session-purge
[!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(应 28/28)。
[!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/<projectKey>/<id>/ → 磁盘日志目录
%TEMP%/dsh-{subprocess,spill,acl-skill,...}-* → 内容提及该会话 id 的工具输出目录(归因清扫)
header.parentSession === id → 子代理级联
ctx.emit('api-session/removed') → 通知全部客户端刷新
- 顺序:先删日志并验证删净,再清记账(半删会话不会掉出分组);清理后逐层事后验证,未净显式报错,可直接重试;
- 护栏:会话 id 须匹配 session-<uuid>(或裸 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
当前 28/28(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 起记录)。预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
Shihang-Hu/dsh-session-purge
永久删除会话数据,并原地脱敏日志中的密钥
相关插件 · 其他
模型破甲清洗HunYiSage/dsh-purge
⚔️ DeepSeek Harness 网络安全红队工具dsh-purge
★ 16,993已汉化DeepSeek 客户端
73
女娲蒸馏alchaincyf/nuwa-skill
输入名人名字,提炼其思维模型与决策方式供你调用
★ 37,308已汉化DSH
72
逆向分析桥接Fanqi89/dsh-rea
REA(Reverse Engineer Anything)MCP 桥接,用来把 REA 逆向工具接入 DSH 插件
★ 51已汉化DSH
72
语音女友beiyege-01/dsh-voice-ai-girlfriend
语音 AI 女友Voice AI girlfriend for DeepSeek Harness:Whisper…
★ 888已汉化DSH
71.6
红队越狱测试套件Minglink/dsh-infinite-gen-5
DeepSeek v4.1 flash 逆向工具无限五代 求 Star 收藏 ⭐欢迎大家提交项目的改进
★ 3,759已汉化DSH
71.4
协同办公空间dream-num/univer-workspace
一个让人类与 AI Agent 共同创作、协作和审阅的开源 Office 工作空间。
★ 2,270已汉化DSH
70.8
这个插件是你维护的吗?
作者本人可认领并核对本条目;认领通过后,详情页会显示「作者已认领」标记。