A minimal, file‑based agent loop for autonomous coding.
857
Stars
77
Forks
11
Watchers
8
Issues

Ralph 是一个极简的、基于文件的自主编程代理循环系统。每次迭代都会重新开始,读取相同的磁盘状态,并一次提交一个任务(Story)。
Ralph 将文件和 Git 视为内存,而非模型上下文:
.ralph/ 目录中。在任意位置安装并运行 Ralph:
npm i -g @iannuttall/ralph
ralph prd # 启动交互式提示
ralph build 1 # 执行一次 Ralph 运行
Ralph 会按以下顺序查找模板:
.agents/ralph/(如果存在)。状态和日志文件始终存放在项目中的 .ralph/ 目录下。
ralph install
这会在当前代码库中创建 .agents/ralph/,以便你自定义提示词和循环行为。在安装过程中,系统会询问你是否要添加所需的技能(skills)。
ralph install --skills
系统会提示你选择代理程序(codex/claude/droid/opencode)以及选择局部还是全局安装。安装的技能包括:commit、dev-browser、prd。
如果你在执行 ralph install 时跳过了技能安装,可以随时通过 ralph install --skills 进行补充。
ralph prd
需要 prd 技能(通过 ralph install --skills 安装)。
提示词示例:
A lightweight uptime monitor (Hono app), deployed on Cloudflare, with email alerts via AWS SES
默认输出(代理会在 .agents/tasks/ 中选择一个简短的文件名):
.agents/tasks/prd-.json
ralph build 1 # 执行一次 Ralph 运行
不提交更改的空运行(dry run):
ralph build 1 --no-commit # 执行一次 Ralph 运行
为 ralph prd 覆盖 PRD 输出路径:
ralph prd --out .agents/tasks/prd-api.json
可选的人类概览(从 JSON 生成):
ralph overview
这会在 PRD 旁边写入一份简短的概览:prd-.overview.md。
PRD 的任务状态字段由循环自动更新:
open → 可选择in_progress → 被正在运行的循环锁定(带有 startedAt)done → 已完成(带有 completedAt)如果循环崩溃导致任务卡在 in_progress,你可以在 .agents/ralph/config.sh 中设置 STALE_SECONDS,允许 Ralph 自动重新开启卡住的任务。
你可以通过 CLI 参数指定不同的 PRD JSON 文件:
ralph build 1 --prd .agents/tasks/prd-api.json # 执行一次 Ralph 运行
可选的进度文件覆盖:
ralph build 1 --progress .ralph/progress-api.md # 执行一次 Ralph 运行
如果 .agents/tasks/ 中存在多个 PRD JSON 文件且你省略了 --prd 参数,Ralph 会提示你进行选择。
可选配置文件(如果你已安装模板):
.agents/ralph/config.sh
在 .agents/ralph/config.sh 中设置 AGENT_CMD 以切换代理:
AGENT_CMD="codex exec --yolo -"
AGENT_CMD="claude -p --dangerously-skip-permissions \"\$(cat {prompt})\""
AGENT_CMD="droid exec --skip-permissions-unsafe -f {prompt}"
AGENT_CMD="opencode run \"$(cat {prompt})\""
或者在每次运行时覆盖:
ralph prd --agent=codex
ralph build 1 --agent=codex # 执行一次 Ralph 运行
ralph build 1 --agent=claude # 执行一次 Ralph 运行
ralph build 1 --agent=droid # 执行一次 Ralph 运行
ralph build 1 --agent=opencode # 执行一次 Ralph 运行
如果未安装 CLI,Ralph 会打印安装提示:
codex -> npm i -g @openai/codex
claude -> curl -fsSL https://claude.ai/install.sh | bash
droid -> curl -fsSL https://app.factory.ai/cli | sh
opencode -> curl -fsSL https://opencode.ai/install.sh | bash
progress.md — 仅追加的进度日志guardrails.md — “路标”(经验教训)activity.log — 活动及时间日志errors.log — 重复出现的失败及笔记runs/ — 原始运行日志及摘要.agents/ralph 是可移植的,可以在不同仓库间复制。.ralph 是项目级别的状态存储。AGENT_CMD 中使用 {prompt}。examples/commands.md。opencode serve,并取消 .agents/ralph/agents.sh 中 AGENT_OPENCODE_CMD 行的注释以使用 --attach http://localhost:4096。这可以避免每次运行时的冷启动。空运行冒烟测试(无需代理):
npm test
快速代理健康检查(真实代理调用,最少输出):
npm run test:ping
可选集成测试(需要安装代理):
RALPH_INTEGRATION=1 npm test
完整的真实代理循环测试:
npm run test:real
Ralph 是一个极简的、基于文件的自主编程代理循环系统,旨在通过将文件系统和 Git 作为外部存储而非模型上下文,实现自动化的代码开发流程。该项目通过将任务拆解为独立迭代,确保每次循环都能从稳定的磁盘状态开始,从而高效处理复杂的开发需求。
核心功能包括:通过 JSON 格式的 PRD 定义任务需求与状态流转,支持将文件系统和 Git 作为状态持久化存储以优化模型上下文占用,通过独立的循环机制每次执行一个完整的故事任务,允许用户自定义模板和提示词以适配不同的开发工作流,以及提供详细的运行日志、活动记录和错误追踪功能。
该项目适用于需要自动化执行编码任务的开发者,特别适合在复杂的软件项目中进行模块化、分步骤的功能开发与迭代管理。