Claude Code 的官方插件市场中有一个引人注目的条目:ralph-wiggum。它以《辛普森一家》中的角色命名,实现了自主开发循环,让 Claude 在没有人类干预的情况下工作数小时。
这个插件很简单。但其意义深远。
它的作用
Ralph Wiggum 将 Claude Code 变成一个持久循环。你给它一个提示词,它会一直工作直到完成(或直到你停止它)。
arduino
/ralph-loop "将所有测试从 Jest 迁移到 Vitest" --max-iterations 50 --completion-promise "所有测试已完成迁移"
Claude 尝试进行迁移。当它认为完成时,插件的 Stop hook 会拦截退出,重新注入原始提示词,Claude 继续工作。每次迭代都能看到之前运行修改的文件和 git 历史。循环持续进行,直到满足完成标准或达到迭代次数上限。
Stop hook 的工作原理
我之前详细介绍了 Stop hook 机制。Ralph Wiggum 使用退出代码 2 来阻止 Claude 停止并重新注入原始提示词。
背后的理念
这个技术来自 Geoffrey Huntley,他简单地描述道:"Ralph 就是一个 Bash 循环。"
bash
while :; do cat PROMPT.md | claude ; done
官方插件用安全控制和更好的用户体验包装了这个模式,但核心思想保持不变:让 Claude 反复失败直到成功。(软件工程的本质。)
这种技术在不确定的世界中是确定性糟糕的。可预测的失败胜过不可预测的成功。
--- Geoffrey Huntley
这颠覆了通常的 AI 编码工作流程。你不是仔细审查每一步,而是预先定义成功标准,让 agent 向这些标准迭代。失败变成数据。每次迭代根据出现的问题改进方法。
技能从"一步步指导 Claude"转变为"编写能收敛到正确解决方案的提示词"。
何时自主循环大放异彩
Ralph Wiggum 最适用于具有明确完成标准和机械执行的任务:
- 大型重构:框架迁移、依赖升级、跨数百个文件的 API 版本升级
- 批量操作:支持工单分类、文档生成、代码标准化
- 测试覆盖率: "为 src/ 中所有未覆盖的函数添加测试"
- 全新构建:通过迭代改进进行的过夜项目脚手架
共同点:明确定义的成功指标。如果你能精确描述"完成",Ralph 就可以向着它迭代。
真实成果
Huntley 用一个提示词连续运行了三个月的循环:"给我做一个像 Golang 这样的编程语言,但用 Gen Z 俚语作为关键字。"结果是 Cursed:一个功能完整的编译器,有两种执行模式,LLVM 编译为原生二进制文件,标准库和部分编辑器支持。关键字包括 slay(函数)、sus(变量)和 based(真)。
在 Y Combinator 黑客马拉松上,使用该技术的团队 overnight 交付了 6+ 个仓库,API 成本为 297 美元。这些工作如果由承包商完成将花费 5 万美元。
一位开发人员将集成测试迁移到单元测试,将测试运行时间从 4 分钟减少到 2 秒。循环在他们睡觉时处理机械转换。
这些是精挑细选的成功案例。对于每个 overnight 胜利,都有循环在未收敛的情况下耗尽了迭代次数。失败的尝试仍然花费金钱。当你能够以编程方式验证成功(测试通过、构建成功),而不是依赖 Claude 自我评估完成时,该技术效果最好。
成本意识
自主循环会消耗大量 token。在大型代码库上运行 50 次迭代的循环,根据上下文大小,很容易花费 50-100+ 美元的 API 积分。在 Claude Code 订阅上,你会更快达到使用限制。保守设置 ---max-iterations 并监控使用情况。
何时不应使用它
我之前写过关于在追求自动化之前先掌握核心循环。这个建议仍然成立。Ralph Wiggum 不会取代人类判断:它自动化机械执行。
不要将自主循环用于:
- 模糊的需求:如果你不能精确定义"完成",循环就不会收敛
- 架构决策:新颖的抽象需要人类推理,而不是迭代
- 安全敏感代码:Auth、支付、数据处理需要每一步的人工审查
- 探索:理解代码库需要人类的好奇心,而不是自动化处理
自主循环自动化机械执行。它们不自动化关于值得构建什么的决策。
agent harness 的模式也适用于此。
更广阔的背景
Ralph Wiggum 是更大转变的一种实现。正如我在《SDLC 正在崩溃》中所写,agent 现在能够维持多小时的推理。规划、构建、测试和部署之间的传统阶段边界正在溶解为连续流动。
自主循环是这种流动的基础设施。不是在人类会话之间进行交接,agent 在迭代之间维护上下文。进度持续存在于 git 历史和修改的文件中。每个"会话"从上一个会话停止的地方继续。
社区在这个模式基础上构建:
- ralph-claude-code 添加了速率限制、tmux 仪表板和用于故障恢复的断路器
- ralph-orchestrator 添加了 token 追踪、支出限制、git 检查点和多 AI 支持
这些实现解决了运营挑战:成本控制、状态恢复、监控。官方插件提供核心机制。生态系统构建生产包装器。
安装
bash
# 添加官方市场
/plugin marketplace add anthropics/claude-code
# 安装插件
/plugin install ralph-wiggum@claude-code-plugins
# 重启 Claude Code
安装后可用的命令:
/ralph-loop "<prompt>" --max-iterations N- 启动循环/ralph-loop "<prompt>" --max-iterations N --completion-promise "text"- 当 Claude 输出确切文本时停止/cancel-ralph- 终止活动循环
安全第一
始终设置 ---max-iterations。---completion-promise 标志使用精确字符串匹配,这是不可靠的。迭代限制是你真正的安全网。
自己试试
选择一个具有明确成功标准的机械任务:
- 安装插件(30 秒)
- 从小范围开始:"为 src/utils/ 中所有导出的函数添加 JSDoc 注释"
- 设置保守的迭代次数:
--max-iterations 10 - 完成后查看 git diff
该技术奖励提示词工程。如果第一次尝试没有收敛,改进你的成功标准并重试。
睡觉时写代码
对于需要大量判断的工作,坚持使用基础方法。对于具有明确完成标准的批量机械工作,Ralph Wiggum 让你醒来时看到可工作的代码。