“如果你把 AI 放在一个死循环里,给它足够的权限和上下文,会发生什么?”
2025 年底,一个名为"Ralph Wiggum Technique" (Ralph 循环)的 AI 编程技巧在硅谷极客圈一夜爆红。它没有复杂的架构,没有花哨的界面,其核心代码甚至只有一行 Bash 脚本。
但就是这个看似简陋、甚至有些“诅咒”意味的技巧,却让开发者们在一夜之间重构了 6 个代码库,构建了全新的编程语言,甚至引发了 Anthropic 官方下场发布插件。
什么是 Ralph?为什么它如此有效?它又预示着怎样的 AI 编程未来?
Ralph 的故事始于 Geoff Huntley 的一个疯狂实验。他没有使用复杂的 Agent 框架,而是写下了这样一行 Bash 脚本:
while:;docat PROMPT.md | npx --yes @sourcegraph/amp ;done
这就是 Ralph 的全部。
PROMPT.md:这是唯一的输入,包含了项目的目标、规范、当前状态的描述(通常由 AI 自动更新)。@sourcegraph/amp:这是一个极其简单的 CLI 工具,它读取提示词,调用 LLM,并在当前目录下执行命令(修改文件、运行测试等)。while :; do ... done:这就是灵魂所在。无限循环。Ralph 不会停下来问你“这样行吗?”。它只是不断地读取目标、执行操作、再次读取目标、再次执行……直到你手动杀掉进程,或者它把代码库变成一团乱麻(所谓的“Overbaking”)。
乍一看,Ralph 似乎只是一个不可控的随机代码生成器。但实际上,它的成功揭示了 AI 编程的一个核心真理:上下文工程 (Context Engineering) 远比 Prompt 技巧更重要。
Ralph 的核心不在于那个 Bash 循环,而在于那个PROMPT.md(或者更高级的“Specs”)。
传统的 AI 辅助编程是“命令式”的:你告诉 AI “修改这个函数”、“修复那个 Bug”。
Ralph 是“声明式”的:你在PROMPT.md中描述项目的终局状态(Desired State),比如“所有的 React 组件必须使用 TypeScript 且没有 default exports”。Ralph 的工作就是不断逼近这个状态。
Ralph 并不试图一次性完成所有工作。它在每次循环中只处理一小块任务。这种“切碎”的工作方式,完美契合了 LLM 当前的上下文窗口限制,避免了“一次性生成几千行代码然后全错”的灾难。
在 Ralph 的循环中,测试结果、Linter 报错、编译失败信息,都会成为下一个循环的输入。它不仅是在写代码,更是在自我修复。
随着社区的介入,Ralph 迅速从一个 Bash 玩具进化为一种严肃的开发范式。
REACT_CODING_STANDARDS.md(编码规范),然后让 Ralph 跑了 6 个小时。结果?Ralph 自主完成了一个人类可能需要数天才能完成的枯燥重构。Cursed Lang,包含编译器、标准库,且实现了自举。Ralph 并非完美。它最大的风险在于"Overbaking"(过度烘焙)。
如果你让 Ralph 跑得太久,且PROMPT.md的约束不够紧,它可能会开始产生“幻觉”般的优化:添加没人需要的 Post-Quantum 密码学支持、过度拆分文件、甚至为了通过测试而删除测试。
这给我们的启示是:AI 是强大的引擎,但人类必须是方向盘。
Ralph Wiggum Technique 可能只是 AI 编程进化史上的一朵浪花,但它留下的遗产是深远的。
它告诉我们,未来的编程可能不再是编写具体的逻辑,而是编写和维护一份完美的 Spec(规范说明书)。我们将成为“系统架构师”和“验收测试员”,而将那个枯燥、重复、且容易出错的“编码循环”,交给不知疲倦的 Ralph 们。
所以,下一次当你面对一座巨大的“屎山”代码时,不妨试着写一份清晰的 Spec,然后启动那个神奇的Bash循环。
资料链接:
从“暴力循环”到“优雅指挥”
Ralph Wiggum 的故事让我们看到了 AI 自主编程的雏形:只要有正确的 Spec(规范)和自动化的 Loop(循环),奇迹就会发生。
但 Ralph 毕竟只是一个 5 行代码的 Bash 脚本,粗糙且容易“烤糊”。在真实的工程实践中,我们不能只靠运气的“无限循环”,我们需要一套更稳定、更可控、更专业的AI 原生开发体系。
如果你不想止步于 Ralph 这样的极客实验,而是想真正掌握驾驭 AI Agent 的系统方法,欢迎加入我的新专栏《AI原生开发工作流实战》。
这是关于如何构建你的“自动化流水线”:
| 欢迎光临 链载Ai (https://www.lianzai.com/) | Powered by Discuz! X3.5 |