拉尔夫·维古姆(Ralph Wiggum):没完没了的 Claude 代码循环
这其实是个梗:
Ralph Wiggum 是动画片《辛普森一家》中那个总是搞不清状况、智商不太在线的孩子。他最著名的梗图是 “I’m helping”(我在帮忙)。

我们在calude-code源代码仓库中可以看到这个插件
https://github.com/anthropics/claude-code/tree/main/plugins/ralph-wiggum
核心概念:
# You run ONCE:
/ralph-loop "Your task description" --completion-promise "DONE"
# Then Claude Code automatically:
# 1. Works on the task
# 2. Tries to exit
# 3. Stop hook blocks exit
# 4. Stop hook feeds the SAME prompt back
# 5. Repeat until completion
翻译一下:
# 执行命令
/ralph-loop "Your task description" --completion-promise "DONE"
# 接下来 Claude Code 将自动执行以下操作:
# 1. 处理/执行该任务
# 2. 尝试退出程序
# 3. “停止挂钩(Stop hook)”拦截并阻止退出
# 4. “停止挂钩”将完全相同的提示词(prompt)重新传回给系统
# 5. 重复上述循环,直到任务完成(即出现 "DONE")
说白了就是Claude执行了一轮后要退出,然后拉尔夫就蹦出来阻止,没完;再跑一轮,又想退出,又被阻止,如此往复。
直到任务完成,或者达到了最大轮数的限制
这种不撞南墙不回头的气势值得赞叹
我们如何在实践中应用呢?
一、旧系统重构或框架迁移
/ralph-loop "Migrate tests from Jest to Vitest.
Success criteria:
- All tests pass
- Snapshots unchanged
- Updated config files
- README updated
Output <promise>DONE</promise> when complete." \
--max-iterations 25 \
--completion-promise "DONE"
/ralph-loop "将测试框架从 Jest 迁移到 Vitest。
成功标准:
- 所有测试用例通过
- 快照(Snapshots)保持不变
- 配置文件已更新
- README 文档已更新
任务完成后输出 <promise>DONE</promise>。" \
--max-iterations 25 \
--completion-promise "DONE"
这里的 DONE 是个目标,claude 是可以自动识别这个词的
二、测试覆盖率%
/ralph-loop "Add tests for all uncovered functions in src/utils.
Success criteria:
- Coverage >= 85%
- All tests green
- No lint errors
Output <promise>COMPLETE</promise> when done." \
--max-iterations 20 \
--completion-promise "COMPLETE"
/ralph-loop "为 src/utils 目录下所有未覆盖的函数添加测试。
成功标准:
- 测试覆盖率 >= 85%
- 所有测试通过(显示绿色)
- 无 Lint(代码规范)错误
完成后输出 <promise>COMPLETE</promise>。" \
--max-iterations 20 \
--completion-promise "COMPLETE"
这里的COMPLETE同样是个目标,可以被claude自动识别
三、启动一个新项目
/ralph-loop "Build a minimal TODO API.
Requirements:
- CRUD endpoints
- Input validation
- Tests for each endpoint
- README with API docs
Output <promise>READY</promise> when done." \
--max-iterations 30 \
--completion-promise "READY"
/ralph-loop "构建一个极简的 TODO API 接口。
需求:
- 实现增删改查(CRUD)接口
- 输入验证(Input validation)
- 每个接口均附带测试用例
- 包含 API 文档的 README 文件
完成后输出 <promise>READY</promise>。" \
--max-iterations 30 \
--completion-promise "READY"
READY 一样可以被 Claude 自动识别
四、代码库统一标准
/ralph-loop "Standardise error handling in src/:
- Replace inline string errors with Error subclasses
- Add error tests where missing
- Keep public API unchanged
Output <promise>STANDARDISED</promise> when done." \
--max-iterations 15 \
--completion-promise "STANDARDISED"
/ralph-loop "标准化 src/ 目录下的错误处理逻辑:
- 将内联字符串错误替换为 Error 的子类(Error subclasses)
- 为缺失的地方补充错误处理测试
- 保持公共 API(外部接口)不变
完成后输出 <promise>STANDARDISED</promise>。" \
--max-iterations 15 \
--completion-promise "STANDARDISED"
STANDARDISED 一样是明确的指示词
那ralph的标准模板
TASK:
<one sentence describing the change>
SUCCESS CRITERIA:
- <measurable requirement 1>
- <measurable requirement 2>
- <test/build/linters must pass>
PROCESS:
1) Make the smallest change that moves toward success
2) Run tests or validation
3) Fix failures and repeat
4) If stuck after N iterations, summarise blockers and suggest next steps
OUTPUT:
<promise>YOUR_PROMISE</promise> only when ALL criteria are met
就是:大目标、然后成功的标准是什么(最好是具体可实现的细节);每轮的输出用语义明确的词指示成功;最后加上最大迭代次数。
那运行 /plugin 就可以安装这个插件了