OpenClaw 多端同步实战:三台设备自动互通,我的开源方案和踩坑全记录
用 OpenClaw 和 Claude Code 的人越来越多,但很少有人聊过一个实际问题:当你在多台设备上跑 AI Agent 时,Skills、配置、文档怎么同步?这篇文章记录了我搭建三端自动同步系统的完整过程,方案已开源。

目录

用 OpenClaw 和 Claude Code 的人越来越多,但很少有人聊过一个实际问题:当你在多台设备上跑 AI Agent 时,Skills、配置、文档怎么同步?这篇文章记录了我搭建三端自动同步系统的完整过程,方案已开源。
三台设备,互不相通#
最近在 OpenClaw 上做了比较多的尝试,搭了一套三端环境:
- Mac Mini(自购):24 小时开机,跑 OpenClaw Agent、Claude Code、Telegram Bot,充当"云端服务器"
- MacBook Pro:随身携带的主力开发机,日常写代码、做调研、写文档
- iPhone:移动端,碎片时间学习、查资料、通过 Telegram 给 Agent 发指令
三台设备各司其职,看起来很完美。但用了一段时间后,一个越来越严重的痛点浮出水面:三台设备之间的信息完全不互通。
之前我用 Git 分别管理两台 Mac 上的文件。每台机器有自己的本地仓库,偶尔手动 push 和 pull。听起来可以运转,但实际上——
Skills 不互通。 在 Mac Mini 上通过 Telegram 让 Agent 学了一个新 Skill,比如"自动总结 Twitter 长文"。回到 MacBook Pro 上想用这个 Skill,发现根本没有。因为 Skill 文件只存在于 Mac Mini 的 ~/.claude/skills/ 目录下。我得手动去 Mac Mini 上 git add、git commit、git push,再到 MacBook Pro 上 git pull——如果我记得的话。
文档不互通。 在 MacBook Pro 上做了一下午的技术调研,产出了好几份报告。晚上想在 Mac Mini 上让 Agent 基于这些报告做进一步分析,发现远程机器上压根没有这些文件。又是一轮手动 Git 操作。

手机是信息孤岛。 出门在外想查一下之前的调研结论,打开手机——什么都没有。只能等回家打开电脑才能看。
配置漂移。 两台 Mac 上的 Claude Code 设置、自定义命令、Agent 配置,越用越不一样。时间一长,两台机器的能力差异越来越大。
手动 Git 的摩擦力太大。 你忙着写代码的时候不会想着 push,Agent 自动生成文件的时候更不会。手动同步的根本问题是——它需要你一直记着这件事,而人总是会忘的。
这些问题每一个都不致命,但加在一起,每天都在消耗精力。
这篇文章记录了完整的解决过程——从问题分析到方案设计到踩坑记录。整套方案已开源,文末有 GitHub 仓库地址和三步部署指南,开箱即用。
为什么这个问题会越来越普遍#

这不只是我一个人的问题。
最近 OpenClaw 火了。从最初的 Clawd 被 Anthropic 要求改名,到短暂的 Moltbot,再到正式定名 OpenClaw——这个项目两个月拿下 10 万+ GitHub Star,单周访问量突破 200 万。
OpenClaw 做对了一件事:把 AI Agent 的控制权交还给用户。核心理念是 "Your assistant. Your machine. Your rules." ——AI 助手跑在自己的机器上,数据完全掌控在自己手里。
这和 SaaS 模式的 AI 助手有本质区别。ChatGPT、Claude.ai,你的数据全部托管在别人的服务器上。OpenClaw 反过来——它跑在你的机器上,通过 Telegram、WhatsApp、Discord、Slack 这些聊天工具与 AI 交互。
这带来了四个核心价值:
- 数据主权:对话记录、生成的文件、学到的 Skills 全部在本地,不经第三方服务器
- 可定制性:完全开源,可以自定义 Skills、接入自己的工具链、修改底层逻辑
- 持续运行:Agent 24 小时待命,手机发条消息就能唤醒执行任务
- 多模型支持:不绑定单一提供商,已支持 KIMI K2.5、Xiaomi MiMo 等
但也正是因为"自托管",当越来越多人在多台设备上使用 OpenClaw 和 Claude Code 时,多设备之间的数据同步就成了一个绕不开的基础设施问题。
常见方案为什么不够用#
在动手之前,先看了看现有方案:

没有一个能同时满足"实时""自动""有版本历史""支持三端"这四个需求。
所以决定自己搭一套。下面是完整的技术方案,包括架构设计、踩坑记录和性能优化——如果你只想快速上手,可以直接跳到文末的「开源仓库」部分,三步部署。
解决方案:Syncthing + Git 双通道同步#
核心思路:用两条不同的通道同步两类不同的数据。配置文件(Skills、Settings、Commands)走 Git 通道,工作区文件(项目代码、文档、笔记)走 Syncthing P2P 通道。

为什么要同时用 Syncthing 和 Git?#

一句话总结:Syncthing 管"快",Git 管"稳"。 工作区文件用 Syncthing 实时同步,配置文件用 Git 做版本管理和远程备份。
五层架构#


前两层是核心,后三层是保障。下面展开说前两层的实现。
Git 通道:配置怎么同步#
本地 ~/.claude/ 目录下的文件,经过 collect_files 收集(排除 node_modules 等无关内容),通过 .syncignore 过滤敏感文件,最后 Git commit + push 到 GitHub 私有仓库。另一台机器定时 pull 并部署到本地。
核心脚本 sync.sh 七个命令:
sync.sh init
# 初始化同步系统
sync.sh push
# 推送本地配置到远程
sync.sh pull
# 拉取远程配置到本地
sync.sh status
# 查看同步状态
sync.sh
log
# 查看同步日志
sync.sh rollback
# 回滚到指定版本
sync.sh resolve
# 解决冲突
自动化靠 launchd(macOS 后台服务管理器),配了三个常驻服务:
- pull 服务:每五分钟自动拉取远程配置
- watch 服务:fswatch 实时监控本地变更,5 秒防抖后自动 push
- workspace 服务:监控工作区部署状态
机器重启后服务自动恢复。和之前"手动 Git"的本质区别——一旦部署完成,同步完全在后台自动运行,不需要人记着操作。
Syncthing 通道:工作区怎么同步#
两台 Mac 通过设备 ID 配对,共享 ~/claudecode_workspace/ 目录,双向同步模式。配好之后基本不用管——MacBook Pro 上改一个文件,Mac Mini 几秒内自动更新。
还配了两层过滤规则(.stignore + .syncignore),构建产物、敏感文件、运行时文件不会被同步。
第一次配好 Syncthing 看到文件自动出现在另一台 Mac 上的时候,还是挺有成就感的——之前靠手动 Git 同步的痛苦一下子消失了。
iPhone 端:Mobius Sync + Obsidian#
iOS 上没有官方 Syncthing 客户端,但 Mobius Sync 完全兼容 Syncthing 协议。搭配 Obsidian 阅读 Markdown 文件,形成完整的移动端方案。
操作步骤:
- iPhone 安装 Mobius Sync,添加 Mac Mini 的设备 ID
- Obsidian 创建空 Vault(关闭 iCloud 同步)
- Mobius Sync 用 "Pick External Folder" 指向 Obsidian Vault 目录
- Folder ID 和 Mac 端保持一致(
claudecode-workspace)
配置完成后,三台设备通过 Syncthing 形成 P2P 网络,实时同步:

点进设备详情,可以看到 iPhone 和 Mac Mini 通过局域网直连,传输速率很快:

这里有个坑:最开始试着从 Mac Mini 端发共享邀请给 iPhone,结果死活收不到通知——Mobius Sync 的 iOS 推送不太可靠。最后换了思路:从 iPhone 端主动创建文件夹(填入相同的 Folder ID),比等服务端推送靠谱得多。
冲突处理#
两台设备同时改同一个文件怎么办?采用 Last Writer Wins:保留本地、远程备份为 .conflict 文件、记录日志、可选 Telegram 通知。实际使用中冲突概率极低。万一出现:
sync.sh resolve --keep-local
# 保留本地版本
sync.sh resolve --keep-remote
# 保留远程版本
sync.sh resolve --manual
# 手动合并
性能优化:从 78 秒到 2 秒#
sync.sh push 在无变更时竟然要跑 78 秒。排查发现 is_ignored() 函数每次调用都要读 .syncignore 并调 sed 去空格。960 个文件 x 30 行规则 = 约 3 万次子进程创建。
优化方案:启动时一次性预加载忽略规则到 bash 数组,后续匹配纯内存完成。
# 优化后:预加载 + 纯内存匹配
load_ignore_patterns
() {
while
IFS=
read
-r line;
do
line=
"
${line#"
${line%%[![:space:]]*}
"}
"
IGNORE_PATTERNS+=(
"
${line}
"
)
done
<
"
${SYNCIGNORE_FILE}
"
}
is_ignored
() {
for
pattern
in
"
${IGNORE_PATTERNS[@]}
"
;
do
case
"
${path}
"
in
${pattern}
)
return
0 ;;
esac
done
return
1
}
78 秒 → 2 秒,40 倍提升。 本质是减少子进程创建——bash 里每调一次外部命令都要 fork 新进程,开销远比想象的大。
实际使用场景#
方案跑起来之后,日常工作流有了明显变化。
手机随时查文档#
出门在外想查某个 API 的调研结论,掏出手机打开 Obsidian,全文搜索直接找到。不用再等回家开电脑,也不用在微信里翻几天前发给自己的文件。
手机学到新东西,自动同步到电脑#
在外面刷 X(Twitter),看到值得深入学习的技术内容,直接转发到 Telegram。云端 Mac Mini 上的 OpenClaw Agent 收到消息后,自动学习内容并生成新的 Skill。Syncthing 把 Skill 同步到 MacBook Pro。回家打开电脑,新能力已经就绪。
从"看到内容"到"AI 学会技能"到"本地可用",整个链路全自动。
两台 Mac 无缝切换#
客厅 MacBook Pro 写了一半的代码,走到书房,Mac Mini 上已经是最新的。反过来也一样。Syncthing 在后台默默完成一切。

