首页 资讯 下载 教程 Skills 社群

OpenClaw file-transfer 插件:跨设备文件操作

file-transfer 插件概述

OpenClaw v2026.5.4 增强了 file-transfer 插件,新增 4 个工具:

  • file_fetch:从远程节点获取文件
  • dir_list:列出远程目录
  • dir_fetch:批量获取目录文件
  • file_write:写入文件到远程节点

支持二进制文件操作,适合跨设备 Agent 工作流。

为什么需要

多设备工作流

很多场景跨多台设备:

  • Mac + iOS:iPhone 拍照在 Mac 处理
  • Mac + Linux 服务器:本地开发,远程部署
  • 多个 Mac:家里和公司
  • 物联网:树莓派等小设备

之前的痛点:

  • 传文件麻烦(云盘上传下载)
  • Agent 无法直接访问其他设备文件
  • 跨设备工作流碎片化

file-transfer 的解决

让 Agent 像操作本地文件一样操作远程节点的文件

配置 file-transfer

启用插件

# 安装
openclaw plugins install @openclaw/file-transfer

# 启用
openclaw plugins enable file-transfer

配置节点

plugins:
  file-transfer:
    enabled: true
    
    nodes:
      # 远程 Mac
      home-mac:
        host: "home-mac.local"
        port: 18789
        
        # 路径策略:默认拒绝
        allowedPaths:
          - "/Users/shared/openclaw"
          - "/tmp"
        
        # 限制
        maxBytesPerRoundTrip: 16777216  # 16MB
        rateLimit: "100/minute"
      
      # 树莓派
      pi:
        host: "raspberrypi.local"
        allowedPaths:
          - "/home/pi/data"
        maxBytesPerRoundTrip: 8388608  # 8MB

配对节点

每对节点需要建立信任:

# 在第一个节点上
openclaw nodes pair --invite

# 输出邀请码:abc-123-xyz

# 在第二个节点上
openclaw nodes pair --accept abc-123-xyz

4 个核心工具

1. file_fetch

从远程节点获取文件:

用户:获取 home-mac 上 Documents 里的会议纪要

Agent:
[调用 file_fetch]
[node: home-mac]
[path: /Users/me/Documents/meeting-notes.md]

返回文件内容...

2. dir_list

列出远程目录:

用户:home-mac 上 Documents 有哪些文件?

Agent:
[调用 dir_list]
[node: home-mac]
[path: /Users/me/Documents]

返回:
- meeting-notes.md (15 KB)
- project-plan.pdf (245 KB)
- expenses.xlsx (8 KB)
- screenshots/ (目录)

3. dir_fetch

批量获取目录文件:

用户:把 pi 的 sensor-data 目录里的所有 JSON 文件取过来

Agent:
[调用 dir_fetch]
[node: pi]
[path: /home/pi/data/sensor-data]
[pattern: "*.json"]

返回:35 个 JSON 文件
[超过 16MB 限制时自动分批]

4. file_write

写入文件到远程节点:

用户:把生成的报告写到 home-mac 的 Reports 目录

Agent:
[调用 file_write]
[node: home-mac]
[path: /Users/me/Reports/2026-05-report.md]
[content: ...]

返回:成功,已写入 12 KB

安全机制

默认拒绝

每个节点必须显式声明允许的路径

nodes:
  home-mac:
    allowedPaths:
      - "/Users/me/openclaw-shared"
      - "/tmp"
    
    # 没有列出的路径默认拒绝

字节限制

nodes:
  home-mac:
    maxBytesPerRoundTrip: 16777216  # 16MB

防止:

  • 意外大文件传输
  • 资源耗尽
  • 网络拥塞

速率限制

nodes:
  pi:
    rateLimit:
      perMinute: 100
      perHour: 1000

审批门控

敏感操作需要审批:

nodes:
  home-mac:
    approvalRequired:
      - file_write     # 写入需要审批
      - paths:
          - "/Users/me/Documents"  # 这个目录写入需审批

