用途
Ralph 是一个用于 Claude Code 的自主 AI 开发循环(Autonomous Development Loop),让 Claude Code 能够持续、自动地迭代执行开发任务,直到项目完成。它实现了 Geoffrey Huntley 提出的「Ralph Wiggum」技术,并加入了智能退出检测、会话连续性管理、速率限制和熔断机制,以避免陷入无限循环。
主要能力
- 让 Claude Code 在连续自主循环中运行,直至项目完成
- 跨迭代管理会话连续性并保留上下文
- 强制执行双条件退出门控:完成指示标记 + 显式 EXIT_SIGNAL
- 对 API 调用进行速率限制(默认每小时 100 次),并支持自动重置
- 通过语义分析和熔断器检测卡死的循环
- 通过 tmux 集成提供实时监控面板
- 从 PRD、GitHub Issues 或 beads 任务管理器导入任务
- 支持 JSON 输出格式,并可在解析失败时自动回退到文本解析
安装方式
阶段一:全局安装 Ralph(一次性)
# Clone and install Ralph system-wide
git clone https://github.com/frankbria/ralph-claude-code.git
cd ralph-claude-code
./install.sh
# Verify installation
which ralph
ralph --version
该步骤会添加以下全局命令:
ralph- 主自主循环ralph-monitor- 实时面板ralph-setup- 创建新的 Ralph 项目ralph-enable- 在现有项目中启用 Ralphralph-import- 导入 PRD/规格说明ralph-migrate- 升级到最新目录结构
阶段二:初始化项目(按项目)
可选择以下方式之一:
方式 A:在现有项目中启用(推荐)
cd my-existing-project
ralph-enable # Interactive wizard
方式 B:导入已有 PRD
ralph-import requirements.md my-project
cd my-project
方式 C:创建新项目
ralph-setup my-awesome-project
cd my-awesome-project
核心命令
# Start autonomous development with integrated monitoring
ralph --monitor
# Start without monitoring (requires separate terminal for ralph-monitor)
ralph
# Resume existing session (preserves context)
ralph --resume <session_id>
# Live streaming output (real-time visibility)
ralph --live
# Configure output format
ralph --output-format json
ralph --output-format text
# Set allowed tools
ralph --allowed-tools "Edit,Bash(npm *),Bash(pytest)"
# Disable auto-continuation (require manual approval)
ralph --no-continue
# Custom timeout (1-120 minutes, default: 30)
ralph --timeout 60
# Verbose progress mode
ralph --verbose
# Reset session manually
ralph --reset-session
另有 ralph-enable、ralph-enable-ci、ralph-import、ralph-migrate、ralph-monitor 等设置、配置与监控命令,支持从 beads、GitHub 标签或 PRD 文件导入任务。
项目结构
Ralph 将项目组织在 .ralph/ 子目录中,包含:
my-project/
├── .ralph/
│ ├── PROMPT.md # Main instructions for Claude
│ ├── fix_plan.md # Prioritized task list
│ ├── .ralphrc # Project configuration
│ ├── specs/ # Technical specifications
│ │ └── requirements.md
│ ├── logs/ # Execution logs
│ │ ├── ralph.log
│ │ └── claude_responses.log
│ └── sessions/ # Session management
│ └── current_session.json
├── src/ # Your actual code
└── README.md
配置
.ralphrc 文件由 ralph-enable 或 ralph-setup 自动创建,包含允许的工具、输出格式、超时时间、速率限制、会话超时以及可选的熔断器阈值等配置项。也可通过环境变量覆盖,如 RATE_LIMIT_PER_HOUR、SESSION_TIMEOUT_HOURS、CIRCUIT_BREAKER_THRESHOLD、LOG_DIR、CLAUDE_API_KEY 等。
退出检测
Ralph 使用双条件退出门控:
- 完成指示标记——Claude 用
[x]标记任务完成 - 显式 EXIT_SIGNAL——Claude 必须在 PROMPT.md 中设置
EXIT_SIGNAL: true
两个条件必须同时满足,Ralph 才会退出,以防止过早退出。若 Claude 显式设置 EXIT_SIGNAL: false,即使完成指示已积累,Ralph 也会继续工作。
速率限制
Ralph 对 API 调用施加限制以防滥用,默认每小时 100 次,可在 .ralphrc 中配置。达到上限时显示倒计时。此外,Claude API 每账号有 5 小时限制,Ralph 通过三层机制检测:超时保护、JSON 解析中的 rate_limit_event 检测、以及排除超时错误后的文本回退检查。v0.11.5 修复了超时(退出码 124)被误判为 API 限制的问题。
熔断器
通过语义分析、两阶段过滤、多行错误匹配检测卡死状态,默认阈值为连续 3 次错误。当同一错误重复 3 次以上、连续 3 次以上循环无进展、或完成指示累积但无 EXIT_SIGNAL 时自动触发。
常见使用模式
资料给出了多种使用模式:从 PRD 启动新项目、在现有项目启用、从 beads 导入任务、导入 GitHub Issues、恢复中断的会话、自定义工具权限,以及 CI/CD 集成(提供了 GitHub Actions 工作流示例)。
适用场景
适用于希望让 Claude Code 长时间自主迭代开发的场景,如按 PRD 构建 REST API、从任务列表驱动开发、在 CI 中自动推进需求等。
限制与故障排查
资料列出的常见问题包括:过早退出、陷入无限循环、速率限制过快触达、会话过期、超时误判为 API 限制、JSON 解析错误、工具权限被拒、监控不显示更新、旧版本迁移问题等,并给出相应解决方式。最佳实践包括从小规模开始、始终使用监控、设置合理超时、运行前提交版本控制、显式退出信号、注意速率限制、使用 --resume 保留上下文等。卸载可用官方 uninstall 脚本,会移除全局命令与 shell 配置,但不会移除项目的 .ralph/ 目录。