Lifeboat 是一个为 AI 编程智能体提供故障转移(failover)的开源工具,采用 MIT 许可。它的核心用途是:当你的 AI 编程智能体在任务进行中遇到速率限制、账号封禁或服务中断时,让工作继续下去,而不是戛然而止。
主要能力
- 在主要智能体(默认 Claude Code)上运行任务,并读取每次响应中的“墙”信号:429、529、配额消息、认证失败、503。
- 遇到真正的墙时,把任务交给故障转移链中的下一个智能体,并携带上下文包,使新智能体能够接续工作。
- 当所有云端智能体都不可用时,回退到通过 Ollama 运行的本地模型。本地模型更慢、私有、无需 API 密钥,且不会被封禁。
- 上下文包存放在用户自己拥有的普通文件夹 .lifeboat/ 中,无论哪个提供商锁定你,它都归你所有。
- 内置分类器根据每个智能体的退出码和输出判断结果:ok(完成,停止)、transient(短暂波动,重试同一智能体几次)、rate_limited/banned/outage(真正的墙,移交给下一个智能体)、unavailable(该智能体未安装,跳过)。五秒的网络抖动不会让你离开主智能体,429 会。
- 本地模型自动选择:Lifeboat 读取机器内存,依据 docs/RESEARCH.md 中的规模研究工作,选择一个适合你实际笔记本的编程模型,不会选择机器无法承载的模型。
使用方式
- 目前尚未发布到 npm,需要从仓库安装,安装后会获得全局 lifeboat 命令。
- 指向任意项目即可运行。
- doctor 命令会读取 Mac 的内存并告诉你为实现真正备份需要安装什么。
- 可以强制触发速率限制来观察故障转移过程,无需等待真实限制。
- 故障转移链驱动你已信任的智能体,每个智能体是一个小型适配器,添加新适配器只需一个文件。
- 使用 lifeboat config --init 设置自己的顺序,然后编辑 .lifeboat/config.json。
- 自主性与权限:备份运行是无人值守的,因此必须不停下来询问。默认 Claude Code 以 acceptEdits 模式运行:自行编辑文件,不碰 shell。若任务还需要 shell(如安装依赖或运行测试),可在 .lifeboat/config.json 中给予完全自主权,这对应 aider --yes-always 和 cline --yolo,请仅在信任的项目上使用。
适用场景
- 在单一智能体和单一账号上全天构建,担心某天被切断导致工作中断、没有交接、没有可移植性。
- 需要在不同提供商之间以及本地硬件之间实现韧性,而非账号规避。
限制与边界
- v1 在不同提供商之间以及向本地进行故障转移,但不做同一提供商的多账号轮换,也不会在封禁后创建新账号。官方明确表示该路径违反多数提供商条款,且往往正是导致封禁的原因;这里的韧性指其他提供商和你自己的硬件,不是账号规避,这条线保持不变。
- 与模型路由器的区别:LiteLLM、OpenRouter、Portkey 在智能体不变的情况下更换模型;Claude Code Router 和 Requesty 在单个智能体内部故障转移;Lifeboat 跨整个智能体故障转移,把任务上下文带到新智能体,读取封禁和配额而不只是 HTTP 代码,并最终落到无法被切断的本地模型。
当前可用状态
- Claude Code 作为主智能体可以无头运行真实任务并编辑文件,已端到端验证。
- 故障转移引擎(检测墙、移交、携带上下文包、重试波动、干净耗尽)有测试覆盖。
- 本地回退通过 Ollama 的 OpenAI 兼容 API 通信,有基于桩服务器的测试覆盖。
- Aider 和 OpenCode 适配器运行其文档化的无头命令;安装任一、设置密钥即可加入链中。如果命令或模型有误,Lifeboat 会报告错误并继续,绝不伪造成功。
- 想观察真实的云端到本地交接,可安装 Ollama、拉取模型,然后强制触发限制。
路线图(官方列出)
- 实时视图,展示交接发生的过程。
- 菜单栏指示灯:Claude 上为绿色,本地备份为黄色。
- 上下文包不仅总结任务,还总结到目前为止的差异。
- 更多适配器(Codex、Cline、Gemini)作为即插即用文件。