夜雨聆风学习资料网

ARTICLE · 959746

AI 工具一天故障 5 起之后,我把断供自救方案写成了教程

AI 工具一天故障 5 起之后,我把断供自救方案写成了教程

先把这一周的账摆出来: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 日实测的口径。

相关学习资料