Research Hub

Autonomous Agent Loop

Ralph 调研报告

Ralph 是一个围绕 PRD 的自治编码循环:每轮启动新的 Amp 或 Claude Code 实例,只实现一个最高优先级且未通过的用户故事,通过 git、progress.txt 和 prd.json 保留跨轮记忆。

fresh context per iteration prd.json progress.txt dangerous permission flags
Ralph 自动化循环流程图
图片来源:snarktank/ralph 仓库中的流程图。

1. 结论摘要

核心价值

Ralph 把长任务拆成多个“干净上下文”的短迭代,减少单个上下文过长导致的遗忘和混乱。它适合有清晰 PRD、可验证验收标准、自动化质量门禁的代码库。

核心风险

脚本默认会使用 amp --dangerously-allow-allclaude --dangerously-skip-permissions --print。这意味着它本质上是高权限自动编码循环,必须在隔离分支和低风险环境中使用。

19,221GitHub stars,调研时 API 返回值
1,911forks
73open issues
0调研时没有 GitHub latest release

2. 当前状态

项目观察
仓库snarktank/ralph,默认分支 main,MIT License。
定位README 描述为 autonomous AI agent loop,重复运行 AI coding tools,直到 PRD 中所有条目完成。
工具支持 Amp CLI 和 Claude Code。Amp 是默认工具,Claude 通过 --tool claude 选择。
主要文件ralph.shprompt.mdCLAUDE.mdprd.jsonprogress.txtskills/prdskills/ralph.claude-plugin
可视化仓库包含 flowchart/ralph-flowchart.png,并提供 GitHub Pages 交互流程图。

3. Ralph 循环机制

1. 读取 PRD读取 prd.json,找到 passes: false 的最高优先级故事。
2. 新实例执行每轮启动全新的 Amp 或 Claude Code,上下文是干净的。
3. 实现单故事只做一个故事,保持变更可控。
4. 验证并提交运行 typecheck、lint、test,通过后提交并标记故事通过。
5. 写入记忆把经验写入 progress.txt 和 AGENTS/CLAUDE 规则文件。

运行方式

# Amp 默认
./scripts/ralph/ralph.sh 10

# Claude Code
./scripts/ralph/ralph.sh --tool claude 10

技能安装

/plugin marketplace add snarktank/ralph
/plugin install ralph-skills@ralph-marketplace

4. 输入、输出与适用任务

输入

用户先用 PRD skill 创建 tasks/prd-[feature].md,再用 Ralph skill 转成 prd.json。每个 user story 必须足够小,并有可验证验收标准。

输出

Ralph 会产生代码变更、git commit、更新后的 prd.json、追加式 progress.txt、可能的 AGENTS.md 或 CLAUDE.md 规则更新。

适合任务

适合数据库小迁移、单组件改造、服务端动作、列表过滤、清晰的 UI 小故事。不适合“整个仪表盘”“添加完整认证”“重构全部 API”等大块任务。

5. 风险分析

危险权限参数

ralph.sh 对 Amp 使用 --dangerously-allow-all,对 Claude Code 使用 --dangerously-skip-permissions。如果项目里有删除脚本、部署脚本、生产凭据或外部写入权限,风险很高。

错误会跨轮累积

每轮都会读取 git history、progress.txtprd.json。如果上一轮记录了错误模式或提交了有问题代码,后续轮次可能把错误当成事实继续放大。

PRD 注入与任务污染

prd.jsonprogress.txt 是跨轮记忆。如果里面混入不可信指令,可能影响后续 Agent 行为。PRD 应只承载结构化需求,不承载权限绕过指令。

质量门禁薄弱

Ralph 依赖“项目自己的质量检查”。如果没有测试、typecheck 或浏览器验证,它仍可能把坏代码标为通过并提交。

使用建议

阶段建议
启动前在干净 feature branch、临时工作树或容器中运行;移除生产密钥;设置较小 max iterations。
PRD每个 story 控制在一个上下文可完成,验收标准必须可测试,UI story 必须要求浏览器验证。
执行中每轮后审查 commit、diff、progress;发现偏航立即停止循环。
完成后人工跑完整测试、代码审查、secret scan,再决定是否合并。