dsh-recycle-bin:把 DSH 裏的刪除送進 Windows 回收站

前言

DeepSeek Harness(DSH)在工具層不提供直接的 delete,模型要刪文件往往只能走 pwsh、bash、terminal_send 或 run_code。這些通道一旦執行 Remove-Item、rm 或 Node 的 fs.rm,文件通常會被永久刪掉,誤操作後很難從資源管理器裏找回來。下面介紹社區插件 dsh-recycle-bin(維護者 yanli-nyan,SkillHub 分類 admin-security):用 trash 工具把刪除送進系統回收站,並在常見 shell / 代碼入口上攔截或引導,降低「一條命令清盤」的概率。它運行在 DSH 進程權限內,不能替代整機文件系統 ACL;SkillHub 是獨立社區目錄,與 DeepSeek / 幻方無官方從屬關係。

這是什麼

dsh-recycle-bin 是 DSH 的工具層守衛:提供 trash、trash_list、trash_restore,並對 pwsh / bash / terminal_send / run_code 上的永久刪除語義做識別與攔截(可配置爲僅提供工具、不攔截)。實現只依賴 Node 內置模塊,無額外 npm 依賴。當前公開資料標明 MIT 許可,僅適用於 Windows,且 trash 依賴本機 powershell.exe。

核心功能

  1. trash 工具:刪除文件或目錄時寫入 Windows 回收站,可從資源管理器或 trash_restore 還原。
  2. trash_list / trash_restore:列出各捲回收站中可還原條目(讀 $Recycle.Bin 下 $I 元數據),按 id 還原到原路徑。
  3. 永久刪除守衛:在四個模型常用入口上識別直接刪除命令、嵌套 shell、腳本文件內容、內聯 -e/-c 代碼、run_code 中的 Node 刪除 API,以及 Clear-Content 等內容破壞類操作;可通過 allowPaths 放行如 .dsh/tmp、node_modules 等路徑。
  4. 系統提示:告知模型本環境應使用 trash,而非假設存在永久刪除能力。

插件文檔明確列出仍可能漏攔的情形(動態拼方法名、eval 解碼、刪除藏在模塊內、超大腳本中段、關閉攔截配置等),並說明 guard 不是安全邊界,只能降低誤刪概率。

安裝與啓用

官方推薦從 GitHub 安裝(示例使用 desktop profile,按你的 profile 替換):

dsh plugin --profile desktop add https://github.com/yanli-nyan/dsh-recycle-bin

Release 附帶 tgz 時可離線安裝:

dsh plugin --profile desktop add ./local-dsh-recycle-bin-1.6.0.tgz

本地開發目錄安裝(改代碼後需在插件管理中禁用再啓用,或重啓 DSH):

dsh plugin --profile desktop add <本目錄絕對路徑>

用 tgz 或 git 方式安裝的是解包副本,升級需先 remove 再 add。安裝前建議閱讀倉庫源碼與 MIT 許可證;插件以當前 dsh 進程權限 運行。

配置

在 profile 的 cordis.patch.yml 中覆蓋插件配置,無需改包內文件:

- id: recycle-bin
  config:
    mode: enforce              # off:只提供 trash,不做攔截
    enforceOnTerminal: true    # 攔 terminal_send(持久終端繞過 pwsh)
    enforceOnCode: true        # 攔 run_code 的 Node fs 刪除
    enforceScriptFiles: true   # 讀命令行裏點名的腳本文件內容再判斷
    listTool: true             # 註冊 trash_list
    restoreTool: true          # 註冊 trash_restore
    allowPaths:                # 構建產物可直接刪除,不打擾
      - .dsh/tmp
      - node_modules

allowPaths 顯式留空會回落到默認值,而不是清空白名單。

典型用法

模型側刪除文件應調用 trash,傳入路徑數組。刪除後查看回收站:

trash_list({ limit: 20 })

返回 { entries, total },每條含 id、path、size、deletedAt。按 id 還原:

trash_restore({ ids: ["KFV3TQ.txt"] })

trash 返回的 status 包括 recycled、missing、unavailable、denied、refused(如無回收站的 FAT32/U 盤卷會主動拒絕)、failed 等,便於區分「已進回收站」與「無法安全刪除」。

適用場景與注意

適合:在 Windows 上用 DSH 做本地開發、希望智能體刪文件先進回收站、並限制模型通過 shell / 代碼通道繞過的情況。

不受保護(文檔表格已說明):資源管理器 Shift+Del、編輯器 / git / npm 等其他進程、DSH 之外的任何進程。要覆蓋整機刪除需文件系統 ACL 或專門監控,不在本插件範圍。

務必:安裝前核對源碼與許可證;不要把攔截當作安全保證;無 PowerShell 時 trash 不可用。

結尾

dsh-recycle-bin 針對 DSH「沒有內置 delete、只能走命令與代碼」這一現實,把可恢復刪除和多層文本守衛疊在同一插件裏,適合作爲 Windows 桌面 profile 的安全輔助。目錄與說明見 SkillHub 插件頁,源碼與版本歷史見 GitHub:yanli-nyan/dsh-recycle-bin。

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

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

小夜