dsh-trash:DeepSeek Harness 回收站插件

DeepSeek Harness (DSH) 的插件化架构允许 Agent 获取最高权限(如 danger-full-access)。当模型执行 Remove-Item、rm、del 等删除命令时,通常意味着永久性破坏,缺乏安全回退机制。dsh-trash 插件通过拦截删除操作,将其转换为可恢复的移动操作,为 Agent 提供误删保护。

这是一个由 LeonSone 维护的 DSH 插件,核心价值在于将所有删除行为纳入一个可恢复的垃圾存储区。它支持 pwsh、bash 和 run_code 工具,默认回收站位置为 $DSH_HOME/trash,零运行时依赖。

核心功能

  • 拦截删除命令:在 pwsh、bash 和 run_code 工具的 tools/pre-execute 阶段拦截 Remove-Item、rm、del、rd、unlink、fs.unlink、os.remove、shutil.rmtree 等命令,拒绝执行并引导使用回收站工具。
  • 提供回收站工具:提供 trash、trash-list、trash-restore、trash-purge 四个工具。
  • 默认路径:回收站位置默认为 $DSH_HOME/trash,每个条目包含 data/(保留原文件名)和 meta.json(记录原路径、时间戳、大小)。
  • 跨卷支持:支持跨卷移动,若无法重命名则自动降级为复制。
  • 零依赖:仅使用 Node.js 内置模块,无额外运行时依赖。

安装与启用

使用官方安装命令添加插件:

dsh plugin --profile web add github:LeonSone/dsh-trash

安装后需重启 dsh web 或 headless runner 以加载插件。

典型用法

插件加载后,模型行为自动改变:

  • 移入回收站:调用 trash(paths=[...]) 将文件/目录移动到回收站。
  • 查看回收站:使用 trash-list(path?) 列出条目(支持路径过滤)。
  • 恢复文件:使用 trash-restore(entry_id=...) 或 trash-restore(path='...') 恢复。
  • 永久删除:唯一真正删除的路径是 trash-purge(confirm: true)。

适用场景与注意事项

  • 安全策略:插件采用 Fail-safe 设计,倾向于误报(拦截包含删除命令的字符串)而非漏报,防止真实删除发生。短别名(如 rm、del)仅在命令位置匹配,cat /tmp/rm 等场景不会被拦截。
  • 覆盖保护:恢复文件时若目标存在,会先将目标备份到回收站,确保无数据丢失。
  • 运行权限:插件以当前 dsh 进程权限运行,安装前应检查源码与许可证。

总结

dsh-trash 通过拦截标准删除命令并提供 trash-purge 作为唯一出口,为 Agent 提供了安全删除的兜底机制。更多细节与源码请查阅:GitHub。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