dsh-sensitive-data-guardv0.2.2
dreaminsight24/dsh-sensitive-data-guard
0Stars
0Forks
0待解决 Issue
安装命令
dsh plugin --profile web add github:dreaminsight24/dsh-sensitive-data-guard#5d53514182cf1545ec0ad0de507f5277bb20bc08
介绍
敏感数据守卫(Sensitive Data Guard):DSH 区域感知、fail-closed 的删除门禁——工作区不保护、.dsh 静默备份、敏感区删除先备份再由用户手动确认
标签
概述
敏感数据守卫(Sensitive Data Guard)
给 DeepSeek Harness(DSH)用的区域感知、fail-closed 的删除门禁。 它只做一件事:在 DSH 拿到最高权限时,仍然拿不走工作区之外的数据—— 敏感区删除先备份、再要你输入 4 位确认码;.dsh 静默自动备份; 工作区内部完全不干预。备份不成功就硬性阻断,绝不降级为警告。
- 插件包:
@local/dsh-sensitive-data-guard(Host 插件 + Client 半 + bundle patch) - 版本:0.2.2;适配 DSH 0.2.1-rc.2(desktop profile)
- 插件目录:
<插件目录>(目录名是历史遗留,包名才是准的) - 默认备份根:
backup/(相对插件目录解析) - 默认级别:
hard
下文<插件目录>指本插件所在目录(即package.json所在处);bin/...、backup/这类相对路径都相对于它——换机器、换安装位置都不用改。
1. 一句话模型:三个区域
每个被删除/覆盖的目标都先归入一个区域,区域决定处理方式:
| 区域 | 判定 | 处理 |
|---|---|---|
工作区 workspace | 目标在当前会话的工作目录之内 | 完全不干预:不备份、不提醒、不阻断 |
.dsh dsh | 目标在本机 .dsh 目录之内 | 静默备份一次,不提醒、不阻断 |
敏感区 sensitive | 以上两者之外的任何路径 | 备份 + 硬提醒(4 位确认码),按级别定阈值 |
- 一次操作涉及多个目标时,取最严格的区域(例如同时删工作区文件和
D:项目,按敏感区处理)。 - 工作区里不可能包含
.dsh;判定基准取会话真实工作目录,拿不到时按敏感区处理(宁可多问一次)。
为什么工作区完全不保护:它的目的不是「防手滑删自己的项目」,而是防止模型在 danger-full-access 下把工作区之外的目录一起清掉。给自己写的东西加门禁只会拖慢开发。
2. 提醒级别(可在 DSH 里改)
policy.triggerLevel,三档,只影响敏感区:
| 级别 | 行为 |
|---|---|
soft | 仅备份,不提醒也不阻断:敏感区删除照常执行,事后可从备份还原 |
medium | 达到阈值才提醒:文件数 ≥ mediumMinFiles(默认 10)或 体积 ≥ mediumMinBytes(默认 64 MiB)才要确认码;未达阈值只备份 |
hard(默认) | 一律提醒:敏感区任何删除/覆盖都先备份、再要确认码 |
.dsh区域永远只静默备份,与级别无关。- 保护目录永远禁止修改,与级别无关(见第 6 节)。
- 把级别往放宽方向改(
hard → medium → soft)不会被拦截,但会红字警告,并写一条loosened: true的审计事件。
3. 确认流程(hard / medium 触发时)
第一次删除被拦下来时,你看到的是这样一份报告(格式与 lib/confirm.js 实际输出一致):
🛑 敏感区删除已拦截(未执行)
区域:敏感区(.dsh 与工作区之外)
级别:hard
拟删除的内容:
• D:项目旧版本
1284 个文件,3.7 GB
• D:素材临时
56 个文件,12.4 MB
合计:1340 个文件,3.71 GB
已经提前备份:2026-11-05/<session>/0007
备份目录:backup2026-11-05<session>