前言¶
在 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 下載精確版本。
- 從 Release 取得
dsh-safekeep-0.1.0-rc.1.tgz、SHA256SUMS和BUILD-INFO.json,用Get-FileHash -Algorithm SHA256比對完整散列。保留 tgz,它也提供離線恢復 CLI。GitHub 自動生成的 Source code 壓縮包不是 DSH 安裝包。 - 退出準備修改的 DSH profile。將該 profile 的
package.json、pnpm-lock.yaml、cordis.yaml(若存在)和上一版 tgz 備份到私有目錄。 - 將 tgz 放在不含空格和 shell 元字符的路徑,例如
C:\DSHPackages(當前 DSH Windows plugin→pnpm 轉發的路徑約束;工作區路徑仍可含空格和中文)。 - 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 驗證真正生效。