ralph-claude-code
Ralph 是一款专为 Claude Code 设计的自动化开发辅助工具,旨在实现智能且安全的持续代码迭代。它基于 Geoffrey Huntley 提出的"Ralph"理念,让 AI 能够自主循环执行开发任务,直到项目完成或达到预设目标,从而将开发者从重复的指令输入中解放出来。
该工具核心解决了自主代理运行中常见的“死循环”与"API 过度消耗”难题。通过独特的双重退出机制,Ralph 要求同时满足“任务完成指标”与“明确退出信号”才会停止运行,有效防止了无限循环。此外,它还内置了速率限制、熔断保护以及复杂的错误检测系统,确保在遇到 API 限额或逻辑卡顿时能安全暂停而非崩溃。
Ralph 非常适合希望提升开发效率的软件工程师、技术团队及 AI 应用研究者使用。其技术亮点包括支持会话断点续传(--resume)、实时流式输出监控、灵活的 JSON/文本格式切换,以及基于 .ralphrc 的项目级配置管理。安装一次后,它即可作为全局命令在任何目录中运行,配合完善的测试覆盖与 CI/CD 集成,为自动化编码流程提供了稳定可靠的保障。
使用场景
某全栈开发者正利用 Claude Code 重构一个遗留的电商订单模块,需要 AI 连续执行代码分析、单元测试编写及多轮修复,直至功能完全通过验证。
没有 ralph-claude-code 时
- 人工干预频繁:开发者必须时刻守在终端旁,每次 Claude 完成一步就需手动输入指令让其继续,无法离开座位处理其他事务。
- 无限循环风险:当 AI 陷入逻辑死胡同或重复报错时,缺乏自动熔断机制,导致 API 调用在无人看管下疯狂消耗,产生高额账单。
- 进度难以维持:一旦遇到网络波动或会话超时,之前的上下文全部丢失,不得不重新描述需求,导致开发过程断断续续。
- 退出判断模糊:AI 常在任务未完成时误判为“结束”并提前退出,或者在已完成时还在无意义地空转,缺乏智能的完工检测。
使用 ralph-claude-code 后
- 全自动闭环开发:启动
ralph命令后,它会自动指挥 Claude Code 进行“编码 - 测试 - 修复”的迭代循环,直到检测到明确的完成信号才停止,开发者可安心下班。 - 智能安全熔断:内置的断路器和速率限制器能精准识别死循环与 API 限额,一旦检测到异常停滞或达到每小时 100 次调用上限,立即暂停并通知用户,杜绝资源浪费。
- 会话无缝续传:利用
--resume标志和 24 小时会话保持机制,即使中途中断,也能完美恢复之前的上下文和进度,确保长周期任务不丢失状态。 - 精准完工判定:采用双重退出门控机制,只有当代码指标达标且收到明确退出信号时才会终止,既防止了过早放弃,也避免了无效空转。
ralph-claude-code 将原本需要人工全程盯守的碎片化交互,升级为安全、可控且真正自主的夜间自动化开发流程。
运行环境要求
- Linux
- macOS
未说明
未说明

