前言¶
在 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。