NAS Agent Sync — Synology File Storage for OpenClaw Agents
Centralize file storage across your multi-agent team using a Synology NAS (or any SSH-accessible storage). One agent acts as File Master — all others route file requests through it.
The Problem
Multi-agent setups generate files across multiple workspaces. Without centralized storage:
- - Files get lost between agent sessions
- No backup strategy
- Agents duplicate work
- No single source of truth
The Solution
Designate one agent as File Master. All file operations go through this agent via sessions_send. The File Master manages:
- - SSH connection to NAS
- Folder structure per agent
- File storage and retrieval
- Cross-agent file sharing
Architecture
CODEBLOCK0
Setup
1. NAS Prerequisites
- - Synology NAS (any model) or any Linux server with SSH
- SSH access with key-based auth
- VPN or Tailnet (recommended) for secure remote access
2. Create Folder Structure
CODEBLOCK1
3. Configure File Master Agent
Add to your File Master agent's AGENTS.md:
CODEBLOCK2
4. Configure Other Agents
Add to each agent's AGENTS.md:
CODEBLOCK3
NAS Folder Structure (Recommended)
CODEBLOCK4
SSH via VPN/Tailnet (Recommended)
CODEBLOCK5
Security
- - ✅ SSH key-based auth (no passwords in configs)
- ✅ VPN/Tailnet for encrypted tunnel (no port forwarding needed)
- ✅ File Master pattern limits SSH access to one agent
- ✅ Other agents never get SSH credentials
- ❌ Never store SSH keys in agent SOUL.md or memory files
Why File Master Pattern?
- 1. Security: Only one agent has NAS credentials
- Consistency: Single point of truth for file locations
- Audit trail: All file ops logged through one agent
- Simplicity: Other agents don't need to know SSH commands
Backup Strategy
Daily Backup Cron (via OpenClaw)
Set up a cron job that backs up agent workspaces to NAS:
CODEBLOCK6
Manual Backup Command
CODEBLOCK7
Troubleshooting
SSH connection refused:
→ Check VPN/Tailnet status — is NAS online and connected?
→ Verify SSH service running on NAS (Synology: DSM → Control Panel → Terminal & SNMP)
Permission denied:
→ SSH key not added: ssh-copy-id user@nas-ip
→ NAS home folder not enabled (Synology: DSM → User → Advanced → Enable home service)
Slow transfers:
→ Use direct VPN connection (not relayed)
→ Consider compression: INLINECODE4
Compatible NAS Models
- - ✅ Synology (any model with DSM 7+)
- ✅ QNAP (QTS 5+)
- ✅ TrueNAS / FreeNAS
- ✅ Any Linux server with SSH access
- ✅ Raspberry Pi with external storage
Changelog
v1.1.0
- - Removed all specific agent/setup references
- Generalized folder structure and examples
- Added backup strategy with cron
v1.0.0
技能名称:nas-agent-sync
详细描述:
NAS Agent Sync — 面向 OpenClaw 代理的 Synology 文件存储
使用 Synology NAS(或任何可通过 SSH 访问的存储设备)集中管理多代理团队的文件存储。一个代理作为文件主控,其他所有代理通过它路由文件请求。
问题
多代理设置会在多个工作区生成文件。如果没有集中存储:
- - 文件会在代理会话之间丢失
- 缺乏备份策略
- 代理重复工作
- 没有单一事实来源
解决方案
指定一个代理作为文件主控。所有文件操作通过 sessions_send 经由该代理进行。文件主控管理:
- - 与 NAS 的 SSH 连接
- 每个代理的文件夹结构
- 文件存储与检索
- 跨代理文件共享
架构
┌──────────┐ sessions_send ┌────────────┐ SSH ┌─────────┐
│ 代理 A │ ──────────────────► │ 文件主控 │ ──────────► │ NAS │
│ (财务) │ 存储 invoice.pdf │ (技术主管) │ │ │
└──────────┘ └────────────┘ └─────────┘
│
┌──────────┐ sessions_send │ SSH
│ 代理 B │ ──────────────────► │
│ (销售) │ 获取销售报告 ▼
└──────────┘ ┌─────────────┐
│ _agents/ │
│ ├── agent-a/ │
│ ├── agent-b/ │
│ ├── agent-c/ │
│ └── _shared/ │
└─────────────┘
设置
1. NAS 前提条件
- - Synology NAS(任何型号)或任何支持 SSH 的 Linux 服务器
- 基于密钥认证的 SSH 访问
- 建议使用 VPN 或 Tailnet 进行安全的远程访问
2. 创建文件夹结构
bash
SSH_HOST=user@your-nas-ip
创建代理文件夹(自定义代理名称以匹配您的团队)
ssh $SSH
HOST mkdir -p ~/agents/{coordinator,techops,finance,sales,marketing}
创建共享文件夹
ssh $SSH
HOST mkdir -p ~/shared/{config,templates}
创建代理目录文件
ssh $SSH
HOST cat > ~/shared/config/agent-directory.json << EOF
{
agents: {
coordinator: { role: 协调员, path: ~/_agents/coordinator/ },
techops: { role: 文件主控, path: ~/_agents/techops/ },
finance: { role: 财务, path: ~/_agents/finance/ }
},
shared: ~/_shared/,
basePath: ~/
}
EOF
3. 配置文件主控代理
将以下内容添加到文件主控代理的 AGENTS.md 中:
markdown
文件主控 — 传入请求
当其他代理通过 sessions_send 发送文件请求时:
存储文件:
ssh USER@NAS-IP mkdir -p ~/_agents/[agent]/[subfolder]/
在此处复制/创建文件
检索文件:
ssh USER@NAS-IP cat ~/_agents/[agent]/[file]
将内容发送回请求代理
确认回复:
sessions_send(sessionKey=agent:[requester]:main, message=完成!文件位于 [path])
4. 配置其他代理
将以下内容添加到每个代理的 AGENTS.md 中:
markdown
文件操作 → 文件主控
我不直接访问文件。所有文件操作都通过文件主控进行:
sessions_send(sessionKey=agent:techops:main, message=存储:[详细信息])
sessions_send(sessionKey=agent:techops:main, message=检索:[路径])
NAS 文件夹结构(推荐)
~/
├── _agents/
│ ├── coordinator/ # 协调员文件
│ │ ├── journal/ # 每日日志
│ │ └── tracking/ # 任务跟踪
│ ├── techops/ # 技术文档、脚本
│ │ ├── scripts/
│ │ └── configs/
│ ├── finance/ # 财务
│ │ ├── invoices/
│ │ ├── contracts/
│ │ └── reports/
│ ├── sales/ # 销售
│ │ ├── leads/
│ │ └── proposals/
│ └── [your-agent]/ # 每个代理的存储
├── _shared/
│ ├── config/ # 共享配置
│ │ └── agent-directory.json
│ └── templates/ # 共享模板
└── _backups/
└── memory/ # 内存文件备份
通过 VPN/Tailnet 进行 SSH(推荐)
bash
通过安全隧道 IP 连接(例如 WireGuard、ZeroTier 或类似工具)
SSH_HOST=user@10.x.x.x # 您的 VPN/Tailnet IP
测试连接
ssh $SSH_HOST echo NAS 已连接!
安全性
- - ✅ 基于 SSH 密钥认证(配置中无密码)
- ✅ VPN/Tailnet 用于加密隧道(无需端口转发)
- ✅ 文件主控模式将 SSH 访问限制为一个代理
- ✅ 其他代理永远不会获得 SSH 凭据
- ❌ 切勿在代理的 SOUL.md 或内存文件中存储 SSH 密钥
为什么采用文件主控模式?
- 1. 安全性:只有一个代理拥有 NAS 凭据
- 一致性:文件位置的单一事实来源
- 审计追踪:所有文件操作通过一个代理记录
- 简单性:其他代理无需了解 SSH 命令
备份策略
每日备份 Cron(通过 OpenClaw)
设置一个 cron 作业,将代理工作区备份到 NAS:
json5
// Cron 作业配置
{
schedule: { kind: cron, expr: 0 3 *, tz: UTC },
payload: {
kind: agentTurn,
message: 将所有代理工作区备份到 NAS。对每个代理:将工作区 memory/ 文件夹 rsync 到 NAS _agents/{agent}/memory-backup/。报告任何失败。
},
sessionTarget: isolated
}
手动备份命令
bash
备份特定代理
rsync -avz ~/.openclaw/workspace-finance/memory/ user@nas-ip:~/_agents/finance/memory-backup/
备份所有代理(根据您的团队自定义列表)
for agent in coordinator techops finance sales marketing; do
rsync -avz ~/.openclaw/workspace-$agent/memory/ user@nas-ip:~/_agents/$agent/memory-backup/
done
故障排除
SSH 连接被拒绝:
→ 检查 VPN/Tailnet 状态 — NAS 是否在线并已连接?
→ 验证 NAS 上 SSH 服务是否运行(Synology:DSM → 控制面板 → 终端和 SNMP)
权限被拒绝:
→ SSH 密钥未添加:ssh-copy-id user@nas-ip
→ NAS 主文件夹未启用(Synology:DSM → 用户 → 高级 → 启用主文件夹服务)
传输缓慢:
→ 使用直接 VPN 连接(非中继)
→ 考虑压缩:rsync -avz --compress
兼容的 NAS 型号
- - ✅ Synology(任何运行 DSM 7+ 的型号)
- ✅ QNAP(QTS 5+)
- ✅ TrueNAS / FreeNAS
- ✅ 任何支持 SSH 访问的 Linux 服务器
- ✅ 带外部存储的 Raspberry Pi
更新日志
v1.1.0
- - 移除了所有特定的代理/设置引用
- 泛化了文件夹结构和示例
- 添加了带 cron 的备份策略
v1.0.0