快速开始
Ralph 用于 Claude Code
具备智能退出检测与速率限制的自主 AI 开发循环
Ralph 是 Geoffrey Huntley 针对 Claude Code 所提出技术的一种实现,该技术能够支持持续的自主开发周期,并以 Ralph Wiggum 的名字命名。它允许 Claude Code 在内置的安全机制(如防止无限循环和 API 过度使用)保障下,不断迭代改进您的项目直至完成。
一次安装,随处可用 - Ralph 可作为全局命令,在任何目录中均可使用。
项目状态
版本: v0.11.5 - 正在积极开发 核心功能: 已实现并经过测试 测试覆盖率: 566 个测试,通过率 100%
目前已实现的功能
- 具备智能退出检测的自主开发循环
- 双重条件退出机制:必须同时满足完成标志和显式 EXIT_SIGNAL 才能退出
- 每小时重置的速率限制(100 次/小时,可配置)
- 带有高级错误检测的熔断器(防止失控循环)
- 具有语义理解能力的响应分析器,支持两阶段错误过滤
- 支持 JSON 输出格式,并自动回退至文本解析
- 通过
--resume标志实现会话连续性,保留上下文(无会话劫持) - 会话过期机制,可配置超时时间(默认 24 小时)
- 现代化 CLI 标志:
--output-format、--allowed-tools、--no-continue - 交互式项目启用向导
ralph-enable .ralphrc配置文件,用于项目设置- 通过
--live标志提供实时流输出,便于查看 Claude Code 的执行过程 - 多行错误匹配,精准检测卡死循环
- 针对 5 小时 API 使用上限的处理,并配合用户提示
- 与 tmux 集成,方便实时监控
- 支持 PRD 导入功能
- 基于 GitHub Actions 的 CI/CD 流水线
- 专用卸载脚本,确保干净彻底地移除
最新改进
v0.11.5 - 社区修复的 bug(最新版本)
- 修复了 API 限制误报:超时(退出码 124)不再被误认为是 API 的 5 小时限制 (#183)
- 三层 API 限制检测机制:超时保护 → 结构化 JSON(
rate_limit_event)→ 过滤文本回退 - 无人值守模式:API 限制提示现在会在超时时自动等待,而不是直接退出
- 修复了 Bash 3.x 兼容性问题:将
${,,}小写替换语法替换为 POSIX 的tr命令 (#187) - 新增 8 个 API 限制检测测试用例(测试总数从 548 增加到 566)
v0.11.4 - Bug 修复与兼容性改进
- 修复了进度检测问题:循环中的 Git 提交现在会被计入进度 (#141)
- 修复了复选框正则表达式:日期条目
[2026-01-29]不再被误认为是复选框 (#144) - 修复了会话劫持问题:使用
--resume <session_id>替代--continue(#151) - 修复了
EXIT_SIGNAL覆盖问题:当STATUS: COMPLETE且EXIT_SIGNAL: false时,现在会继续运行 (#146) - 修复了 ralph-import 无限挂起的问题(添加了用于非交互模式的
--print标志) - 修复了 ralph-import 绝对路径处理问题
- 修复了 macOS 上使用 Homebrew coreutils 时的跨平台日期命令问题
- 添加了可通过环境变量配置的熔断阈值 (#99)
- 为非零
base-index配置增加了 tmux 支持 - 新增 13 个回归测试用例,用于测试进度检测和复选框正则表达式
v0.11.3 - 直播流与 beads 修复
- 添加了实时 Claude Code 可见性的直播输出模式,通过
--live标志实现 (#125) - 修复了使用正确
bd list参数导入 beads 任务的问题 (#150) - 应用了 CodeRabbit 审查修复:驼峰命名变量、尊重状态的回退逻辑、jq 防御措施
- 新增 12 个测试用例,用于改进直播流和 beads 导入功能
v0.11.2 - 设置权限修复
- 修复了问题 #136:
ralph-setup现在会创建具有一致工具权限的.ralphrc文件 - 更新了默认的
ALLOWED_TOOLS列表,加入了Edit、Bash(npm *)和Bash(pytest) ralph-setup和ralph-enable现在都会生成完全相同的.ralphrc配置文件- Monitor 现在会将所有 CLI 参数转发给内部的 ralph 循环 (#126)
- 新增 16 个测试用例,用于测试权限和参数转发功能
v0.11.1 - 完成指标修复
- 修复了 JSON 输出模式下恰好执行 5 次循环后过早退出的问题
completion_indicators现在仅在EXIT_SIGNAL: true时才会累计- 与文档中记录的双条件退出机制保持一致
v0.11.0 - Ralph 启用向导
- 添加了
ralph-enable交互式向导,用于在现有项目中启用 Ralph - 五阶段向导:环境检测 → 任务来源选择 → 配置 → 文件生成 → 验证
- 自动检测项目类型(TypeScript、Python、Rust、Go)和框架(Next.js、FastAPI、Django)
- 可从 beads、GitHub Issues 或 PRD 文档中导入任务
- 添加了用于 CI/自动化流程的非交互式版本
ralph-enable-ci - 新增库组件:
enable_core.sh、wizard_utils.sh、task_sources.sh
v0.10.1 - Bug 修复与 Monitor 路径修正
- 修复了
ralph_monitor.sh中硬编码的路径,以确保与 v0.10.0 兼容 - 修复了 JSON 格式中
EXIT_SIGNAL的解析问题 - 添加了安全熔断机制(连续出现 5 个完成指标后强制退出)
- 修复了缩进 Markdown 中的复选框解析问题
v0.10.0 - .ralph/ 子文件夹结构(破坏性变更)
- 破坏性变更:所有 Ralph 特定文件均移至
.ralph/子文件夹 - 项目根目录保持整洁:仅保留
src/、README.md和用户文件 - 添加了
ralph-migrate命令,用于升级现有项目
早期版本(v0.9.x)
v0.9.9 - EXIT_SIGNAL 门控与卸载脚本
- 修复了过早退出的 bug:完成指标现在需要 Claude 明确的
EXIT_SIGNAL: true - 添加了专门的
uninstall.sh脚本,用于干净地移除 Ralph
v0.9.8 - 用于 PRD 导入的现代化 CLI
- 对
ralph_import.sh进行了现代化改造,采用 Claude Code CLI 的 JSON 输出格式 - 增强了错误处理能力,使用结构化的 JSON 错误信息
v0.9.7 - 会话生命周期管理
- 实现了完整的会话生命周期管理,并设置了自动重置触发条件
- 添加了
--reset-sessionCLI 标志,用于手动重置会话
v0.9.6 - JSON 输出与会话管理
- 扩展了
parse_json_response()函数,以支持 Claude Code CLI 的 JSON 格式 - 添加了会话管理相关函数
v0.9.5 - v0.9.0 - 包括 PRD 导入测试、项目设置测试、安装测试、提示文件修复、现代化 CLI 命令以及熔断器增强等功能
进展中
- 扩展测试覆盖率
- 自动化徽章更新
迈向 v1.0 的时间表:约 4 周 | 完整路线图 | 欢迎贡献!
功能特性
- 自主开发循环 - 根据您的项目需求持续执行 Claude Code
- 智能退出检测 - 双条件检查,需同时满足完成指标和明确的
EXIT_SIGNAL - 会话连续性 - 通过自动会话管理,在循环迭代之间保持上下文
- 会话过期 - 可配置的超时时间(默认 24 小时),并自动重置会话
- 速率限制 - 内置 API 调用管理,包括每小时限制和倒计时定时器
- 5 小时 API 限制处理 - 三层检测机制(超时保护、JSON 解析、过滤文本),并针对无人值守模式自动等待
- 实时监控 - 实时仪表盘显示循环状态、进度和日志
- 任务管理 - 结构化方法,提供优先级任务列表和进度跟踪
- 项目模板 - 快速搭建新项目,采用最佳实践结构
- 交互式项目设置 -
ralph-enable向导,适用于现有项目及任务导入 - 配置文件 -
.ralphrc用于项目特定设置和工具权限 - 全面日志记录 - 详细的执行日志,包含时间戳和状态跟踪
- 可配置超时 - 可为 Claude Code 操作设置执行超时(1–120 分钟)
- 详细进度模式 - 执行过程中可选择详细的进度更新
- 响应分析器 - 基于 AI 的 Claude Code 响应分析,具备语义理解能力
- 熔断器 - 先进的错误检测机制,包括两阶段过滤、多行错误匹配和自动恢复
- CI/CD 集成 - GitHub Actions 工作流,支持自动化测试
- 干净卸载 - 专用卸载脚本,实现彻底移除
- 直播输出 - 通过
--live标志实现实时查看 Claude Code 执行情况
快速入门
Ralph 包括两个阶段:一次性安装和每个项目的设置。
一次性安装 多次使用
+-----------------+ +----------------------+
| ./install.sh | -> | ralph-setup project1 |
| | | ralph-enable |
| 添加全局命令 | | ralph-import prd.md |
| | | ... |
+-----------------+ +----------------------+
第一阶段:安装 Ralph(仅需执行一次)
在您的系统上全局安装 Ralph:
git clone https://github.com/frankbria/ralph-claude-code.git
cd ralph-claude-code
./install.sh
这会将 ralph、ralph-monitor、ralph-setup、ralph-import、ralph-migrate、ralph-enable 和 ralph-enable-ci 命令添加到您的 PATH 中。
注意:您只需在每个系统上执行一次此操作。安装完成后,您可以根据需要删除克隆的仓库。
第二阶段:初始化项目(按项目进行)
选项 A:在现有项目中启用 Ralph(推荐)
cd my-existing-project
# 交互式向导 - 自动检测项目类型并导入任务
ralph-enable
# 或者指定任务来源
ralph-enable --from beads
ralph-enable --from github --label "sprint-1"
ralph-enable --from prd ./docs/requirements.md
# 开始自主开发
ralph --monitor
选项 B:导入现有的 PRD/规格文档
# 将现有的 PRD/规格文档转换为 Ralph 格式
ralph-import my-requirements.md my-project
cd my-project
# 审查并调整生成的文件:
# - .ralph/PROMPT.md(Ralph 指令)
# - .ralph/fix_plan.md(任务优先级)
# - .ralph/specs/requirements.md(技术规格)
# 开始自主开发
ralph --monitor
选项 C:从头创建新项目
# 创建空白的 Ralph 项目
ralph-setup my-awesome-project
cd my-awesome-project
# 手动配置项目需求
# 编辑 .ralph/PROMPT.md 以设定项目目标
# 编辑 .ralph/specs/ 以提供详细规格
# 编辑 .ralph/fix_plan.md 以设定初始优先级
# 开始自主开发
ralph --monitor
后续使用(设置完成后)
一旦 Ralph 安装完成且项目已初始化:
# 导航到任意 Ralph 项目并运行:
ralph --monitor # 集成 tmux 监控(推荐)
# 或者使用独立终端:
ralph # 终端 1:Ralph 循环
ralph-monitor # 终端 2:实时监控仪表盘
卸载 Ralph
要从您的系统中完全移除 Ralph:
# 运行卸载脚本
./uninstall.sh
# 或者如果您已删除仓库,可下载并运行:
curl -sL https://raw.githubusercontent.com/frankbria/ralph-claude-code/main/uninstall.sh | bash
理解 Ralph 文件
运行 ralph-enable 或 ralph-import 后,您将获得一个 .ralph/ 目录,其中包含多个文件。以下是每个文件的作用以及是否需要编辑它们:
| 文件 | 自动生成? | 您应该... |
|---|---|---|
.ralph/PROMPT.md |
是(智能默认值) | 审查并自定义 项目目标和原则 |
.ralph/fix_plan.md |
是(可导入任务) | 添加/修改 具体实现任务 |
.ralph/AGENT.md |
是(检测构建命令) | 很少编辑(由 Ralph 自动维护) |
.ralph/specs/ |
空目录 | 当 PROMPT.md 不够详细时添加文件 |
.ralph/specs/stdlib/ |
空目录 | 添加可重用的模式和规范 |
.ralphrc |
是(项目感知) | 很少编辑(合理默认值) |
主要文件之间的关系
PROMPT.md(高层次目标)
↓
specs/(必要时的详细需求)
↓
fix_plan.md(Ralph 执行的具体任务)
↓
AGENT.md(构建/测试命令 - 自动维护)
何时使用 specs/
- 简单项目:通常 PROMPT.md + fix_plan.md 就足够了
- 复杂功能:添加 specs/feature-name.md 以提供详细需求
- 团队规范:添加 specs/stdlib/convention-name.md 以提供可重用模式
有关详细说明,请参阅 用户指南;有关实际项目配置,请参阅 examples/ 目录。
工作原理
Ralph 基于一个简单而强大的循环运作:
- 读取指令 - 加载包含项目需求的
PROMPT.md - 执行 Claude 代码 - 在当前上下文和优先级下运行 Claude 代码
- 跟踪进度 - 更新任务列表并记录执行结果
- 评估完成情况 - 检查退出条件及项目完成信号
- 重复 - 直到项目完成或达到限制为止
智能退出检测
Ralph 使用 双重条件检查 来防止在高效迭代过程中过早退出:
退出需要同时满足以下两个条件:
completion_indicators >= 2(基于自然语言模式的启发式检测)- Claude 在 RALPH_STATUS 块中明确发出
EXIT_SIGNAL: true
示例行为:
第 5 轮:Claude 输出“阶段完成,进入下一功能”
→ completion_indicators: 3(基于模式的高度信心)
→ EXIT_SIGNAL: false(Claude 表示还需要更多工作)
→ 结果:继续(尊重 Claude 的明确意图)
第 8 轮:Claude 输出“所有任务完成,项目准备就绪”
→ completion_indicators: 4
→ EXIT_SIGNAL: true(Claude 确认已完成)
→ 结果:退出,并显示“project_complete”
其他退出条件:
.ralph/fix_plan.md中的所有任务均标记为完成- Claude 代码连续多次发出“完成”信号
- 测试导向的循环次数过多(表明功能已完成)
- Claude API 使用时间达到 5 小时上限(此时会提示用户等待或退出)
在现有项目中启用 Ralph
ralph-enable 命令提供了一个交互式向导,用于将 Ralph 添加到现有项目中:
cd my-existing-project
ralph-enable
向导流程:
- 检测环境 - 识别项目类型(TypeScript、Python 等)和框架
- 选择任务来源 - 可从 beads、GitHub Issues 或 PRD 文档中选择
- 配置设置 - 设置工具权限和循环参数
- 生成文件 - 创建
.ralph/目录和.ralphrc配置文件 - 验证设置 - 确认所有文件均已正确创建
非交互模式,适用于 CI/自动化:
ralph-enable-ci # 合理默认值
ralph-enable-ci --from github # 从 GitHub Issues 导入
ralph-enable-ci --project-type typescript # 覆盖自动检测
ralph-enable-ci --json # 机器可读输出
导入现有需求
Ralph 可以使用 Claude 代码将现有的 PRD、规格文档或需求文件转换为适当的 Ralph 格式。
支持的格式
- Markdown (.md) - 产品需求、技术规格
- 文本文件 (.txt) - 纯文本需求
- JSON (.json) - 结构化需求数据
- Word 文档 (.docx) - 商业需求
- PDF (.pdf) - 设计文档、规格
- 任何基于文本的格式 - Ralph 会智能解析内容
使用示例
# 转换 Markdown 格式的 PRD
ralph-import product-requirements.md my-app
# 转换文本规格
ralph-import requirements.txt webapp
# 转换 JSON 格式的 API 规格
ralph-import api-spec.json backend-service
# 让 Ralph 根据文件名自动命名项目
ralph-import design-doc.pdf
生成的内容
Ralph-import 会创建一个完整的项目,包含以下内容:
- .ralph/PROMPT.md - 转换为 Ralph 开发指令
- .ralph/fix_plan.md - 将需求分解为优先级任务
- .ralph/specs/requirements.md - 从您的文档中提取的技术规格
- .ralphrc - 包含工具权限的项目配置文件
- 标准 Ralph 结构 -
.ralph/中的所有必要目录和模板文件
转换过程智能且保留了您原有的需求,同时使其可被自主开发所执行。
配置
项目配置 (.ralphrc)
每个 Ralph 项目都可以有一个 .ralphrc 配置文件:
# .ralphrc - Ralph 项目配置
PROJECT_NAME="my-project"
PROJECT_TYPE="typescript"
# Claude Code CLI 命令(自动检测,如有需要可覆盖)
CLAUDE_CODE_CMD="claude"
# CLAUDE_CODE_CMD="npx @anthropic-ai/claude-code" # 替代方案:使用 npx
# Shell 初始化文件 — 在运行 claude 之前先加载(适用于 zsh/fish 用户,
# 其 PATH 或环境变量仅在其 shell 的初始化文件中设置)
#RALPH_SHELL_INIT_FILE="~/.zshrc"
# 循环设置
MAX_CALLS_PER_HOUR=100
CLAUDE_TIMEOUT_MINUTES=15
CLAUDE_OUTPUT_FORMAT="json"
# 每小时令牌预算(0 = 禁用)。一次 Claude 调用可能消耗 10 万+ 令牌。
#MAX_TOKENS_PER_HOUR=500000
# 工具权限
ALLOWED_TOOLS="Write,Read,Edit,Bash(git *),Bash(npm *),Bash(pytest)"
# 会话管理
SESSION_CONTINUITY=true
SESSION_EXPIRY_HOURS=24
# 断路器阈值
CB_NO_PROGRESS_THRESHOLD=3
CB_SAME_ERROR_THRESHOLD=5
速率限制与断路器
Ralph 包含智能的速率限制和断路器功能:
# 默认:每小时 100 次调用
ralph --calls 50
# 带集成监控
ralph --monitor --calls 50
# 查看当前使用情况(显示本小时已使用的调用次数和令牌数)
ralph --status
速率限制支持两个独立的限制——两者每小时重置一次:
| 设置 | 默认 | 描述 |
|---|---|---|
MAX_CALLS_PER_HOUR |
100 |
每小时最大 Claude 调用次数 |
MAX_TOKENS_PER_HOUR |
0(禁用) |
每小时累计最大令牌数 |
令牌跟踪会从每次 Claude 响应中提取 input_tokens + output_tokens。单次调用可能消耗 10 万+ 令牌,因此 MAX_TOKENS_PER_HOUR 提供了 MAX_CALLS_PER_HOUR 单独无法实现的成本控制。
断路器会自动:
- 使用高级两阶段过滤检测 API 错误和速率限制问题
- 在连续 3 次循环无进展或连续 5 次循环出现相同错误时打开断路器
- 消除因 JSON 字段中包含“error”而导致的误报
- 通过多行错误匹配准确检测卡住的循环
- 逐步恢复,进入半开监控状态
- 自动恢复在冷却期后(默认:30 分钟)——OPEN → HALF_OPEN → CLOSED
- 提供详细的错误跟踪和日志记录,包括状态历史
自动恢复选项:
# 默认:自动恢复尝试前有 30 分钟的冷却期
CB_COOLDOWN_MINUTES=30 # 在 .ralphrc 中设置(0 = 立即)
# 启动时自动重置断路器(用于完全无人值守的操作)
ralph --auto-reset-circuit
# 或在 .ralphrc 中设置:CB_AUTO_RESET=true
Claude API 5 小时限制
当 Claude 的 5 小时使用限制达到时,Ralph 会:
- 使用三层验证检测该限制(超时保护 → 结构化 JSON → 过滤后的文本回退)
- 提示您选择:
- 选项 1:等待 60 分钟以重置限制(带倒计时)
- 选项 2:优雅退出
- 无人值守模式:在提示超时(30 秒)后自动等待,而不是退出
- 防止因回显的文件内容提及“5 小时限制”而产生的误报。
自定义提示
# 使用自定义提示文件
ralph --prompt my_custom_instructions.md
# 带集成监控
ralph --monitor --prompt my_custom_instructions.md
执行超时
# 设置 Claude Code 执行超时(默认:15 分钟)
ralph --timeout 30 # 复杂任务的 30 分钟超时
# 带监控和自定义超时
ralph --monitor --timeout 60 # 60 分钟超时
# 快速迭代的短超时
ralph --verbose --timeout 5 # 带进度的 5 分钟超时
详细模式
# 在执行过程中启用详细的进度更新
ralph --verbose
# 可与其他选项结合使用
ralph --monitor --verbose --timeout 30
实时输出流
# 启用对 Claude Code 执行的实时可见性
ralph --live
# 与监控结合使用以获得最佳体验
ralph --monitor --live
# 实时输出会写入 .ralph/live.log
tail -f .ralph/live.log # 在另一个终端查看
实时流模式会实时显示 Claude Code 的输出,让您清楚地了解每次循环迭代中正在发生的事情。
会话连续性
Ralph 会在循环迭代之间保持会话上下文,以提高连贯性:
# 默认启用会话连续性,只需使用 --continue 标志
ralph --monitor # 使用会话连续性
# 不带会话上下文从头开始
ralph --no-continue # 独立的迭代
# 手动重置会话(清除上下文)
ralph --reset-session # 清除当前会话
# 查看会话状态
cat .ralph/.ralph_session # 查看当前会话文件
cat .ralph/.ralph_session_history # 查看会话过渡历史
会话自动重置触发条件:
- 断路器打开(检测到停滞)
- 手动中断(Ctrl+C / SIGINT)
- 项目完成(优雅退出)
- 手动重置断路器(
--reset-circuit) - 会话到期(默认:24 小时)
会话会持久化到 .ralph/.ralph_session,其有效期可配置(默认:24 小时)。最近 50 次会话过渡会被记录到 .ralph/.ralph_session_history 中,以便调试。
退出阈值
在 ~/.ralph/ralph_loop.sh 中修改这些变量:
退出检测阈值:
MAX_CONSECUTIVE_TEST_LOOPS=3 # 经过3次仅测试循环后退出
MAX_CONSECUTIVE_DONE_SIGNALS=2 # 收到2次“完成”信号后退出
TEST_PERCENTAGE_THRESHOLD=30 # 如果30%以上的循环仅为测试循环,则发出警告
熔断器阈值:
CB_NO_PROGRESS_THRESHOLD=3 # 连续3次循环无文件更改时触发熔断
CB_SAME_ERROR_THRESHOLD=5 # 连续5次循环出现重复错误时触发熔断
CB_OUTPUT_DECLINE_THRESHOLD=70 # 输出下降超过70%时触发熔断
CB_COOLDOWN_MINUTES=30 # 从“OPEN”状态自动恢复为“HALF_OPEN”状态前的冷却时间(分钟)
CB_AUTO_RESET=false # true = 启动时重置为“CLOSED”状态(绕过冷却期)
完成指标与 EXIT_SIGNAL 门控:
| completion_indicators | EXIT_SIGNAL | 结果 |
|---|---|---|
| >= 2 | true |
退出(“project_complete”) |
| >= 2 | false |
继续(Claude仍在工作) |
| >= 2 | 缺失 | 继续(默认为 false) |
| < 2 | true |
继续(未达到阈值) |
项目结构
Ralph 为每个项目创建标准化的结构,其中包含用于配置的 .ralph/ 子文件夹:
my-project/
├── .ralph/ # Ralph 配置与状态文件(隐藏文件夹)
│ ├── PROMPT.md # Ralph 的主要开发说明
│ ├── fix_plan.md # 优先级任务列表
│ ├── AGENT.md # 构建和运行说明
│ ├── specs/ # 项目规格与需求
│ │ └── stdlib/ # 标准库规格
│ ├── examples/ # 使用示例与测试用例
│ ├── logs/ # Ralph 执行日志
│ └── docs/generated/ # 自动生成的文档
├── .ralphrc # Ralph 配置文件(工具权限、设置)
└── src/ # 源代码实现(位于项目根目录)
迁移:如果您有使用旧式扁平结构的现有 Ralph 项目,请运行
ralph-migrate自动将文件移至.ralph/子文件夹。
最佳实践
编写有效提示
- 明确具体 - 清晰的需求带来更好的结果
- 优先排序 - 使用
.ralph/fix_plan.md引导 Ralph 的关注点 - 设定边界 - 定义范围内外的内容
- 包含示例 - 展示预期的输入/输出
项目规格
- 将详细需求放在
.ralph/specs/中 - 使用
.ralph/fix_plan.md进行优先级任务跟踪 - 保持
.ralph/AGENT.md更新以包含构建指令 - 记录关键决策和架构设计
监控进度
- 使用
ralph-monitor获取实时状态更新 - 查看
.ralph/logs/中的日志以了解详细的执行历史 - 监控
.ralph/status.json以进行程序化访问 - 注意退出条件信号
系统要求
- Bash 4.0+ - 用于脚本执行
- Claude Code CLI -
npm install -g @anthropic-ai/claude-code(或使用 npx — 在.ralphrc中设置CLAUDE_CODE_CMD) - tmux - 终端多路复用器,推荐用于集成监控
- jq - 用于状态跟踪的 JSON 处理工具
- Git - 版本控制(项目初始化为 Git 仓库)
- GNU coreutils - 提供
timeout命令(执行超时)- Linux:大多数发行版已预装
- macOS:通过
brew install coreutils安装(提供gtimeout)
- 标准 Unix 工具 - grep、date 等
测试要求(开发)
请参阅 TESTING.md 以获取完整的测试指南。
如果您想运行测试套件:
# 安装 BATS 测试框架
npm install -g bats bats-support bats-assert
# 运行所有测试(566 个测试)
npm test
# 运行特定测试套件
bats tests/unit/test_rate_limiting.bats
bats tests/unit/test_exit_detection.bats
bats tests/unit/test_json_parsing.bats
bats tests/unit/test_cli_modern.bats
bats tests/unit/test_cli_parsing.bats
bats tests/unit/test_session_continuity.bats
bats tests/unit/test_enable_core.bats
bats tests/unit/test_task_sources.bats
bats tests/unit/test_ralph_enable.bats
bats tests/unit/test_wizard_utils.bats
bats tests/unit/test_circuit_breaker_recovery.bats
bats tests/integration/test_loop_execution.bats
bats tests/integration/test_prd_import.bats
bats tests/integration/test_project_setup.bats
bats tests/integration/test_installation.bats
# 运行错误检测和熔断器测试
./tests/test_error_detection.sh
./tests/test_stuck_loop_detection.sh
当前测试状态:
- 566 个测试,分布在 18 个测试文件中
- 100% 通过率(556/556 通过)
- 全面的单元和集成测试
- 专门针对 JSON 解析、CLI 标志、熔断器、EXIT_SIGNAL 行为、启用向导以及安装流程的测试
覆盖率说明:使用 kcov 测量 Bash 代码覆盖率时,在追踪子进程执行方面存在根本性限制。测试通过率(100%)是质量门槛。详情请参阅 bats-core#15。
安装 tmux
# Ubuntu/Debian
sudo apt-get install tmux
# macOS
brew install tmux
# CentOS/RHEL
sudo yum install tmux
安装 GNU coreutils(macOS)
Ralph 使用 timeout 命令来实现执行超时。在 macOS 上,您需要安装 GNU coreutils:
# 安装 coreutils(提供 gtimeout)
brew install coreutils
# 验证安装
gtimeout --version
Ralph 会自动检测并在 macOS 上使用 gtimeout。安装完成后无需额外配置。
监控与调试
实时仪表板
# 推荐使用集成的 tmux 监控
ralph --monitor
# 在单独终端手动监控
ralph-monitor
实时显示:
- 当前循环次数及状态
- 已使用的 API 调用数与限额
- 最近的日志条目
- 速率限制倒计时
tmux 控制键:
Ctrl+B后按D- 分离会话(Ralph 仍会继续运行)Ctrl+B后按←/→- 切换窗格tmux list-sessions- 查看活动会话tmux attach -t <session-name>- 重新连接到会话
状态检查
# JSON 格式的状态输出
ralph --status
# 手动检查日志
tail -f .ralph/logs/ralph.log
常见问题
- Ralph 在第一次循环中静默退出 - 可能是 Claude Code CLI 未安装或未添加到 PATH 中。Ralph 在启动时会验证命令是否存在,并显示安装说明。如果使用 npx,请在
.ralphrc文件中添加CLAUDE_CODE_CMD="npx @anthropic-ai/claude-code"。 - 速率限制 - Ralph 会自动等待并显示倒计时。
- 5 小时 API 限制 - Ralph 会检测并提示用户采取行动(等待或退出)。
- 卡住的循环 - 检查
fix_plan.md文件,查看是否有不明确或冲突的任务。 - 提前退出 - 如果 Ralph 过早停止,请检查退出阈值。
- 过早退出 - 检查 Claude 是否设置了
EXIT_SIGNAL: false(Ralph 现在会尊重此设置)。 - 执行超时 - 对于复杂操作,可增加
--timeout参数的值。 - 缺少依赖项 - 确保已安装 Claude Code CLI 和 tmux。
- tmux 会话丢失 - 使用
tmux list-sessions和tmux attach重新连接。 - 会话过期 - 默认情况下,会话会在 24 小时后过期;使用
--reset-session可以重新开始。 - timeout: command not found(macOS) - 安装 GNU coreutils:
brew install coreutils。 - 权限被拒绝 - 当 Claude Code 被拒绝执行某些命令时,Ralph 会停止:
- 编辑
.ralphrc文件,将ALLOWED_TOOLS更新为包含所需工具。 - 常见模式:
Bash(npm *)、Bash(git *)、Bash(pytest)。 - 更新
.ralphrc后运行ralph --reset-session。 - 使用
ralph --monitor重新启动。
- 编辑
贡献
Ralph 正在积极寻求贡献者!我们正朝着 v1.0.0 版本努力,拥有清晰的优先级和详细的路线图。
请参阅 CONTRIBUTING.md 获取完整的贡献指南,其中包括:
- 入门和设置说明
- 开发工作流程和提交规范
- 代码风格指南
- 测试要求(必须达到 100% 的通过率)
- 拉取请求流程和代码审查指南
- 质量标准和检查清单
快速入门
# 分支并克隆
git clone https://github.com/YOUR_USERNAME/ralph-claude-code.git
cd ralph-claude-code
# 安装依赖并运行测试
npm install
npm test # 所有 566 个测试必须通过
优先贡献领域
- 测试实现 - 帮助扩展测试覆盖率
- 功能开发 - 日志轮转、试运行模式、指标
- 文档 - 教程、故障排除指南、示例
- 实际测试 - 使用 Ralph,报告 bug,分享反馈
每一份贡献都很重要 - 从修复错别字到实现重大功能!
许可证
本项目采用 MIT 许可证授权 - 详情请参阅 LICENSE 文件。
致谢
- 灵感来源于 Geoffrey Huntley 创建的 Ralph 技术
- 专为 Anthropic 的 Claude Code 构建
- 社区的反馈与贡献
相关项目
- Claude Code - 驱动 Ralph 的 AI 编码助手
- Aider - Ralph 技术的原始实现
命令参考
安装命令(只需运行一次)
./install.sh # 全局安装 Ralph
./uninstall.sh # 从系统中移除 Ralph(专用脚本)
./install.sh uninstall # 替代方案:从系统中移除 Ralph
./install.sh --help # 显示安装帮助
ralph-migrate # 将现有项目迁移到 .ralph/ 结构
Ralph 循环选项
ralph [OPTIONS]
-h, --help 显示帮助信息
-c, --calls NUM 设置每小时最大调用次数(默认:100)
-p, --prompt FILE 设置提示文件(默认:PROMPT.md)
-s, --status 显示当前状态并退出
-m, --monitor 使用 tmux 会话和实时监控启动
-v, --verbose 在执行过程中显示详细进度更新
-l, --live 启用实时流输出(即时查看 Claude Code)
-t, --timeout MIN 设置 Claude Code 执行超时时间(1-120 分钟,默认:15 分钟)
--output-format FORMAT 设置输出格式:json(默认)或文本
--allowed-tools TOOLS 设置允许使用的 Claude 工具(默认:Write, Read, Edit, Bash(git *), Bash(npm *), Bash(pytest))
--no-continue 禁用会话连续性(每次循环都从头开始)
--reset-circuit 重置断路器
--circuit-status 显示断路器状态
--auto-reset-circuit 启动时自动重置断路器(绕过冷却时间)
--reset-session 手动重置会话状态
-b, --backup 在每次循环前启用自动 git 备份分支(需要 git)
--rollback [BRANCH] 回滚到备份分支(若未指定,则列出可用分支)
项目相关命令(按项目)
ralph-setup project-name # 创建新的 Ralph 项目
ralph-enable # 在现有项目中启用 Ralph(交互式)
ralph-enable-ci # 在现有项目中启用 Ralph(非交互式)
ralph-import prd.md project # 将 PRD/规格转换为 Ralph 项目
ralph --monitor # 使用集成监控启动
ralph --status # 检查当前循环状态
ralph --verbose # 启用详细进度更新
ralph --timeout 30 # 设置 30 分钟的执行超时
ralph --calls 50 # 限制每小时 API 调用次数为 50 次
ralph --reset-session # 手动重置会话状态
ralph --live # 启用实时流输出
ralph-monitor # 手动监控仪表板
tmux 会话管理
tmux list-sessions # 查看活跃的 Ralph 会话
tmux attach -t <name> # 重新连接到已分离的会话
# Ctrl+B then D # 分离会话(保持运行)
开发路线图
Ralph 目前正处于积极开发阶段,正朝着 v1.0.0 版本稳步前进。完整路线图请参阅 IMPLEMENTATION_PLAN.md。
当前状态:v0.11.5
已交付内容:
- 核心循环功能,具备智能退出检测
- 双条件退出门控(完成指标 + EXIT_SIGNAL)
- 限流机制(每小时100次调用)及熔断模式
- 具有语义理解能力的响应分析器
- 556项全面测试(100%通过率)
- 直播输出模式,可实时查看Claude Code代码
- tmux集成与实时监控
- 支持现代CLI JSON解析的PRD导入功能
- 安装系统与项目模板
- 现代化CLI命令,支持JSON输出
- 使用GitHub Actions的CI/CD流水线
- 面向现有项目的交互式
ralph-enable向导 .ralphrc配置文件支持- 基于自动重置触发器的会话生命周期管理
- 可配置超时时间的会话过期机制
- 专用卸载脚本
测试覆盖率细分:
- 单元测试:477项(CLI解析、JSON处理、退出检测、限流与令牌预算、会话连续性、启用向导、直播流、熔断恢复、文件保护、完整性检查)
- 集成测试:136项(循环执行、边缘场景、安装、项目初始化、PRD导入)
- 测试文件:18个
通往v1.0.0的道路(约4周)
增强测试
- 安装与设置工作流测试
- tmux集成测试
- 监控仪表盘测试
核心功能
- 日志轮转功能
- 模拟运行模式
高级功能与优化
- 端到端测试
- 最终文档编写与发布准备
详细进度跟踪请参阅IMPLEMENTATION_STATUS.md。
如何贡献
Ralph现正招募贡献者!完整指南请见CONTRIBUTING.md。优先领域:
- 测试实现 - 帮助扩展测试覆盖率(查看计划)
- 功能开发 - 日志轮转、模拟运行模式、指标收集
- 文档编写 - 使用示例、教程、故障排除指南
- Bug报告 - 实际使用反馈及边缘场景
准备好让AI构建你的项目了吗? 从./install.sh开始,剩下的就交给Ralph吧!
星标历史
常见问题
相似工具推荐
openclaw
OpenClaw 是一款专为个人打造的本地化 AI 助手,旨在让你在自己的设备上拥有完全可控的智能伙伴。它打破了传统 AI 助手局限于特定网页或应用的束缚,能够直接接入你日常使用的各类通讯渠道,包括微信、WhatsApp、Telegram、Discord、iMessage 等数十种平台。无论你在哪个聊天软件中发送消息,OpenClaw 都能即时响应,甚至支持在 macOS、iOS 和 Android 设备上进行语音交互,并提供实时的画布渲染功能供你操控。 这款工具主要解决了用户对数据隐私、响应速度以及“始终在线”体验的需求。通过将 AI 部署在本地,用户无需依赖云端服务即可享受快速、私密的智能辅助,真正实现了“你的数据,你做主”。其独特的技术亮点在于强大的网关架构,将控制平面与核心助手分离,确保跨平台通信的流畅性与扩展性。 OpenClaw 非常适合希望构建个性化工作流的技术爱好者、开发者,以及注重隐私保护且不愿被单一生态绑定的普通用户。只要具备基础的终端操作能力(支持 macOS、Linux 及 Windows WSL2),即可通过简单的命令行引导完成部署。如果你渴望拥有一个懂你
stable-diffusion-webui
stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面,旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点,将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。 无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师,还是想要深入探索模型潜力的开发者与研究人员,都能从中获益。其核心亮点在于极高的功能丰富度:不仅支持文生图、图生图、局部重绘(Inpainting)和外绘(Outpainting)等基础模式,还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外,它内置了 GFPGAN 和 CodeFormer 等人脸修复工具,支持多种神经网络放大算法,并允许用户通过插件系统无限扩展能力。即使是显存有限的设备,stable-diffusion-webui 也提供了相应的优化选项,让高质量的 AI 艺术创作变得触手可及。
everything-claude-code
everything-claude-code 是一套专为 AI 编程助手(如 Claude Code、Codex、Cursor 等)打造的高性能优化系统。它不仅仅是一组配置文件,而是一个经过长期实战打磨的完整框架,旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。 通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能,everything-claude-code 能显著提升 AI 在复杂任务中的表现,帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略,使得模型响应更快、成本更低,同时有效防御潜在的攻击向量。 这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库,还是需要 AI 协助进行安全审计与自动化测试,everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目,它融合了多语言支持与丰富的实战钩子(hooks),让 AI 真正成长为懂上
opencode
OpenCode 是一款开源的 AI 编程助手(Coding Agent),旨在像一位智能搭档一样融入您的开发流程。它不仅仅是一个代码补全插件,而是一个能够理解项目上下文、自主规划任务并执行复杂编码操作的智能体。无论是生成全新功能、重构现有代码,还是排查难以定位的 Bug,OpenCode 都能通过自然语言交互高效完成,显著减少开发者在重复性劳动和上下文切换上的时间消耗。 这款工具专为软件开发者、工程师及技术研究人员设计,特别适合希望利用大模型能力来提升编码效率、加速原型开发或处理遗留代码维护的专业人群。其核心亮点在于完全开源的架构,这意味着用户可以审查代码逻辑、自定义行为策略,甚至私有化部署以保障数据安全,彻底打破了传统闭源 AI 助手的“黑盒”限制。 在技术体验上,OpenCode 提供了灵活的终端界面(Terminal UI)和正在测试中的桌面应用程序,支持 macOS、Windows 及 Linux 全平台。它兼容多种包管理工具,安装便捷,并能无缝集成到现有的开发环境中。无论您是追求极致控制权的资深极客,还是渴望提升产出的独立开发者,OpenCode 都提供了一个透明、可信
ComfyUI
ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎,专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式,采用直观的节点式流程图界面,让用户通过连接不同的功能模块即可构建个性化的生成管线。 这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景,也能自由组合模型、调整参数并实时预览效果,轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性,不仅支持 Windows、macOS 和 Linux 全平台,还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构,并率先支持 SDXL、Flux、SD3 等前沿模型。 无论是希望深入探索算法潜力的研究人员和开发者,还是追求极致创作自由度的设计师与资深 AI 绘画爱好者,ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能,使其成为当前最灵活、生态最丰富的开源扩散模型工具之一,帮助用户将创意高效转化为现实。
gemini-cli
gemini-cli 是一款由谷歌推出的开源 AI 命令行工具,它将强大的 Gemini 大模型能力直接集成到用户的终端环境中。对于习惯在命令行工作的开发者而言,它提供了一条从输入提示词到获取模型响应的最短路径,无需切换窗口即可享受智能辅助。 这款工具主要解决了开发过程中频繁上下文切换的痛点,让用户能在熟悉的终端界面内直接完成代码理解、生成、调试以及自动化运维任务。无论是查询大型代码库、根据草图生成应用,还是执行复杂的 Git 操作,gemini-cli 都能通过自然语言指令高效处理。 它特别适合广大软件工程师、DevOps 人员及技术研究人员使用。其核心亮点包括支持高达 100 万 token 的超长上下文窗口,具备出色的逻辑推理能力;内置 Google 搜索、文件操作及 Shell 命令执行等实用工具;更独特的是,它支持 MCP(模型上下文协议),允许用户灵活扩展自定义集成,连接如图像生成等外部能力。此外,个人谷歌账号即可享受免费的额度支持,且项目基于 Apache 2.0 协议完全开源,是提升终端工作效率的理想助手。
