What's up, 大家!这是我的第 14 篇原创文章。
三台机器、三个操作系统、一个持续推进的 OpenClaw 项目。Windows 负责写需求、审结果,Ubuntu 虚拟机负责执行和部署,Mac Mini 负责资源密集型任务。问题不是“能不能连起来”,而是怎么让最新需求、最新配置和最新产出稳定地在三端之间流动,而且不会把整个仓库拖进同步泥潭。
我一开始也想偷懒,觉得 Git 或网盘总有一个能直接用。真上手之后才发现,它们解决的是“文件传过去”的问题,不是“多节点协作不翻车”的问题。
| 方案 | 优点 | 在三节点场景里的硬伤 | 结论 |
| Git | 版本可追溯,适合代码协作 | 二进制资源一多,仓库体积和冲突处理都会失控 | 适合代码,不适合直接承担整仓同步 |
| 网盘同步 | 上手简单,适合轻量备份 | 默认全量同步,大文件多时速度和冲突都很难控 | 适合备份,不适合承担主协作链路 |
| Beyond Compare + SFTP | 双向可视化、过滤灵活、人工可确认 | 需要人为定义边界和触发时机 | 当前最稳的落地方案 |
我这套环境里,真正需要跨节点流动的其实只有三类东西:
| 类别 | 典型内容 | 是否需要高频同步 |
| 需求与规划 | 需求说明、执行清单、复盘记录 | 是 |
| 执行与配置 | 脚本、配置、代码、部署结果摘要 | 是 |
| 大体积资源 | 视频、图片、模型缓存、构建产物 | 否 |
核心矛盾不是“怎么同步所有内容”,而是只同步协作链路里真正会影响下一步决策的文本内容。
| 节点 | 角色定位 | 主要职责 | 产出物 |
| Windows 主控端 | 决策与审核中心 | 写需求、做规划、看结果、定下一轮动作 | 文档、任务说明、审核结论 |
| Ubuntu 执行端 | OpenClaw 主执行节点 | 跑部署、做开发、产生日志和中间结果 | 代码、配置、日志、执行结果 |
| Mac Mini 资源端 | 重任务处理节点 | 跑资源密集型任务,生成处理结果 | 推理结果、处理结果、阶段产出 |
| # | 内容类别 | 进入同步的原因 | 大致体量 |
| 1 | 公共参考资料 | 三端都要读取统一约束和背景 | 轻量 |
| 2 | 文章与需求文档 | 决策链路依赖最新版本 | 轻量 |
| 3 | 工作流配置 | 执行逻辑必须一致 | 轻量 |
| 4 | 应用代码 | 执行端和审核端都要看 | 中等 |
| 5 | Skills 定义 | 多节点行为必须同版 | 轻量 |
| 6 | 自动化脚本 | 执行入口和辅助工具要一致 | 轻量 |
| 7 | 项目文档 | 作为执行与复盘上下文 | 轻量 |
# 1. 大体积媒体
*.mp4;*.mov;*.avi;*.mkv
*.mp3;*.wav;*.flac
*.png;*.jpg;*.jpeg;*.gif;*.bmp
# 2. 设计源文件
*.psd;*.ai;*.sketch
# 3. 依赖与缓存
node_modules\
oh_modules\
.gradle\
__pycache__\
# 4. 构建产物与日志
build\
dist\
*.log
# 5. 版本元数据
.git\这一步如果不先做,后面所有“同步提效”都是伪命题。边界没画清楚,工具越自动,出事越快。
这套方案的关键不是某个工具本身,而是它允许我先比较,再决定同步方向。

