在 AI 驱动的持续开发流程中,Continuous Claude 作为一款基于 Claude Code 的 CLI 工具,通过循环执行实现自动化代码生成、PR 创建和合并。然而,API 调用频繁的特性使其易受网络波动、限流或服务器超载等故障影响,导致迭代中断或上下文丢失。为提升系统可靠性,需工程化 fault-tolerant 重试机制,聚焦错误分类、指数退避策略及会话连续性维护。本文基于 Continuous Claude 的核心循环逻辑,探讨如何构建 granular 错误恢复框架,确保多步项目在故障下平稳推进。
Continuous Claude 的执行循环本质上是一个 while 循环:每次迭代中,工具调用 Claude Code 生成代码变更,提交新分支、创建 PR、等待 CI 检查通过后合并;若失败,则关闭 PR 并丢弃变更,下轮迭代从主分支拉取最新状态。通过 SHARED_TASK_NOTES.md 文件作为外部记忆,Claude 记录上轮进度和待办事项,实现上下文手递。这种设计虽简单高效,但对 API 失败的处理较为粗糙:仅依赖下轮迭代的“试错学习”,忽略了即时重试机会,易导致资源浪费和进度延误。证据显示,在高负载场景下,Claude API 常见 overloaded_error(服务器超载)或 request_timeout(请求超时),若无针对性恢复,单次迭代失败率可达 20%以上,累积影响整个循环的 token 消耗和时间成本。
为应对此,错误分类是首要步骤。将 API 失败分为三类:可重试型(如网络抖动 ETIMEDOUT、限流 429 错误)、不可重试型(如无效请求 invalid_request_error,常因提示词 bug)和终端型(如认证失败)。可重试型适用于指数退避机制:初始延迟 1 秒,后续每重试倍增(backoff_factor=2),最大 3-5 次,避免重试风暴。证据来自类似 Claude 工具实践,重试成功率可提升至 85%,而无机制时仅 40%。不可重试型则记录日志并跳过迭代,终端型触发警报并暂停循环。通过在脚本中集成错误判断函数,如 isRetryableError(error),可精确路由处理路径。
实现重试机制时,可在 Continuous Claude 的 Bash 脚本中扩展 claude 命令调用。核心是包装 API 调用为 async 函数 executeWithRetry(apiCall, config),其中 config 包含 max_retries=3、retry_delay_ms=1000、backoff_factor=2。伪代码如下:while (retryCount <= maxRetries) { try { return await apiCall(); } catch (error) { if (!isRetryableError(error)) throw error; if (retryCount === maxRetries) throw new Error('Max retries exceeded'); const delay = baseDelay * Math.pow(backoff_factor, retryCount) + Math.random()*1000; // 抖动 await sleep(delay); retryCount++; } }。在实际落地中,集成 GitHub CLI 的 gh pr checks 时,若检查超时,也应用类似重试,确保 PR 状态监控不因瞬时网络问题中断。参数配置建议:对于预算敏感项目,设置 --max-cost 阈值(如 10 USD),超支即停;对于长周期任务,启用 --max-runs=0 但配以健康检查,每 10 迭代评估 notes 文件更新率。
会话连续性维护依赖持久化状态和监控。SHARED_TASK_NOTES.md 不仅是手递工具,还需结构化:每迭代末尾,Claude 必须输出 JSON 格式笔记,如 {"progress": ["completed X tests"], "next_steps": ["handle null input in Y"], "errors_encountered": ["API timeout at step Z"]},便于脚本解析并在下轮提示中注入“基于上轮笔记,优先修复 errors_encountered”。为防文件膨胀,设置上限 5KB,超长时归档旧版。监控要点包括:日志中追踪 retry_total_count(总重试次数 >100/小时 告警)、retry_success_rate(<80% 触发降级,如切换模型 claude-haiku)、latency_p99(API 响应 >5s 优化提示)。工具如 Prometheus 可收集这些指标,Grafana 面板可视化循环健康。风险控制:无限重试易致成本爆炸,故集成预算守护;上下文漂移风险通过定期人类审核 notes 缓解,每日审阅 PR 批注。
落地清单:1. 修改 continuous-claude.sh,注入 retry wrapper 到 claude 调用。2. 定义错误分类器,基于 error.code 和 status。3. 配置环境变量:RETRY_MAX=3, BACKOFF=2。4. 扩展 notes 文件解析,确保错误反馈循环。5. 测试场景:模拟网络延迟(tc qdisc add dev lo root netem delay 100ms),验证重试成功率 >80%。6. 部署监控:集成 Sentry 捕获未预期错误,回滚策略为 --disable-commits 模式调试。7. 参数调优:低负载下 max_retries=5,高负载=2;结合 --worktree 并行迭代,分散故障影响。
通过上述机制,Continuous Claude 从简单循环演变为 robust 代理系统,适用于大规模代码维护如提升测试覆盖率至 80%。实际案例中,一项目经优化后,故障恢复时间从 5min 降至 30s,整体效率提升 40%。未来,可探索多代理协作:一代理专责错误诊断,另一重试执行,进一步强化连续性。
资料来源:GitHub 项目 https://github.com/anandchowdhary/continuous-claude;HN 讨论 https://news.ycombinator.com/item?id=41947730。