上周一条 41 万浏览的帖子讲了一件吓人的事:有人的 Grok Bot 电脑被悄悄回滚到了 6~7 周前的旧快照,几周到几个月的工作没了。更要命的是,他的脚本一直在往旧环境里写新数据,新旧混在一起,将近一周后才发现。云电脑是工作台,不是保险箱。

解决办法是给 Bot 的电脑装一个实时备份:开源的点对点同步工具 Syncthing。Bot 每改一个文件,几秒后 Mac 上就有一份。Mac 这边 5 步,Bot 那边一条 Prompt 让它自己装,前后 20 分钟左右。
Syncthing 官网:https://syncthing.net/
第一步:Mac 这边装好 Syncthing
先建一个空文件夹,之后 Bot 电脑上的文件都会落在这里。比如放在”下载”里,叫 syncthing-work。


安装并设成开机自启:
brew install syncthing
brew services start syncthing


然后浏览器打开 http://127.0.0.1:8384,进入管理后台。第一次进来会问要不要发匿名使用报告,点否。右上角”操作”→”显示 ID”,把那一长串 Device ID 复制下来,待会儿要发给 Bot。



第二步:一条 Prompt,让 Grok Bot 自己配好它那边
在 Grok Bot 里建一个专门干这件事的 Bot,下面这段直接复制发给它:
在你的电脑(VM)上装 Syncthing,把整个 /workspace(不排除任何子目录)单向备份到我本地电脑(VM 仅发送,本地仅接收),防止 VM 出事丢数据。每步汇报进展。
【前置】我本地已装好 Syncthing、建好空的同步文件夹,并保持默认开启的"全局发现"和"中继"。
【环境】Debian 13 x86_64;没有 systemd,不装 cron;只能出网、不能入站,不要做端口映射或 UPnP,预期走中继;发现服务器的自签证书属正常。整机重启后进程会停;换新电脑时文件会保留,但软件可能要重装,所以程序和配置都放在 home 目录下。
【步骤】
1. 向我要本地的 Device ID(不需要 IP)。Folder ID 直接用 syncthing-work。确认后再开始。
2. 安装:先确认这台机器上没有 Syncthing 在跑(多个 bot 共用这台电脑),有就先报告。从 GitHub 官方 releases 下载 v2 的 linux-amd64 版到 ~/.local/bin/syncthing,用 `syncthing generate --home=$HOME/.local/state/syncthing` 初始化,GUI/API 只监听 127.0.0.1:8384,API key 从 config.xml 里读。启动后通过 API 完成配置:从 Syncthing 配置里移除自动添加的默认共享文件夹(只删配置,不动硬盘文件),关闭使用统计,把现有的 /workspace 添加为共享文件夹(ID syncthing-work,类型 sendonly,开启文件监听,不开版本控制)。不要删除、移动或清空 /workspace 里的任何文件。
3. 常驻:用 `setsid nohup ~/.local/bin/syncthing serve --home=$HOME/.local/state/syncthing --no-browser >> $HOME/.local/state/syncthing/syncthing.log 2>&1 < /dev/null &` 启动。再建一个每 24 小时运行一次的定时任务,指令里写明路径、启动命令、下载来源和我本地的 Device ID,每次执行:
- 配置目录不在了,就不要重建(会改变 Device ID),直接通知我需要重新配对,然后结束。
- 程序不在了,就重新下载到原路径。
- 进程没在跑或 API 不响应,就拉起来,并确认 API 恢复正常。
- 检查我本地设备:先查 /rest/system/connections,当前在线就算正常;不在线时,查 /rest/stats/device 里它的最后连上时间,超过 5 天就提醒我"本地电脑已超过 5 天没有同步"。
- 正常时保持安静;重启、重装过,修不好的情况(附上报错),或本地超过 5 天没同步,要通知我。
4. 把 VM 的 Device ID 发给我,让我在本地添加这个设备,等我确认后再继续。
5. 在 VM 添加我的设备并共享 syncthing-work。提醒我在本地接受共享时:选那个空文件夹,在"高级"里把类型设为"仅接收",在"文件版本控制"里选"简易版本控制"并保留 10 个版本。等我确认后再继续。
6. 测试:在 VM 新建一个文件,确认本地收到;再删掉它,确认本地也删了,且旧文件进了本地的 .stversions。汇报连接类型(直连还是中继)和延迟。最后提醒我:本地文件夹只当备份用,别往里放东西。
【排错】查 /rest/system/connections 和日志。出现 unknown device,就等两边都加完设备后,pkill 停掉再用第 3 步的命令启动,不要用 API 的 restart(它退出后不会自己重启)。中继拨号有节流,配好后多等几分钟再判断。


