阿東的AI手记
返回文章列表

OpenClaw 多端同步实战:三台设备自动互通,我的开源方案和踩坑全记录

·约 15 分钟·

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

目录
  1. 01三台设备,互不相通
  2. 02为什么这个问题会越来越普遍
  3. 03常见方案为什么不够用
  4. 04解决方案:Syncthing + Git 双通道同步
  5. 为什么要同时用 Syncthing 和 Git?
  6. 五层架构
  7. Git 通道:配置怎么同步
  8. Syncthing 通道:工作区怎么同步
  9. iPhone 端:Mobius Sync + Obsidian
  10. 冲突处理
  11. 性能优化:从 78 秒到 2 秒
  12. 05实际使用场景
  13. 手机随时查文档
  14. 手机学到新东西,自动同步到电脑
  15. 两台 Mac 无缝切换
  16. 随时审阅 Agent 报告
  17. 紧急远程修复
  18. 知识不再被锁在单台设备
  19. 06实际效果
  20. 07开源仓库和使用方法
  21. 三步部署
  22. 仓库结构
  23. 08写在最后
「三端同步,随时随地」示意图:MacBook Pro 经 Syncthing + Git、iPhone 经 Syncthing 与充当云端服务的 Mac Mini 互通

用 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 操作。

VS Code 侧栏里的 claudecode_workspace 工作区目录,包含 .claude、.obsidian、Syncthing 文件夹和工作日志、调研等目录

手机是信息孤岛。 出门在外想查一下之前的调研结论,打开手机——什么都没有。只能等回家打开电脑才能看。

配置漂移。 两台 Mac 上的 Claude Code 设置、自定义命令、Agent 配置,越用越不一样。时间一长,两台机器的能力差异越来越大。

手动 Git 的摩擦力太大。 你忙着写代码的时候不会想着 push,Agent 自动生成文件的时候更不会。手动同步的根本问题是——它需要你一直记着这件事,而人总是会忘的。

这些问题每一个都不致命,但加在一起,每天都在消耗精力。

这篇文章记录了完整的解决过程——从问题分析到方案设计到踩坑记录。整套方案已开源,文末有 GitHub 仓库地址和三步部署指南,开箱即用。


为什么这个问题会越来越普遍#

OpenClaw 官网首页,标语「The AI that actually does things」,下方是用户评价卡片

这不只是我一个人的问题。

最近 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 时,多设备之间的数据同步就成了一个绕不开的基础设施问题。


常见方案为什么不够用#

在动手之前,先看了看现有方案:

表格:对比 iCloud / Google Drive、手动 Git、rsync / scp、Docker 镜像四种同步方案的优点和致命缺陷

没有一个能同时满足"实时""自动""有版本历史""支持三端"这四个需求。

所以决定自己搭一套。下面是完整的技术方案,包括架构设计、踩坑记录和性能优化——如果你只想快速上手,可以直接跳到文末的「开源仓库」部分,三步部署。


解决方案:Syncthing + Git 双通道同步#

核心思路:用两条不同的通道同步两类不同的数据。配置文件(Skills、Settings、Commands)走 Git 通道,工作区文件(项目代码、文档、笔记)走 Syncthing P2P 通道。

双通道架构图:Git 通道同步两台 Mac 的 ~/.claude 配置,Syncthing 通道把工作区实时同步到 Mac Mini 和 iPhone 的 Obsidian

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

表格:从实时同步、版本历史、离线工作、远程备份、二进制文件五项需求对比 Syncthing 与 Git

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

五层架构#

五层架构图,从核心到外围依次是配置同步、工作区同步、部署管理、监控通知、日志审计,右侧列出各层对应文件
表格:五层架构每一层的功能与实现方式,如第一层 Git 每 5 分钟自动推拉、第四层用 fswatch + launchd + Telegram 告警

前两层是核心,后三层是保障。下面展开说前两层的实现。

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 文件,形成完整的移动端方案。

操作步骤:

  1. iPhone 安装 Mobius Sync,添加 Mac Mini 的设备 ID
  2. Obsidian 创建空 Vault(关闭 iCloud 同步)
  3. Mobius Sync 用 "Pick External Folder" 指向 Obsidian Vault 目录
  4. Folder ID 和 Mac 端保持一致(claudecode-workspace)

配置完成后,三台设备通过 Syncthing 形成 P2P 网络,实时同步:

iPhone 上 Mobius Sync 的状态页:文件夹 cc 已同步,本机共 1,818 个文件、约 512 MiB

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

Mobius Sync 的远程设备详情:mac mini 状态为 Up to Date,连接类型 TCP LAN,经局域网直连

这里有个坑:最开始试着从 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 在后台默默完成一切。

三个使用场景流程图:手机转发内容由 Mac Mini 自动生成 Skill、在外用 iPhone Obsidian 查调研报告、本地改代码同步到 Mac Mini 后自动重启服务

随时审阅 Agent 报告#

前一晚让云端 Agent 跑调研任务,第二天出门路上手机 Obsidian 里直接看到完整报告。标记重点,回到电脑前再展开深入工作。

紧急远程修复#

外出时 Telegram 发现云端 Bot 有问题,直接让 OpenClaw Agent 修。修复后代码通过 Syncthing 同步到所有设备,Telegram 推送确认结果。全程不开电脑。

知识不再被锁在单台设备#

以前 MacBook Pro 上的笔记、调研报告、学习总结,只有坐在这台电脑前才能用。现在三台设备都能访问,随时被 AI Agent 调用、被自己查阅。


实际效果#

先看搭建前后的整体变化:

搭建前后对比图:之前三台设备靠手动 Git 或完全不通,之后 Git 每 5 分钟同步配置、Syncthing P2P 实时同步工作区

搭建完成后的实际样子。

iPhone 上只需两个 App——Mobius Sync 负责同步,Obsidian 负责阅读:

iPhone 主屏的「效率」文件夹,里面是文件、Mobius Sync 和 Obsidian 三个 App

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

iPhone 文件 App 中的 Obsidian 目录,下面是同步过来的 cc 和「工作空间」两个文件夹

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

iPhone 的 Obsidian 里打开「Claude Code 三端同步工具」文档,标题、引用块和机器环境表格都正常渲染

开源仓库和使用方法#

整套方案已开源——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 手记」,后续会持续分享实战经验和开源工具。