原文来自 Datawhale 的 Easy-Vibe 教程:如何让 Claude Code 长长时间工作
之前一直在用 Claude Code 写代码,但有一个很烦的问题——它干着干着就停了。你让它重构一个模块,它改了两个文件就跟你说"搞定了",其实还有一堆没改。或者你让它跑测试,跑到一半报错了,它就卡在那里不动了,也不说重试一下。
总之,最近看到了 Datawhale 的 vibe coding 教程里有一节专门讲这个,讲得挺系统的,我这里也记录一下大概,顺便加点自己的理解。
核心问题:AI 不知道自己没干完
这个其实是所有 AI 编程工具的通病。人判断"干完了没"靠的是客观标准——测试跑通了没、功能能用不、代码质量行不行。但 AI 靠的是"感觉"——它觉得自己输出的差不多了,就停下来了。
所以解决方案的核心思路就是:别让 AI 自己判断什么时候停,让外部系统来检查。
具体来说就是三个问题:
- 真的完成了吗?
- 满足客观验收标准吗?
- 有没有漏掉什么?
如果答案都是"没有",就把任务重新丢给它,继续干。
方法一:While True 循环(最朴素)
五行代码搞定:
| |
逻辑很简单——从 PROMPT.md 读任务,丢给 Claude,Claude 干完了退出,循环又把它拉起来继续干。Ctrl+C 手动停。
可以,简单粗暴。但问题也很明显——它不知道啥时候该停,你忘了关它就一直循环,API 账单蹭蹭涨。
加个安全版本的话,限制最大迭代次数就行:
| |
方法二:Ralph Wiggum 插件(推荐)
这个是正经方案。Ralph Wiggum 是 Anthropic 官方的插件,核心机制叫 Stop Hook——Claude 想退出的时候,Hook 会拦截,检查输出里有没有你设定的完成标记。没有就重新注入任务让它继续干,有了才放它走。
安装:
| |
用法:
| |
两个关键参数:
--max-iterations:安全阀,建议 20-100,到了就强制停--completion-promise:完成标记,Claude 输出里出现这个字符串就算完成
原文里有个很有意思的例子——Ralph 的命名来源是《辛普森一家》里的 Ralph Wiggum,一个傻乎乎的小孩角色。澳大利亚开发者 Geoffrey Huntley 2025 年夏天写的这个脚本,两周就拿了 7000+ 的 star。有人用它一晚上跑了 6 个完整项目,有人花了 297 美刀的 API 费用就干完了价值 5 万美金的合同活。
Prompt 怎么写
这个挺关键的。Prompt 写得烂,Ralph 循环再多次也没用。
坏的 prompt:"写一个 todo API"——啥验收标准都没有,AI 自己都判断不了完没完。
好的 prompt 要包含:
- 分阶段的明确要求:第一阶段做 CRUD,第二阶段加验证,第三阶段写测试
- 客观验收标准:所有测试通过、linter 没报错、README 有 API 文档
- 完成标记:
<promise>TODO_API_COMPLETE</promise>
原文给了好几个模板,挑几个我觉得实用的:
测试迁移(Jest → Vitest):
| |
批量加 TypeScript 类型注解:
| |
实战案例
原文里有几个案例挺震撼的:
Y Combinator 黑客松:一个团队晚上 11 点把 6 个产品的 MVP spec 丢给 Ralph,设了 200 次迭代上限,然后去睡觉了。第二天早上起来——6 个可以 demo 的项目,API 费用 297 美刀。
Boris Cherny(Claude Code 负责人):用 Ralph + Opus 4.5 干了 30 天,259 个 PR,497 次 commit,加了 4 万行代码,删了 3.8 万行。100% 由 Claude Code 写的。
CURSED 编程语言:Geoffrey Huntley 用 Ralph Loop 花了 3 个月,从零构建了一个完整的编程语言,关键字是 Z 世代的网络用语(slay、sus、based),包含完整的 LLVM 编译器和标准库。
遗留项目重构:有人周末把一个烂摊子项目丢给 Ralph,周一来——47 次 commit,干净的代码结构,75% 测试覆盖率,完整的 API 文档。费用大约 12 美刀。
方法三:增强版 Ralph
社区有人做了个增强版:frankbria/ralph-claude-code
多了几个东西:
- 双重退出条件:不仅要有完成标记,还要有显式的 EXIT_SIGNAL
- 限速:默认每小时 100 次,防止 API 账单爆炸
- 智能断路器:连续 5 次输出完成标记但没有实质变化,强制退出
- 实时仪表盘:CLI 显示迭代次数、进度、预估费用
适合生产环境用,基础版 Ralph 够用的话没必要上这个。
方法四:Ctrl+B 后台任务
这个其实不算"让 AI 一直干活"的方案,但也很实用。Claude Code 里按 Ctrl+B 可以把当前任务推到后台,然后你继续干别的。用 /tasks 看后台任务列表。
适合跑测试、build 这种你不想等的长时间操作。
什么时候该用,什么时候不该用
原文给了一个很实用的判断标准,问自己三个问题:
- 能定义明确的完成标准吗?(能 → 适合)
- 有客观的验证方法吗?(测试、build、typecheck → 适合)
- 这个任务需要我持续介入吗?(不需要 → 适合)
三个都是"不需要/有",就放心交给 Ralph。
适合的场景:测试迁移、大规模重构、框架迁移、批量加类型、提升测试覆盖率、文档生成、UI 统一。
不适合的场景:架构决策、安全关键代码、需求模糊、探索性工作、创意设计。
安全机制
不管用哪种方法,一定要加安全阀:
- 迭代上限:
--max-iterations必须设 - API 预算预警:设个 10/50/100 美刀的阈值
- 检查实质性变更:如果最近 5 次 commit 没有实质变化,可能在空转
| |
这篇教程挺全的,从最朴素的 while true 循环到 Ralph 插件到增强版都讲了,还有个完整的 BBS 论坛系统的实战案例。
晚上丢给它跑,第二天来收货的感觉肯定很好。