拦截文件删除并转入回收站,误删后随时还原
29.9/100
综合分
0
GitHub 星标
—
npm 周下载
—/5
用户评分
数据截至 2026/10/24 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add deepestevan/dsh-delete-guard该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:仅索引
是什么
dsh 原生插件 · security
装得上吗
本站尚未做安装检查
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 9 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码v2.7.0🔵 扫描:含敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。
可执行外部命令读写/删除本地文件
查看扫描证据(共 3 处,展示前 3 条)
- 读取本地文件lib/index.js:272
await stat(verdict.path); - 读取本地文件lib/recycle.js:40
if (candidate.length > 0 && existsSync(candidate)) return candidate; - 执行外部命令来自配置/变量lib/recycle.js:61
const child = spawn(
扫描于 2026/10/31(0 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
让 DeepSeek Harness 每次删除文件都走系统回收站:拒绝该调用,改走 file_trash 工具。
README
由 DeepSeek 最新模型翻译生成$shell = New-Object -ComObject Shell.Application
$bin = $shell.Namespace(10) # 10 = Recycle Bin
$bin.Items() | Where-Object { $_.Name -eq 'a.txt' } | ForEach-Object {
$bin.GetDetailsOf($_, 1) # 原路径,仅用于确认
$_.InvokeVerb('ESTORE') # 还原
}
或者直接打开回收站,右键「还原」。file_trash 从不永久删除,所以只要没清空回收站,文件就还在。
已知限制
- 只覆盖 Windows 回收站。Linux 上 file_trash 会明确报错,不会退化成 rm。
- 只拦已知形态。混淆写法(& $cmd、动态拼出的程序名)拦不住——这是启发式规则,不是沙箱。
- format 按程序位置判定,不解析参数:format.com 一律拒绝,Format-Volume 放行。
- terminal_send 只做文本匹配,不跟踪终端状态;命令在终端里被改写后可能漏判。
- file_trash 依赖 SHFileOperationW,单次调用有路径长度上限;超长路径会逐条报错,不会静默丢弃。
展开完整文档(README 剩余 1 节)
$shell = New-Object -ComObject Shell.Application
$bin = $shell.Namespace(10) # 10 = Recycle Bin
$bin.Items() | Where-Object { $_.Name -eq 'a.txt' } | ForEach-Object {
$bin.GetDetailsOf($_, 1) # 原路径,仅用于确认
$_.InvokeVerb('ESTORE') # 还原
}
或者直接打开回收站,右键「还原」。file_trash 从不永久删除,所以只要没清空回收站,文件就还在。
已知限制
- 只覆盖 Windows 回收站。Linux 上 file_trash 会明确报错,不会退化成 rm。
- 只拦已知形态。混淆写法(& $cmd、动态拼出的程序名)拦不住——这是启发式规则,不是沙箱。
- format 按程序位置判定,不解析参数:format.com 一律拒绝,Format-Volume 放行。
- terminal_send 只做文本匹配,不跟踪终端状态;命令在终端里被改写后可能漏判。
- file_trash 依赖 SHFileOperationW,单次调用有路径长度上限;超长路径会逐条报错,不会静默丢弃。
开发
pnpm install
pnpm build # tsc → lib/
pnpm test # vitest
pnpm lint # eslint
规则集中在 src/guard/rules/,每条规则一个文件,导出 match(command) → verdict。新增规则时同步在 test/guard/ 下补用例。
许可
MIT
1. 读 X:\$Recycle.Bin\<SID>\$I* 记录:偏移 24 是原路径字符数,偏移 28 起是 UTF-16LE 原路径;
2. 按原路径匹配到目标条目,取配对的 $R 文件;
3. Move-Item 搬回原位。
$R/$I 的文件名是随机的($R3LCXYR.txt),原文件名不在文件名里,只能靠解析 $I 反查;动词还原后可能残留孤儿 $I 记录,跳过 payload 缺失的即可。资源管理器里右键「还原」与之一致,只是脚本化时别依赖本地化的动词名。
不挡什么
| 不覆盖 | 原因 |
| 脚本文件里已有的删除(守卫从未见过内容) | 只能拒绝写入与看得见的内联形态,不能执行期改写 |
| Add-Type 里写任意 C#(如 DeleteFileW) | 文本判定够不到;只有针对回收站的 API 被点名拦掉 |
| 命令名先拼进变量再 & $c 调用 | 文本层面无法求值 |
| 表格外工具名的执行通道(自定义 shell 工具、第三方插件) | 覆盖名单是显式的,见下 |
| 终端里分两次发送才拼出的删除 | 每次 send 只看到这一次的文本 |
| 非 Windows 平台 | 桥接是 SHFileOperationW |
| 空余空间不足时的删除 | NTFS 同卷回收是 rename,不占新空间,没有可预检的东西 |
覆盖的 shell 工具名:pwsh、powershell、cmd、bash、sh、zsh、shell、 terminal_send、terminal_write。判定看的是语句的命令词、调用的形态和程序位置,不是「这一行里出现过这个词」。
测试
node test/run-all.mjs
90 项、五层:命令分类(49)、file_trash 操作数守卫(15)、宿主 schema 与钩子接线(11)、宿主 schema 受理(5)、对真实回收站的端到端(10)。test/ 不进 tarball,所以打包前必须全绿;其中两层会加载宿主自己的校验器,找不到 DSH 安装时报「跳过」而非失败。
文档
| 文件 | 内容 |
| CHANGELOG.md | 版本摘要 |
| SECURITY.md | 威胁模型:策略层,不是沙箱 |
| LICENSE | MIT |
设计取舍、逐轮实测与发布跑批属于工程笔记,保存在维护者侧,不随仓库与包发布。
许可
MIT,见 LICENSE。预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
deepestevan/dsh-delete-guard
拦截文件删除并转入回收站,误删后随时还原
相关插件 · 安全 / 权限
智能体逆向工程morluto/rea
用智能体逆向工程任何东西,从应用行为到原生二进制。
★ 415,267已汉化DSH
73.3
智能体集群框架ruvnet/ruflo
面向 Claude Code 与 Codex 的智能体元基座meta-harness。
★ 80,414已汉化MCP
71.9
WorkBuddy 模型接入corrinehu/dsh-workbuddy-connect
2026 年 10 月 20 日起,WorkBuddy…
★ 1,604已汉化DSH
71.7
破甲一键通z91772524-ai/pojia-next
十五个 AI…
★ 967已汉化DSH
71.6
AI 代理虚拟终端strukto-ai/mirage
Mirage 是给 AI 智能体用的虚拟终端:一层 shell,统管数据、命令行和运行时。Unix…
★ 3,756已汉化DSH
70.8
Agent 操作层agentic-os-org/ANOLISA
ANOLISA(Agentic Nexus Operating Layer & Interface System Architecture)|智能体操作系统,带运行时、安全、可观测性,以及 Tokenless 响应压缩,降低 token 用量与成本。
★ 649已汉化DSH
70.7