先把这一周的账摆出来:8 月 17 日,GitHub 故障 7 小时 47 分钟,错误率峰值 20%;8 月 20 日,Claude 全线 major 故障 26 分钟,同一天 OpenAI 那边 chatgpt.com 登录挂了 52 分钟、思考模式报错近 3 小时——一天两家合计 5 起。把 Anthropic 状态页最近 35 天的流水拉下来数,是 50 起。
前两篇写这些故障的时候,结尾都是同样三条建议:备胎、监控、断点续跑。这篇把三条变成能照着敲的操作。全套装完,8 美元加半个小时。
第一步:备胎,8 美元
道理一句话说完:故障发生那天再去注册备用工具,等你充完值,故障已经结束了。备胎必须在天晴的时候买好。
我的主力是 Claude Code,备胎选的 Codex,因为它是四款主流 AI 编程工具里入场价最低的:ChatGPT Go 档 8 美元一个月,CLI 本身开源免费。
装它一行命令:
npm install -g @openai/codex一个会白装的坑:包名必须带 @openai/ 前缀。npm 上那个裸的 codex 包是 2012 年的老项目,跟 OpenAI 没有任何关系,装上去不报错,但什么都干不了。
不想碰 npm 的话,官方有一行式安装:Windows 在 PowerShell 里跑 irm https://chatgpt.com/codex/install.ps1 | iex,Mac/Linux 跑 curl -fsSL https://chatgpt.com/codex/install.sh | sh。装完 codex --version 验证,登录直接用 ChatGPT 账号。
平时它就闲着。每月 8 美元买的不是第二个工具,是故障那天你的下限。
第二步:30 来行脚本盯住状态页
出故障时最浪费时间的环节是「怀疑自己」:改配置、重启、翻代码,折腾二十分钟才想起来去看状态页。把顺序反过来,让状态页主动来找你。
懒人版:两家状态页都有 Atom 订阅源,status.claude.com/history.atom 和 status.openai.com/history.atom,塞进任何 RSS 阅读器就完事。
脚本版是我自己在用的。两家的状态页都是 Statuspage 架构,事故流水有公开 JSON 接口(/api/v2/incidents.json),不用登录不用 key。核心逻辑 30 来行:
import json, os, urllib.request FEEDS = { "Claude": "https://status.claude.com/api/v2/incidents.json", "OpenAI": "https://status.openai.com/api/v2/incidents.json", } STATE = ".seen.json" def fetch(url): req = urllib.request.Request(url, headers={"User-Agent": "status-watch"}) return json.loads(urllib.request.urlopen(req, timeout=15).read().decode()) seen = json.load(open(STATE)) if os.path.exists(STATE) else {} first_run = not seen for name, url in FEEDS.items(): for inc in fetch(url).get("incidents", []): iid, resolved = inc["id"], inc.get("resolved_at") line = f'[{name}] {inc.get("impact")} | {inc["name"]} | {"已恢复" if resolved else "进行中"}' if iid not in seen and not first_run: print("新事故 " + line) # 这行换成你的通知方式:弹窗 / 推送 / 群机器人 seen[iid] = "resolved" if resolved else "open" json.dump(seen, open(STATE, "w")) print(f'--- 当前进行中事故 {sum(1 for v in seen.values() if v == "open")} 起 ---')第一次跑只建档不报警,之后每次跑发现新事故 ID 才喊。挂进 Windows 任务计划程序或者 crontab,五分钟一次。我 8 月 21 日下午跑的真实输出是「当前进行中事故 0 起」——本周的事故都已恢复;8 月 20 日那晚如果它在跑,会打出「[Claude] major | Elevated errors on requests to multiple models | 进行中」。
Windows 终端如果中文乱码,先跑一句 chcp 65001。
第三步:把活拆成断了能续的形状
前两步是防御,这一步决定故障真来了你损失多大。26 分钟的故障,对一个跑了两小时的长任务是全损,对拆成十分钟一段的活只是重跑一段。我自己的三个做法:
- 让 AI 把进度写进文件
。跑长活之前,要求它维护一个进度清单(做完一项勾一项),会话断了,新会话读文件接着干,不用从头讲需求。 - git commit 当存档点
。每完成一小块就提交一次,故障砸下来的时候,损失以「块」计,不以「天」计。 - 中间产物落盘
。我每天发文章的流水线,每一步的产出都写成文件。昨天在知乎点发布,第一次点了没反应——因为草稿已自动保存,第二次点直接发出去了。同一个原理。
总账
8 美元月租,半小时装配,换来的是:故障发生 5 分钟内知道(不用怀疑自己),10 分钟内切到备胎(不用现场注册),恢复之后从断点续跑(不用从头再来)。
对面那本账是:单季挣 116 亿美元的服务商,35 天在状态页记了 50 起事故。这套东西赌的不是哪家会挂——是「都会挂」这件事本身。以上命令和接口都是 2026 年 8 月 21 日实测的口径。
夜雨聆风