审计日志

plugins:
  file-transfer:
    audit:
      enabled: true
      logFile: "/var/log/openclaw-file-transfer.log"

记录所有操作,便于追溯。

实际应用场景

场景 1:跨设备照片处理

用户:iPhone 拍了一些产品照,处理后放到 Dropbox

Agent:
[file_fetch from iPhone] 拍照文件夹
[本地处理] 调整大小、加水印
[file_write to Mac] Dropbox 同步目录
[通知] 处理完成

场景 2:分布式数据收集

# 多个传感器节点
nodes:
  sensor-1:
    host: "sensor-1.iot"
    allowedPaths: ["/data"]
  
  sensor-2:
    host: "sensor-2.iot"
    allowedPaths: ["/data"]
  
  sensor-3:
    host: "sensor-3.iot"
    allowedPaths: ["/data"]
用户:收集所有传感器今天的数据

Agent:
[dir_fetch from sensor-1]
[dir_fetch from sensor-2]
[dir_fetch from sensor-3]
[本地聚合分析]
[生成报告]

场景 3:远程开发

用户:在远程服务器上有个 Bug,帮我看看

Agent:
[file_fetch] 远程服务器的代码
[本地分析]
[file_write] 修复后的代码到远程
[exec] 远程重启服务
[验证] 修复成功

场景 4:多设备文件同步

# 自动同步配置
cron:
  - schedule: "0 18 * * *"  # 每天 18:00
    flow: daily-sync

# workflows/daily-sync.lobster
steps:
  - id: home-to-cloud
    tool: file-transfer
    action: dir_fetch
    args:
      node: home-mac
      path: "/Users/me/Documents/today"
  
  - id: upload-cloud
    tool: dropbox-upload
    args:
      files: $home-to-cloud.files

性能优化

压缩传输

plugins:
  file-transfer:
    compression:
      enabled: true
      algorithm: "zstd"  # 或 gzip、lz4
      level: 3            # 1-9,平衡速度和压缩率

二进制文件可能效果不明显,文本文件可减少 70%+ 流量。

增量传输

nodes:
  home-mac:
    incremental:
      enabled: true
      cacheDir: "~/.openclaw/file-cache"

只传输变化部分。

并行传输

plugins:
  file-transfer:
    parallel:
      enabled: true
      maxConcurrent: 4

多文件并行传输。

故障排查

节点不可达

openclaw nodes status home-mac

可能原因:

  • 网络不通
  • 节点未运行 OpenClaw
  • 配对失效

路径被拒绝

错误:路径 /Users/me/Private 不在允许列表

修改配置或使用允许的路径。

文件过大

错误:文件 100MB 超过限制 16MB

解决:

  • 分块传输
  • 使用其他工具(rsync、scp)
  • 提高 limit(注意性能)
nodes:
  home-mac:
    maxBytesPerRoundTrip: 67108864  # 64MB

与其他工具对比

对比 SSH/SCP

维度 file-transfer SSH/SCP
Agent 友好 需要封装
安全 多层防护 SSH 密钥
性能 良好 优秀
跨平台 原生支持 通用

file-transfer 不替代 SSH,而是为 Agent 提供更友好的接口。

对比 rsync

  • rsync:批量同步专家
  • file-transfer:单文件操作灵活

可以配合使用:rsync 做大批量同步,file-transfer 做精细操作。

注意事项

  • file-transfer 增强需要 OpenClaw v2026.5.4 或更高版本
  • 配对设备前确保信任
  • 路径策略默认拒绝,仔细配置
  • 16MB 限制可调,但注意性能
  • 不要传敏感数据(如密码文件)
  • 审计日志保留至少 30 天
  • 跨网络(公网)传输考虑加密
  • 大量小文件用 dir_fetch 比循环 file_fetch 更快
  • 配合 Lobster 审批门控保证安全