A minimal, file‑based agent loop for autonomous coding.
927
Stars
90
Forks
12
Watchers
10
Issues

Ralph 是一个极简的、基于文件的自治编程 Agent 循环。每一次迭代都会从零开始,读取相同的磁盘状态,并一次完成一个需求(story)。
Ralph 将 文件和 git 视为内存,而非模型上下文:
.ralph/ 目录中。在任意位置安装并运行 Ralph:
npm i -g @iannuttall/ralph
ralph prd # 启动交互式提示
ralph build 1 # 执行一次 Ralph 运行
Ralph 会按以下顺序查找模板:
.agents/ralph/(如果存在)状态和日志始终保存在项目中的 .ralph/ 目录下。
ralph install
这会在当前代码库中创建 .agents/ralph/,以便你自定义提示词(prompts)和循环行为。安装过程中,系统会询问你是否需要添加必要的技能(skills)。
ralph install --skills
系统会提示你选择 Agent(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
默认输出(Agent 会在 .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 标志将 Ralph 指向不同的 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:
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。这样可以避免每次运行时进行冷启动。试运行冒烟测试(无需 Agent):
npm test
快速 Agent 健康检查(真实的 Agent 调用,输出最少):
npm run test:ping
可选集成测试(需要安装 Agent):
RALPH_INTEGRATION=1 npm test
完整真实 Agent 循环测试:
npm run test:real
Ralph 是一个轻量级的、基于文件的自动化编码智能体循环工具。它通过将 Git 和本地文件系统作为核心状态存储,能够按任务(Story)序列自动执行代码编写与迭代,从而简化了自主代理的开发工作流。
Ralph 将产品需求文档(PRD)作为任务定义的核心,实现了需求拆解与状态追踪的闭环管理。它支持自定义代理执行逻辑,能够根据需求灵活切换不同的 AI 模型(如 Claude、Codex 等)。通过将所有过程记录与状态持久化于项目本地的隐藏目录,确保了编码任务的可追踪性与故障恢复能力。其灵活的模板机制允许开发者对提示词和执行流程进行深度定制,并能自动处理任务的状态流转,防止进度卡顿。
该工具适用于需要自动化处理复杂编码任务的开发者及小型开发团队,特别适合在项目开发中进行迭代式的需求交付与自主化代码生成。