ralph-claude-code
Claude Code 自动驾驶循环框架,让 AI 编程助手自主完成项目开发迭代
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
Claude Code 自动驾驶循环框架,让 AI 编程助手自主完成项目开发迭代
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
PROMPT.md 文件,明确当前项目的需求和目标2. 执行 Claude Code:以当前上下文和优先级运行 Claude Code,让 AI 完成具体编码工作3. 追踪进度:更新任务清单,日志记录执行结果4. 评估完成度:检查退出条件,寻找项目完成信号5. 循环或退出:如果还没完成,继续回到第1步;否则优雅退出这个循环看起来简单,但最关键的技术难点在于:如何让 AI 准确判断"项目已经完成了",而不是"今天写得差不多了先休息一下"。Ralph 采用双重条件检测来确保这一点:既需要至少 2 个完成度指标(通过自然语言模式识别),又需要 Claude 明确发出 EXIT_SIGNAL: true 信号——两个条件必须同时满足,才能真正退出循环。这有效防止了 AI 过早"躺平"的问题。## 安全保障:不会失控的 AI 开发机器人纯自动驾驶听起来很美好,但现实中的 AI 并不可靠——它可能遇到 API 超限、陷入死循环、产生异常错误,甚至在某些罕见情况下"跑偏"到与项目无关的方向。Ralph 为此设计了三层安全防护机制:第一层:熔断器(Circuit Breaker)。Ralph 内置了智能熔断器模块(lib/circuit_breaker.sh),当检测到代码变更停滞、重复错误模式、或 API 连续失败时,会强制中断循环。这就像电梯的过载保护——当检测到异常状况时,第一时间让电梯停下来,而不是继续运行到出问题为止。熔断器还支持可配置的阈值参数,用户可以通过环境变量自定义触发熔断的条件。第二层:速率限制(Rate Limiting)。每小时允许 100 次 Claude Code 调用(可配置),防止在 API 预算紧张时失控消费。当接近 API 超限时,系统会提示用户并支持在无人值守模式下自动等待。速率限制采用三层检测机制:超时守卫 → 结构化 JSON(rate_limit_event)→ 过滤后的文本回退,确保即使 JSON 解析失败也能准确识别限流信号。第三层:响应分析器(Response Analyzer)。lib/response_analyzer.sh 承担了语义理解的核心职责——它能区分"真正在产出"和"在兜圈子"的区别,具备多行错误匹配、Git 提交检测(循环内的真实提交才算进步)、复选框进度识别等能力。当检测到 5 小时 API 限制时,会自动提示用户。## 代码结构:Shell 脚本的工程美学Ralph 整体采用 Shell 脚本 + Node.js 测试框架 的组合,这本身就是一种务实的选择——部署简单(无需复杂的运行时环境),但又能保证工程质量。核心架构由 9 个库文件组成,各司其职:| 模块 | 功能 | 规模 ||---|---|---|
| response_analyzer.sh | 语义响应分析、进度检测、错误过滤 | ~43KB |
| circuit_breaker.sh | 熔断保护、异常检测、自动中断 | ~20KB |
| enable_core.sh | 项目启用向导、.ralphrc 配置 | ~25KB |
| task_sources.sh | PRD 导入、TODO 解析、任务管理 | ~16KB |
| wizard_utils.sh | 交互式向导、用户提示 | ~15KB |
| ralph_loop.sh | 主循环核心逻辑 | ~107KB |
主循环脚本 ralph_loop.sh 是整个项目的心脏(~107KB),负责协调所有模块的调用。它还支持 --resume 恢复会话、--live 实时流式输出(配合 tmux 实时监控)、--output-format 输出格式切换、--no-continue 禁止继续等现代化 CLI 标志。项目还包含 566 个 bats 测试用例,涵盖单元测试、集成测试和端到端测试,测试覆盖率达到 100% 通过率。这对于一个 Shell 脚本项目来说相当难得——说明作者在工程化方面下了不少功夫。## 安装与使用:一次安装,全局可用Ralph 的安装过程极其简单——克隆仓库,运行 install.sh,即可在任意目录下使用全局命令 ralph。支持 macOS/Linux,依赖项仅为 Node.js、jq、git 和 coreutils。安装后会创建 $HOME/.ralph 配置目录,支持 .ralphrc 文件进行项目级个性化配置。每个项目也可以单独启用——运行 ralph-enable 进入交互式向导,配置完成后项目就能接入自动驾驶模式。对于 CI/CD 场景,项目还提供了 ralph_enable_ci.sh,可以在 GitHub Actions 等 CI 环境中无缝集成 Claude Code 自动开发循环,实现"提交 PR → AI 自动审查改进 → 再次提交"的自动化工作流。## 局限与争议Ralph 不是一个"一键就能用"的解决方案。它的实际效果很大程度上取决于 PROMPT.md 的质量——如果 prompt 写得模糊,AI 仍然可能在错误方向上迭代。另外,Claude Code 本身的 token 消耗和 API 成本也需要考虑——全自动循环在复杂项目上可能产生较高的 API 调用量。此外,由于完全依赖 Shell 脚本实现,Ralph 的跨平台能力有一定局限。虽然代码已针对 bash 3.x(macOS 默认)和 bash 4+ 做了兼容性处理,但在某些特殊 Shell 环境(如 zsh、fish)中仍可能遇到兼容性问题。## 行业意义:AI 编程助手从"辅助工具"到"自动化引擎"Ralph 的出现代表了 AI 编程工具发展的一种新趋势:不再满足于"人类发指令、AI 执行"的协作模式,而是探索"人类设定目标、AI 自主完成"的更高自动化形态。从 GitHub Star 增长曲线来看,Claude Code 相关生态项目增长迅猛。Ralph 作为其中的明星项目,不仅展示了 AI 编程自动化的可能性,也为整个 AI+DevOps 领域提供了一个可参考的"安全自动驾驶"设计范本——如何在给予 AI 充分自主权的同时,确保人类始终有足够的掌控感和安全保障。如果你已经在使用 Claude Code,Ralph 是一个值得尝试的增强工具;如果你关注 AI 编程自动化的发展,Ralph 的代码实现(尤其是熔断器和响应分析器)是很好的参考案例。项目已被收录至 Awesome Claude Code 列表,技术含量和社区认可度兼具。