dsh-drive-backup:爲 DSH 智能體提供受控的 rclone 備份工具

前言

在 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。

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

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

小夜