随时审阅 Agent 报告#
前一晚让云端 Agent 跑调研任务,第二天出门路上手机 Obsidian 里直接看到完整报告。标记重点,回到电脑前再展开深入工作。
紧急远程修复#
外出时 Telegram 发现云端 Bot 有问题,直接让 OpenClaw Agent 修。修复后代码通过 Syncthing 同步到所有设备,Telegram 推送确认结果。全程不开电脑。
知识不再被锁在单台设备#
以前 MacBook Pro 上的笔记、调研报告、学习总结,只有坐在这台电脑前才能用。现在三台设备都能访问,随时被 AI Agent 调用、被自己查阅。
实际效果#
先看搭建前后的整体变化:

搭建完成后的实际样子。
iPhone 上只需两个 App——Mobius Sync 负责同步,Obsidian 负责阅读:

同步完成后,Obsidian 中的目录结构和 MacBook Pro 完全一致。工作日志、调研报告、项目文档,随手可查:

最关键的——在手机上直接阅读完整的技术文档,排版、表格、代码块都能正确渲染:

开源仓库和使用方法#
整套方案已开源——openclaw-sync-toolkit,MIT 协议,开箱即用。
仓库地址:github.com/antonailog/openclaw-sync-toolkit
三步部署#
# 1. 克隆
git
clone
https://github.com/antonailog/openclaw-sync-toolkit.git \
~/openclaw-sync-toolkit
# 2. 第一台机器
bash ~/openclaw-sync-toolkit/scripts/setup.sh \
--name macbook-pro \
--remote git@github.com:你的用户名/claude-config-sync.git
# 3. 第二台机器(改个名字就行)
bash ~/openclaw-sync-toolkit/scripts/setup.sh \
--name mac-mini \
--remote git@github.com:你的用户名/claude-config-sync.git
安装脚本自动完成:安装依赖(fswatch、jq、syncthing)→ 克隆配置仓库 → 部署同步脚本 → 生成机器配置 → 首次同步 → 安装 launchd 后台服务。
仓库结构#
openclaw-sync-toolkit/
├── scripts/
│ ├── sync.sh # 核心同步引擎(1200 行)
│ ├── setup.sh # 一键部署
│ ├── deploy.sh # 部署管理
│ ├── monitor.sh # 文件监控
│ └── notify.sh # Telegram 通知
├── config/
│ ├── sync-config.template.json
│ ├── .syncignore
│ └── launchd/ # macOS 后台服务模板
├── docs/
│ └── ARCHITECTURE.md
├── LICENSE # MIT
└── README.md
iPhone 端额外安装 Mobius Sync(App Store)和 Obsidian 即可。仓库 README 有详细配置说明。
写在最后#
折腾这套方案最大的感受:好的工具应该是"设置好就忘掉"的。 三个 launchd 服务和 Syncthing 默默运行,日常完全不需要想"这个文件在哪台电脑上"。
OpenClaw 代表的自托管 Agent 模式正在快速增长。当 AI 助手跑在自己的机器上,多设备同步就是绕不开的基础设施问题。希望这套方案能帮到同样在折腾多端协作的人。
仓库地址再放一次:github.com/antonailog/openclaw-sync-toolkit
Star 一下不迷路。遇到问题直接提 Issue,我会持续维护。
如果你对 AI Agent 工作流、远程开发、多设备协作这些话题有兴趣,关注「阿東的 AI 手记」,后续会持续分享实战经验和开源工具。