这段 Prompt 里有几处是故意这么写的:程序和配置都放 home 目录,是因为 Bot 换新电脑时文件会保留、软件可能要重装,放 home 下守护任务才找得到;配置目录丢了不许重建,是因为重建会换 Device ID,本地那边就对不上了;开装之前先检查有没有别的 Syncthing 在跑,是因为多个 Bot 共用一台电脑,别把别人的进程撞了;不要用 API 的 restart,是因为没有 systemd 的环境下它退出后不会自己起来,同步一停你还不知道。
发出去之后,它会先要你 Mac 的 Device ID,把上一步复制的贴给它。它先检查这台机器没有别的 Syncthing 在跑,然后下载 v2.1.7、校验、启动,用 API 把 /workspace 挂上去(201 个文件约 30 MB,一个都没动),再建了一个每天上午 10 点左右跑一次的”Syncthing 备份守护”例行任务。装完它会把自己电脑的 Device ID 发给你,复制下来。
第三步:两边互相添加设备,接受共享时改三处
Mac 添加 Grok Bot 为远程设备:管理后台右下角”添加远程设备”,设备 ID 粘贴 Bot 给的那串,名字随便起,保存。回去跟 Bot 说一声”我加好了”,它会在它那边把你的 Mac 加进来,把 syncthing-work 共享过来。


管理后台冒出黄色提示:”Grok Bot 想要共享文件夹 workspace(syncthing-work),添加新文件夹?”点”添加”。弹出的对话框里,先别急着保存,三个地方要改:
- “常规”里的文件夹路径改成第一步建的那个 ~/Downloads/syncthing-work,文件夹 ID 别动。路径不改,Syncthing 会在用户目录下另建一个同名文件夹,同步的东西跑到那边去了。
- “文件版本控制”选简易文件版本控制,保留版本数量填 10。误删能找回来靠的就是这个。
- “高级”里文件夹类型选”仅接收”。本地的改动不会传回 Bot。




三处改完再保存,立刻开始拉文件。左边文件夹和右边远程设备都显示绿色”最新”,就配好且同步完成了。


第四步:测一下,重点看误删能不能找回
跟 Bot 说”我全部配置好了”,它会在它那边建一个 syncthing-test.txt,确认本地收到后再删掉。汇报的结果:连接类型是中继,加密 TLS 1.3;删除操作 12.5 秒后同步到本地,其中约 10 秒是文件监听为了攒批变更故意等的,真正传输只用了两三秒;变化通常十几秒内就能到本地。

最关键的一步:在同步文件夹里按 Cmd+Shift+. 显示隐藏文件,进.stversions,那个被删掉的测试文件带着时间戳躺在里面。Bot 那边删了,本地还留着。


几个注意事项
- 本地那个文件夹只当备份用,别往里放东西,也别在里面改文件。它是”仅接收”,你加的改的不会传回去,还会让文件夹显示”本地有改动”。要用文件就复制出来。
- Bot 的指令、记忆、定时任务、技能不在那台电脑上,是存在服务器上的,这套方案备份不到。重要的 Prompt 自己另外存一份。
- 守护任务每天只检查一次,不是实时的。Syncthing 挂了最多隔一天才拉起来。这期间 Bot 改的文件在它那边还在,恢复后会补同步;唯一丢的可能是这一天里电脑正好出事,这是这套方案的薄弱窗口。
- Bot 换了新电脑:home 目录还在,守护任务自己把 Syncthing 拉起来,不用管;home 目录也没了,它会通知你,把 Prompt 再发一遍重新配对。
为什么是单向 + 仅接收 + 版本控制
实时同步有个坑:Bot 那边文件被删了、被回滚了,同步会把这个坏结果原样带到本地。所以加三道保险:Bot 侧设成”仅发送”,本地侧设成”仅接收”,本地不管怎么动都不会传回 Bot;本地开”简易文件版本控制”,保留 10 个版本,Bot 那边删文件、覆盖文件,本地的旧版本会移到.stversions 目录,带时间戳,随时能捞回来;再让 Bot 自己建一个守护任务,每天检查一次 Syncthing 还在不在跑、本地电脑是不是超过 5 天没连上,有问题才通知,没问题不吭声。Bot 的电脑只能出网、不能入站,所以走的是 Syncthing 的中继服务器,数据端到端加密,中继看不到内容。
也有人用每晚 restic 加密备份到 Dropbox、保留 7 天 / 4 周 / 6 月快照的方案,快照稳是稳,但要等第二天。想要 Bot 改完文件这边立刻就有,平时顺手就能打开看,就选实时同步。
总结:Bot 电脑的 /workspace 单向实时备份到 Mac,它改什么,几秒后本地就有;Mac 这边 5 步,Bot 那边一条 Prompt 它自己装,前后 20 分钟;本地”仅接收”+ 保留 10 个历史版本,Bot 那边删了、回滚了,本地都能捞回来;Bot 自己建了每天一次的守护任务,Syncthing 挂了自己拉起,本地 5 天没连上会提醒。最重要的一点:接受共享时三处设置一次改完(路径、版本控制、仅接收),漏掉”仅接收”这套备份就不是单向的了。
Syncthing 官网:https://syncthing.net/