前言¶
DeepSeek Harness (DSH) 強調插件化與自動化,但在實際使用中,智能體若擁有對文件系統的直接操作權限,極易因誤操作或腳本錯誤導致配置丟失、項目文件被誤刪,甚至破壞運行環境。dsh-safety 插件作爲 DSH 的配套安全 Harness,在工具執行邊界強制執行三層文件策略,核心價值在於攔截破壞性調用並強制要求人工介入批准,確保每一次關鍵操作都處於可審計、可撤銷的狀態。
是什麼¶
這是一個針對 DeepSeek Harness (DSH) 的文件系統安全 Harness。它提供了執行時守護、基於回收站的 safe_delete(支持撤銷)、組合快照與回滾、重啓前校驗等功能。插件以標準 DSH profile bundle 形式提供,同時也包含一個獨立 CLI,具備零運行時依賴的特性。
核心功能¶
執行時守護¶
插件在破壞性調用運行前進行攔截,核心規則包括:
* 遞歸刪除攔截:默認拒絕 rm -r/-rf、Remove-Item -Recurse 等遞歸刪除命令,強制通過 safe_delete 通道。
* 受保護路徑攔截:對 package.json、cordis.patch.yml、lockfiles、node_modules、部署目錄等關鍵路徑的 write/edit 操作進行阻斷。
* 代碼掃描:不僅攔截文件系統 API,還會掃描 run_code 代碼體,防止通過代碼執行隱藏 fs.rmSync 等破壞性操作。
* 變量引用攔截:攔截如 Remove-Item "$env:USERPROFILE..." 這類變量展開後的路徑刪除。
用戶門控批准系統¶
模型無法自行批准破壞性操作,必須經過人工確認。
* safety_ask:模型調用此工具,傳入結構化參數(path, kind, what, why, consequence, alternative),創建一個帶有系統計算後果的批准請求,返回 ID。
* 人工介入:模型需提示用戶運行 dsh-safety allow <id>。
* 機制限制:批准是一次性的、有時限的,通過原子鎖在進程間同步。模型自身無法設置 force:true 來通過驗證。
安全刪除與撤銷¶
safe_delete:唯一的批准刪除通道。支持preview:true預覽刪除內容,拒絕刪除根目錄或插件自身狀態目錄。- 撤銷:刪除操作將文件移至回收站,可通過
safety_undo恢復。 - 審計:每次刪除都會被記錄在日誌中。
組合快照與回滾¶
safety_snapshot:保存整個插件組合(manifests、patches、lockfiles、package.json 等),計算 SHA-256 哈希。safety_restore:將環境回滾至上一個已知良好狀態。回滾前會備份當前文件,確保回滾失敗不會導致環境處於半損壞狀態。- 安全過濾:默認排除包含憑證的文件。
重啓前校驗¶
safety_check:在 DSH 重啓前執行,檢查 UTF-8 編碼、檢測亂碼(導致無法打開的錯誤)、JSON 解析錯誤以及重複的插件 ID。
審計日誌¶
通過 safety_journal 或 safety_status,可以查詢所有被攔截、批准、刪除、快照和回滾的操作記錄。
安裝與啓用¶
該插件以標準 DSH profile bundle 形式提供,同時也作爲 npm 包 @suagr_xl/dsh-safety 發佈。安裝後,它會在 DSH 啓動時自動作爲插件加載,接管文件系統操作。
典型用法¶
用戶批准流程¶
- 模型檢測到需要刪除文件,調用
safety_ask並返回 ID。 - 模型提示用戶:”請批准刪除:dsh-safety allow
“。 - 用戶在終端執行
dsh-safety allow <id>。 - 插件記錄批准並放行。
撤銷刪除¶
# 恢復最近一次安全刪除的文件
dsh-safety undo
快照與回滾¶
# 創建當前配置快照
dsh-safety snapshot
# 恢復到上一次快照
dsh-safety restore
檢查環境¶
# 檢查配置完整性及潛在錯誤
dsh-safety check
適用場景與注意¶
- 環境要求:需要 Node.js 版本 >= 22。
- 依賴:零運行時依賴,僅依賴 Node.js 環境。
- 權限風險:插件以當前 DSH 進程的權限運行,請確保 DSH 進程權限合理。
- 安全原則:插件默認排除包含憑證的文件,但建議在部署前檢查源碼與許可證。
- 獨立 CLI:即使 DSH 無法啓動,
dsh-safetyCLI 依然可用,可用於緊急恢復或審計。
總結¶
dsh-safety 通過在執行時攔截、強制人工批准和提供快照回滾能力,爲 DSH 插件開發和使用提供了堅實的安全基座。它將生產環境中的事故教訓轉化爲強制性的機制,而非文檔說明。