#0107 你的 AI 管家跑在一台机器上?它比你想的脆弱得多
type
status
date
slug
summary
tags
category
icon
password
你的 AI 管家跑在一台机器上?它比你想的脆弱得多
你花了几周时间,精心搭建了一套个人 AI 系统。你的 AI Agent 系统跑在一台本地机器上,几十个定时任务自动处理各种工作。一切井井有条,你甚至有点得意——这不就是未来的工作方式吗?
直到有一天,Mac Mini 的电源适配器坏了。
然后你发现:所有定时任务停了,没有人通知你,你甚至不知道它什么时候停的。邮件没人处理,日报没有生成,备份中断,而你浑然不觉。
这不是假设。这是每个本地部署 AI Agent 系统的人都面对的风险。
先搞清楚:你有多少个"单点"
所谓单点故障,就是整个系统里,坏掉一个点就全盘崩溃的地方。大部分个人 AI 系统,单点故障多到吓人:
硬件层面
- 只有一台物理机器,硬盘挂了就全完
- 电源、散热、内存,任何一个硬件故障都是致命的
- Mac Mini 没有冗余电源,NUC 也一样
网络层面
- 家里断网,所有依赖外部 API 的任务全部失败
- 路由器重启、ISP 故障、DNS 污染,都会中断服务
- 如果你用了 DDNS 或内网穿透,又多了一层脆弱性
软件层面
- macOS 自动更新重启,cron job 全部中断
- OpenClaw 进程崩溃,没有自动重启机制
- Node.js 内存泄漏,跑几天就卡死
数据层面
- API key 只存在本地,丢了就得重新申请
- 配置文件没有远程备份
- 聊天记录、memory 文件、自定义脚本——都是独一份
举个真实场景:一台 Mac Mini 跑着 OpenClaw,几十个 cron job 覆盖了日常运营的方方面面。Git 每日备份解决了代码和配置的版本控制,但——没有任何外部监控。如果这台机器半夜挂了,第二天早上才会发现"怎么今天没收到日报"。
这个发现让我们出了一身冷汗。
P0:今天就做——给你的系统装一个"心跳"
最紧急的事情只有一件:你得知道你的机器还活着。
这里的关键词是"外部监控"。不是在 Mac Mini 上跑一个脚本检查自己——机器都挂了,脚本还怎么跑?你需要的是一个外部的、独立的服务,它期待你的机器定期报到,如果没收到报到,就给你发警报。
这叫"反向 ping"模式,也叫 Dead Man's Switch。原理很简单:
- 你的机器每 5 分钟向一个外部服务发一个信号:"我还活着"
- 如果外部服务超过 10 分钟没收到信号,就给你发邮件、短信或 Slack 通知
- 你不需要公网 IP,不需要开放端口,因为是你的机器主动往外发
Healthchecks.io 是做这件事最好的免费工具。免费版支持 20 个检查点,对个人用户绰绰有余。
💡 提示词:设置 Healthchecks.io 心跳监控
帮我在 Healthchecks.io 上注册一个免费账号,创建一个名为 "openclaw-heartbeat" 的检查项,设置 period 为 5 分钟,grace period 为 10 分钟。然后在我的 Mac 上创建一个 cron job,每 5 分钟用 curl 向这个检查项的 ping URL 发一个 GET 请求。同时配置通知渠道,让检查失败时发邮件给我。
为什么这是 P0?因为没有监控的系统就是薛定谔的系统——你不打开箱子看,永远不知道它是死是活。而等你发现的时候,可能已经停了 12 个小时。
如果你想更进一步,可以设置多个心跳检查点:一个检查机器是否在线,一个检查 OpenClaw 进程是否存活,一个检查关键 cron job 是否正常执行。
💡 提示词:设置 OpenClaw 进程级心跳
帮我写一个 shell 脚本,检查 OpenClaw 的 gateway 进程是否在运行(用 pgrep 或 ps 检查),如果在运行就 curl ping Healthchecks.io 的一个专用 URL,如果没在运行就 curl ping 这个 URL 的 /fail 端点。把这个脚本加到 cron,每 5 分钟执行一次。
P1:这周做——确保数据不会随硬盘一起消失
监控解决的是"知道出了问题",备份解决的是"出了问题能恢复"。
你需要备份三类东西:
第一类:代码和配置(用 Git)
如果你已经在用 Git 管理 workspace,好消息是你已经做对了一半。但"一半"的意思是——你确认过 git push 真的在执行吗?
💡 提示词:检查 Git 备份状态
帮我检查当前 workspace 的 git remote 配置,确认有一个远程仓库(GitHub 或 GitLab)。然后检查最近 7 天的 git log,确认每天都有 push 记录。如果发现某天没有 push,帮我排查原因。
很多人设了自动 commit,但忘了 push。本地 commit 在硬盘挂掉的时候一文不值。
第二类:敏感数据(加密后上云)
API key、token、.env 文件——这些东西通常不会放进 Git(也不应该放)。但如果只存在本地,丢了就得一个个重新申请,有些甚至找不回来。
💡 提示词:备份敏感配置到加密云存储
帮我整理当前系统中所有的 API key 和敏感配置文件(.env 文件、token 文件等),列一个清单。然后帮我写一个脚本,把这些文件打包、用 GPG 对称加密,上传到 iCloud Drive 或 S3。设置 cron 每周执行一次。加密密码让我手动输入,不要写在脚本里。
第三类:运行状态和数据
这包括 memory 文件、聊天历史、自定义脚本、cron 任务列表等。这些东西零散分布在各个目录,最容易被遗忘。
💡 提示词:导出完整系统状态清单
帮我生成当前系统的完整状态清单,包括:所有 cron job 列表及其执行命令、所有 OpenClaw 配置、已安装的 npm 全局包、Homebrew 安装的工具列表、系统环境变量中的关键配置。把这个清单保存为一个文件,加入 Git 版本控制。
P2:这个月做——写一份"从零恢复"手册
备份再完美,如果恢复的时候手忙脚乱,也白搭。
你需要一份 DISASTER-RECOVERY.md,一份假设你面前是一台全新的机器、从零开始恢复全部功能的操作手册。目标是2 小时内恢复全部服务。
这份手册应该包括:
阶段一:基础环境(30 分钟)
- 安装 Homebrew、Node.js、Git
- 配置 SSH key,连接 GitHub
- 克隆 workspace 仓库
阶段二:恢复 OpenClaw(30 分钟)
- 安装 OpenClaw
- 恢复配置文件(从加密备份解密)
- 配置 API key(从备份清单逐一填入)
- 启动 gateway,验证基本功能
阶段三:恢复自动化(30 分钟)
- 重建所有 cron job
- 验证每个 cron job 的执行
- 恢复心跳监控
- 确认通知渠道正常
阶段四:验证(30 分钟)
- 手动触发几个关键任务,确认输出正确
- 检查日志,确认没有报错
- 通知相关人员系统已恢复
💡 提示词:生成灾难恢复手册
帮我写一份 DISASTER-RECOVERY.md 文件,假设场景是:当前机器完全损坏,我拿到一台全新的 Mac Mini,需要从零恢复所有 OpenClaw 服务。请根据当前系统的实际配置(cron job 列表、安装的工具、API key 清单等)生成具体的恢复步骤。每个步骤要具体到可以直接执行,目标是 2 小时内恢复全部功能。
这份手册写完之后,一定要做一次演练。找个周末,假装机器挂了,照着手册走一遍。你会发现很多遗漏——某个 API key 忘了备份,某个工具忘了列在清单里,某个配置文件路径写错了。
演练发现的问题,更新回手册。这份手册是活的,每次系统有变更都要同步更新。
进阶:如果你想更稳
以上三个优先级做完,你的系统已经从"裸奔"变成了"穿了盔甲"。但如果你想进一步,还有两个方向:
方向一:多机热备
买一台便宜的 VPS(每月几十块),跑一个最小化的 OpenClaw 实例。平时它什么都不做,只是作为备用。主机挂了,手动切换到 VPS,至少关键任务不会中断。
这不需要完全复制——只要能跑最关键的 5-10 个 cron job 就够了。
方向二:Docker 化
把整个 OpenClaw 环境打包成 Docker 镜像。好处是恢复的时候不用一步步安装环境,pull 一个镜像就能跑。迁移到新机器、新系统都很方便。
💡 提示词:Docker 化 OpenClaw 环境
帮我为当前的 OpenClaw 环境创建一个 Dockerfile,包含所有依赖(Node.js、必要的 npm 包、系统工具)。再写一个 docker-compose.yml,把配置文件和数据目录挂载为 volume。确保容器启动后 OpenClaw gateway 自动运行。
不过说实话,对大部分个人用户来说,P0 到 P2 已经足够了。别让完美主义阻碍你迈出第一步。
最后说两句
搭建 AI Agent 系统很兴奋,调 prompt 很有成就感,加新功能停不下来。但灾备这种"无聊"的事情,大家总是往后拖。
很多人都是这样——跑了一段时间才意识到,整套 AI 系统挂在一台机器上,没有任何外部监控。如果那台机器在半夜挂了,可能到第二天下午才发现。
现在回头看,最值得的 30 分钟就是设置 Healthchecks.io。一个免费服务,一条 cron 命令,换来的是"机器挂了 10 分钟内就能知道"的安心感。
所以,别等到真出事了才后悔。今天花 30 分钟,把 P0 做了。
你的 AI 管家 7×24 小时为你工作,但没人替它值班。除非你现在安排一个。
Loading...