前言¶
在 DeepSeek Harness(DSH)裏跑運維類智能體時,常見需求是:把本地目錄同步到雲盤或另一臺存儲,並在動手前先看清狀態、做一次校驗,真正上傳還要有人點頭。若直接把 shell 裏的 rclone 交給模型,路徑和參數容易變成不可控的字符串,誤刪遠端、掃到未授權目錄的風險都更大。
dsh-drive-backup 是社區插件(維護者 ozanstn1-stack,分類 admin-security),在已配置好的 rclone 之上,給 DSH 暴露一小套顯式工具:查看配置、對比本地與遠端、校驗、以及在審批通過後才執行傳輸。目標目錄來自配置白名單,命令以 argv 數組調用 rclone,dry run 不觸發審批,每次真實傳輸寫一行審計日誌。
這是什麼¶
插件全名 dsh-drive-backup,版本 0.1.0,MIT 許可證。一句話定位:面向 DeepSeek Harness 的 rclone 備份工具集——status、verify,以及經審批的、僅針對 allow-list 目標的傳輸。
它不讀寫 rclone 的配置文件,也不接觸憑證;使用前需在本機用 rclone config 配好 remote。目錄頁:https://www.skillhub.cn/plugins/ozanstn1-stack/dsh-drive-backup;源碼:https://github.com/ozanstn1-stack/dsh-drive-backup。
核心功能¶
下面四個工具由插件註冊給智能體,讀寫與審批屬性如下。
| 工具 | 類型 | 作用 |
|---|---|---|
backup_targets |
只讀 | 列出已配置目標:本地路徑、rclone 遠端路徑、mode、timeout、excludes。 |
backup_status |
只讀 | 單個或全部目標的本地大小、遠端大小及遠端最新文件。 |
backup_verify |
只讀 | 對本地與遠端執行 rclone check,報告匹配、差異與樣本。 |
backup_transfer |
需審批 | 對單個目標執行 rclone copy/sync;dryRun: true 無需審批,真實傳輸需宿主批准。 |
傳輸模式分兩種,按目標單獨配置:
copy(默認):上傳新增與變更文件,不會刪除遠端已有文件,適合帶時間戳的備份。sync:鏡像本地目錄;本地不存在的文件會在遠端被刪除,需在目標上顯式選用。
安全模型要點(與 README 一致):僅 allow-list 中的 targets[].id 有效,未知 id 會被拒絕並返回已配置列表;rclone 以可執行文件加參數數組運行,遠端路徑校驗爲相對路徑且禁止 ..;真實傳輸僅在 allowed-once 審批通過時執行,審批缺失或異常則 fail-closed;每次傳輸有超時與輸出上限;每次真實嘗試在審計文件寫入一行 JSON。
安裝與啓用¶
環境要求:DSH >= 0.2.1-rc.4,Node ^22.19.0 || >=24.0.0;rclone 在 PATH 上(或通過配置項指定絕對路徑),且對應 remote 已配置好。
官方安裝步驟如下。安裝後重啓 DSH 進程使插件生效。
dsh plugin --profile web add dsh-drive-backup
systemctl restart dsh-web # or restart your DSH process
在 DSH 配置中爲插件實例增加 id: drive-backup 及 config(remote、targets、verify、safety、audit 等)。下面是一段 README 中的示例,字段含義見下一節表格;請按自己的路徑與 remote 名修改。
- id: drive-backup
config:
remote: grive
targets:
- id: openviking
label: OpenViking memory
local: /root/backups
remotePath: dsh-backups/openviking
mode: copy
timeoutMs: 600000
- id: kod
label: Code and configs
local: /root/backups
remotePath: dsh-backups/kod
mode: copy
excludes: ['*.log', '*.dump']
verify:
sizeOnly: true
safety:
readOnly: false
requireApproval: true
timeoutMs: 120000
maxOutputBytes: 65536
audit:
file: /root/.dsh/logs/drive-backup-audit.log
常用配置項摘要:
| Key | 默認 | 含義 |
|---|---|---|
remote |
grive |
rclone remote 名稱。 |
rclone |
rclone |
rclone 可執行文件名或絕對路徑。 |
targets[].id |
— | 工具使用的穩定 id([a-z0-9_-])。 |
targets[].local |
— | 本地文件或目錄的絕對路徑。 |
targets[].remotePath |
— | remote 根下的相對路徑,不含 ..。 |
targets[].mode |
copy |
copy 或 sync。 |
safety.readOnly |
false |
爲 true 時拒絕 backup_transfer,只讀類工具仍可用。 |
safety.requireApproval |
true |
真實傳輸需宿主審批。 |
audit.file |
<DSH_HOME>/logs/drive-backup-audit.log |
審計日誌路徑。 |
完整字段見 GitHub README 的 Configuration 表。
典型用法¶
README 給出的推薦順序:先看狀態,再 dry run,審批後傳輸,最後校驗。
backup_status → what is local, what is remote, how fresh
backup_transfer {id:"openviking", dryRun:true} → what would be uploaded (no approval)
backup_transfer {id:"openviking"} → approval card → transfer → audit line
backup_verify {id:"openviking"} → "2 files match, 0 differ"
智能體調用時應用配置裏的 id(或 label);真實 backup_transfer 會彈出審批卡片,通過後執行並在 audit.file 追加一行,例如含 tool、target、mode、outcome 等字段的 JSON。
適用場景與注意¶
適合已經在用 DSH、且備份目標固定、希望把 rclone 能力封裝成白名單工具的場景:例如定期把若干本地目錄推到 Google Drive(示例 remote 名 grive)或其他 rclone 支持的 backend,並保留「先看差異、再 dry run、再人工批准、再審計」的流程。
使用前請注意:插件與當前 DSH 進程同權限運行,能讀寫 targets[].local 並在審批通過後改動遠端對應路徑;安裝前應自行審閱源碼與 MIT 許可證。社區目錄 skillhub.cn 爲獨立站點,與 DeepSeek / 幻方無官方從屬關係;DSH 生態理念是「一切皆插件」,本插件是其中一項 admin-security 類擴展。
若僅需只讀排查,可將 safety.readOnly 設爲 true,或只調用 backup_targets、backup_status、backup_verify。對使用 sync 的目標要特別確認:遠端會被刪文件以 mirror 本地。
結尾¶
dsh-drive-backup 把 rclone 備份收成四個邊界清晰的工具,用配置白名單、argv 調用、dry run 與審批、審計日誌降低智能體誤操作面。需要安裝命令與配置字段時以 GitHub README 爲準;插件介紹頁見 skillhub 目錄,源碼與 Issue 見 ozanstn1-stack/dsh-drive-backup。