DSH Safekeep:無人值守 DSH 工作流中的 Windows 文件恢復防護

前言

在 DeepSeek Harness(DSH)裏給 Agent 開高權限、讓它長時間無人值守改代碼時,一個常見風險是誤刪或覆蓋文件。人工逐次確認會打斷自動化;完全不做防護又可能把事故變成不可逆損失。DSH Safekeep 是社區維護的非官方 Windows 插件,目標是在不增加逐操作確認的前提下,讓常見文件事故儘可能可恢復,並在識別到永久刪除等危險操作時拒絕執行。

下面介紹它的定位、能力邊界、安裝步驟和日常用法。事實以 GitHub 倉庫 README 與 Release 爲準;當前公開預覽版本爲 0.1.0-rc.1,採用 MIT 許可證,維護者爲 SPX43JL。插件在 SkillHub 目錄 分類爲 admin-security。

這是什麼

DSH Safekeep 一句話定位:非官方 Windows 插件,面向高權限、無人值守的 DSH 工作流,儘量讓常見文件事故可恢復。

普通編輯會先保存舊字節,再讓後續操作繼續執行;識別到永久刪除等危險操作時會拒絕,並提供可恢復移除工具,使 Agent 在既有授權內繼續工作。它不是 sandbox、完整備份或絕對防刪保證:腳本內部、未匹配工具和直接 PTC 文件系統 API 的寫入可能完全不被觀察;單文件快照上限爲 64 MiB;同機恢復庫不能應對整盤丟失。使用前應先閱讀倉庫內 覆蓋範圍說明。

已驗證環境與支持範圍

首版 README 聲明的已驗證環境如下:

  • Windows 11 x64、本地 NTFS
  • Node.js 24.14.0、PowerShell 7.6.5
  • DSH 0.1.5-rc.2,Web / headless
  • 原生 read / write / edit / pwsh 工具模式

原生恢復工具的寫操作要求當前 DSH 處於 danger-full-access;插件不會切換權限模式。項目不聲明 macOS/Linux、DSH Desktop/ACP/Teams 支持;其他 Windows/Node/PowerShell/DSH 版本組合須自行重新驗收。詳見 兼容與維護、驗收報告。

核心功能

編輯前快照與危險操作攔截

  • 覆蓋類編輯:在繼續執行前保留舊文件內容(單文件舊內容上限 64 MiB)。
  • 永久刪除等危險操作:拒絕執行,並可通過回收類工具做可恢復移除。
  • 不新增逐操作確認;正常讀取、編輯、依賴安裝和測試仍可按原流程進行。

Agent 可調用的工具

Agent 可直接調用下列工具,不依賴 PATH 上額外安裝:

工具 用途
data_safety_status 當前實例與會話的版本、指紋、計數、存儲狀態與覆蓋邊界
data_safety_snapshots list / inspect / verify / restore;默認恢復爲旁路新文件
data_safety_trash move / list / verify / restore;僅接受已覈實的絕對路徑,無 purge
data_safety_temp create / list / retire;退休也走可恢復回收

存儲與離線 CLI

默認存儲位於用戶主目錄下 .dsh-safekeep,保留文件內容、原路徑、時間與會話/工具標識,不記錄完整對話或完整 shell 命令。恢復數據可能含敏感內容,不宜提交到 Git。目錄 ACL 限於當前賬戶、SYSTEM 和 Administrators。

當 DSH 無法啓動時,可從下載的同版本 tgz 解壓後使用包內 CLI,與原生工具共用同一庫,無需 DSH 或網絡。

安裝與啓用

插件不會安裝或升級 DSH、切換模型或配置憑據。準備 Node 24、PowerShell 7、pnpm 和可正常使用的 DSH 0.1.5-rc.2,先用下面命令覈對環境:

node --version
pwsh --version
pnpm --version
dsh --version