| # | 操作 | 目标 | 验证点 |
| 1 | 建立 Windows 到执行端的 SFTP 比较会话 | 让主控端能直接比较两边目录差异 | 能看到双侧文件树 |
| 2 | 导入过滤规则 | 只保留轻量、可协作的内容 | 大文件、依赖目录不再出现在比较结果里 |
| 3 | 切到双向同步模式 | 支持双端都有新内容时人工决策 | 会话不再默认单向覆盖 |
| 4 | 先比较再同步 | 逐项确认哪些变更要过 | 每次同步前都有差异列表 |
| 5 | 冲突按规则处理 | 避免同名文件互相覆盖 | 冲突文件有明确去向 |
| 6 | 同步后回到 Windows 审核 | 把结果收口到一个终审节点 | Windows 端拿到最新结果并完成确认 |
| 文件类型 | 优先端 | 原因 | 冲突时动作 |
| 需求文档、文章正文 | Windows | 这些内容主要在主控端定稿 | 以 Windows 版本为主,必要时人工合并 |
| 代码、配置、部署结果 | Ubuntu 执行端 | 执行链路在这里产生真实状态 | 以执行端版本为主,再回传审核 |
| 重任务产出摘要 | Mac Mini | 资源任务在这里完成 | 先回传摘要,再决定是否回收结果 |
| 难判断的脚本 | 无默认优先级 | 小改动最怕误覆盖 | 保留双版本,人工确认后再收敛 |
真正好用的不是“能同步”,而是你每天都知道什么时候该同步、同步完要看什么。
**操作流程:**拉取夜间结果 → 更新最新需求 → 推送执行端 → 阶段回传 → Windows 审核收口
| # | 时机 | 同步方向 | 目的 | 看什么算完成 |
| 1 | 开始工作前 | 执行端 → Windows | 拉回夜间执行结果 | Windows 上能看到最新日志和结果摘要 |
| 2 | 需求改完后 | Windows → 执行端 | 把最新动作传给 OpenClaw | 执行端已经拿到新文档和新配置 |
| 3 | 一个阶段做完后 | 执行端 → Windows | 回传代码、配置和结果 | 主控端能审核阶段产出 |
| 4 | 资源任务结束后 | 资源端 → 执行端/Windows | 把重任务结果回链路 | 执行端能接着消费,Windows 能看摘要 |
| 5 | 下班前 | 双向收口 | 降低次日断片和遗漏 | 三端没有关键文本差异悬而未决 |
我现在的频率大概是一天 4 到 6 次。不是越勤越好,而是每次同步都对应一个明确的协作节点,这样冲突不会堆积,审核也不会失焦。
很多人看到这里会问:既然已经知道同步规则了,为什么不直接上自动监听?
答案很简单:自动监听解决的是触发问题,不解决冲突决策问题。
第二阶段我会做成“监听 + 防抖 + 批量触发”的形态,但现在还没上线,因为下面两个条件还没完全收口:
| 难点 | 为什么麻烦 | 当前处理方式 |
| 防抖 | 短时间内连续改多个文件,不能每改一次就同步一次 | 先手动收一批,再一次同步 |
| 冲突自动决策 | 文档、配置、脚本的优先级不一样 | 先保留人工判断,不冒进自动覆盖 |
from watchdog.events import FileSystemEventHandler
class SyncHandler(FileSystemEventHandler):
def __init__(self, sync_scopes, exclude_rules):
self.sync_scopes = sync_scopes
self.exclude_rules = exclude_rules
def on_modified(self, event):
# 1. 只关心被纳入同步边界的内容
if not self.in_sync_scope(event.src_path):
return
# 2. 命中排除规则则直接跳过
if self.is_excluded(event.src_path):
return
# 3. 进入防抖队列,合并短时间内的多次修改
self.schedule_batch_sync(delay_seconds=5)所以第二阶段的重点从来不是“把监听脚本写出来”,而是把同步边界、冲突优先级、批量触发规则写清楚。
多节点协作里最隐蔽的问题,不是代码没同步,而是约束没同步。Windows 上刚改完一条 Skill 规则,执行端如果还在读旧版本,结果就会出现“同一句命令、三台机器、三种行为”。
我现在的做法是把 Skills 治理成单源:
| 规则 | 做法 | 目的 |
| 规则单源 | 只在 Windows 上改 Skills | 避免多端各自演化 |
| 执行端只读 | 执行端和资源端只消费规则,不写规则 | 保证行为一致 |
| 同步后抽查 | 每次同步后核对关键 Skill 是否同版 | 防止旧约束偷偷残留 |
这一步看起来不起眼,但它决定了多节点是不是“同一个团队”。代码可以晚几分钟同步,规则版本一旦错开,执行结果就会立刻跑偏。
| # | 返工点 | 典型现象 | 更稳的处理方式 |
| 1 | 同步范围没先裁掉 | 网络打满,冲突堆积,大文件拖垮节奏 | 先定纳入边界,再定排除规则 |
| 2 | 把自动同步想得太简单 | 新文件被旧版本覆盖,问题更隐蔽 | 先手动跑稳,再逐步自动化 |
| 3 | 冲突没有默认优先级 | 每次冲突都靠临场判断,效率很差 | 提前约定“文档谁优先、代码谁优先” |
| 4 | Skills 不纳入同步 | 同一命令在不同节点产出不一致 | 规则单源、执行端只读 |
| 5 | 没有固定收口节点 | 结果分散在多台机器上,审核断片 | 最终都回到 Windows 端做终审 |
多节点同步没有银弹,真正有用的是一套可重复的协作秩序。对我这套 OpenClaw 环境来说,当前最稳的答案不是“最自动”,而是边界足够清楚、同步足够克制、决策最终能回到一个主控端。
历史文章,请看这里:
2026-03-17:铲掉重来的勇气:OpenClaw部署验收五步法
2026-03-15:让3个顶级模型协作写代码:OpenClaw多Agent编排实战
2026-03-14:给AI员工划地盘:OpenClaw人机协作边界实战
2026-03-13:我有没有可能是首个公开烹饪龙虾OpenClaw方法的人