让 Claude Code 自己跑完一整晚:Ralph 的 Agent Loop 把 PRD 当作待办清单
如果你让 Claude Code 跑一晚上,第二天醒来发现它还在写第 3 个 story,而 PRD 里还有 17 个——这不是科幻片,这是当下大模型 Coding 工具的真实日常。
把 Agent 塞进 while true 循环里硬跑,迟早会撞上两个老大难:上下文撑爆、错误状态滚雪球。最近 GitHub 上蹿出一个 21k star 的项目 snarktank/ralph,专门治这个毛病。它的核心思路意外地朴素:每跑完一轮就扔掉当前实例,开个全新上下文,靠 git history + progress.txt + prd.json 三件套来接力。
Ralph 在跑什么
Ralph 本质上是一个 bash 循环脚本(ralph.sh),默认 10 轮,每一轮:
- 从
prd.json里挑优先级最高、passes: false的 user story - 开一个全新的 Amp 或 Claude Code 实例,只把这一条 story + 进度文件丢给它
- 让 Agent 写代码、跑 typecheck 和测试,过了就 commit,把 story 标记成
passes: true - 把这一轮学到的东西 append 到
progress.txt,下一轮复用 - 一直循环到所有 story 通过,或达到
max_iterations
这种”每轮干净上下文、长期记忆靠文件“的设计,正好绕开了 Claude Code 自己那个 200k token 的硬天花板。配合 Amp 的 autoHandoff 配置(context 90% 自动交接),连超大 story 都能分段消化。
上手只要三步
- 装 skill:把
skills/prd和skills/ralph复制到~/.claude/skills/,或者直接/plugin marketplace add snarktank/ralph - 写 PRD:在 Claude Code 里说”用 prd skill 给 XX 功能写个 PRD”,回答几个澄清问题后存到
tasks/prd-xx.md - 转格式 + 起跑:让 ralph skill 把 PRD 转成
prd.json,再bash scripts/ralph/ralph.sh --tool claude 30开 30 轮跑着睡觉去
跑完之后你会拿到一堆原子 commit、每个 story 对应一个 PR、progress.txt 里满是”这个 API 有坑””别忘了 import X”这种血泪笔记——这些都是下一次同类项目能直接复用的资产。
为什么值得收
- 门槛低:脚本 + 两个 skill + 一份 PRD JSON,没有云端依赖、不锁平台
- 能复用:memory 落盘到 git,团队换人也能顺着
progress.txt接上 - 可观察:每一轮对应一个干净 commit,做 code review 比看一份巨型 diff 容易一万倍
最大的副作用可能是:以后写 PRD 不再是给产品经理交差,而是给自己第二天起床后留的”遗书”。
GitHub:https://github.com/snarktank/ralph
评论区
0 条评论
登录后可评论。