本項目尚未發佈 npm package,不要用 @latest 猜測安裝。請從 v0.1.0-rc.1 Release 下載精確版本。

  1. 從 Release 取得 dsh-safekeep-0.1.0-rc.1.tgz、SHA256SUMS 和 BUILD-INFO.json,用 Get-FileHash -Algorithm SHA256 比對完整散列。保留 tgz,它也提供離線恢復 CLI。GitHub 自動生成的 Source code 壓縮包不是 DSH 安裝包。
  2. 退出準備修改的 DSH profile。將該 profile 的 package.json、pnpm-lock.yaml、cordis.yaml(若存在)和上一版 tgz 備份到私有目錄。
  3. 將 tgz 放在不含空格和 shell 元字符的路徑,例如 C:\DSHPackages(當前 DSH Windows plugin→pnpm 轉發的路徑約束;工作區路徑仍可含空格和中文)。
  4. Web 與 headless 是兩個獨立 profile,安裝其中一個不會保護另一個。按實際入口執行:
dsh plugin --profile web add C:\DSHPackages\dsh-safekeep-0.1.0-rc.1.tgz --save-exact --ignore-scripts --config.auto-install-peers=false
dsh plugin --profile headless add C:\DSHPackages\dsh-safekeep-0.1.0-rc.1.tgz --save-exact --ignore-scripts --config.auto-install-peers=false

安裝後重啓相應 profile。無需全局安裝;無 postinstall、聯網遙測或後臺服務。Web 場景使用 DSH 啓動時輸出的認證地址,保持迴環監聽,勿公開 token。

確認當前會話真正生效

在 DSH 中要求調用 data_safety_status。確認 loaded: true、storage.ok: true、版本與 Release 附件 BUILD-INFO.json 的 codeHash 一致,並檢查 currentSessionId。工具不存在、存儲失敗或指紋不同,都不能認爲已經保護。

隨後運行 README 指向的首次安裝 canary:在新建註冊目錄內讀→編輯樣本,覈對 currentSession.snapshots 增加,找到快照、校驗並恢復舊字節;對從未創建的文件只嘗試一次刪除負例,確認拒絕且計數增加。配置裏出現包名或一次綠色 status 均不能代替該驗證。每次升級、修改 profile 或 DSH 更新後應重做。

典型用法與恢復

會話內通過工具恢復

通過 data_safety_snapshots 列出、校驗 UUID 後執行 restore;通過 data_safety_trash 處理可恢復移動。遇到不確定路徑、鏈接、超大舊文件或不可識別寫入路徑時,可改用明確路徑、原生編輯工具或新版本輸出,不能繞過已發生的拒絕。

DSH 不可用時的 CLI

從 tgz 解壓到新目錄(示例路徑 C:\DSHRecovery),執行:

node C:\DSHRecovery\package\bin\dsh-safekeep.mjs doctor
node C:\DSHRecovery\package\bin\dsh-safekeep.mjs snapshots --path C:\Work\project\notes.txt
node C:\DSHRecovery\package\bin\dsh-safekeep.mjs snapshots verify SNAPSHOT_UUID
node C:\DSHRecovery\package\bin\dsh-safekeep.mjs snapshots restore SNAPSHOT_UUID
node C:\DSHRecovery\package\bin\dsh-safekeep.mjs trash list

doctor 檢查本地 CLI/存儲/歷史回執,明確不聲稱當前 DSH 已加載。升級、卸載與排錯見 恢復手冊。

適用場景與注意

適合誰: 已在 Windows 上主動授予 DSH 高權限、需要 Agent 長時間無人值守改文件、又希望常見誤刪/覆蓋有恢復手段的開發者。不適合把本插件當作全盤備份、加密保管或對所有寫入路徑的絕對防刪。

權限與安全: 插件以當前 DSH 進程權限運行;安裝前應自行閱讀源碼、MIT 許可證 與 NOTICE。DSH Safekeep 爲非官方社區項目,官方社區討論展示不代表 DeepSeek 官方審覈或背書。SkillHub 等社區目錄爲獨立站點,與 DeepSeek / 幻方無官方從屬關係。

結尾

DSH Safekeep 在 DSH「一切皆插件」的生態裏,補的是 Windows 無人值守場景下的文件恢復與危險刪除攔截這一層;能力有明確上限,安裝後必須用 data_safety_status 與 canary 驗證真正生效。

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

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

小夜