Geoffrey Huntley《Ralph Wiggum 作为软件工程师》:100 行 bash 的反叛宣言

原文:ghuntley.com/ralph/ 作者:Geoffrey Huntley(独立工程师 / 顾问 / 黑魔法布道师) 发布:2025 年中,2025 年末病毒级传播
🔥 影响力卡片
- 2025 年末成为 AI 编码圈最热概念,VentureBeat 专题报道
- Anthropic 工程师 Daisy Hollman 和 Boris Cherny(Claude Code 创建者 / Head of Claude Code)共同把它形式化为官方插件
ralph-loop@anthropic(Daisy Hollman 是该插件主要作者) - 灵感扩散到 Cursor、各类 IDE 工作流
- YC 黑客松团队用 Ralph 一晚上发了 6 个 repo,$50k 合同实际成本 $297
- Dev Interrupted、HumanLayer 等多个播客做专访
- 评价严重分裂:original “naive persistence” 派 vs 官方”消毒版”派
- Geoffrey 本人正在用 Ralph 构建一门全新的编程语言 CURSED(自托管 + 标准库)—— 它本身是 Ralph 最强的实证
🎯 为什么必读
这是上面三篇的”反面教材”,但是指向真理的反面教材。
如果说前三篇代表主流工程派,Ralph 代表激进派/黑魔法派。它的特别之处:
- 它彻底反工程纪律:就一个 bash
while :; do cat PROMPT.md | claude-code ; done,Anthropic 那 5 种 pattern 它一个都不要 - 但它有效 —— 还是惊人的有效。$297 替代 $50k 合同不是个例
- 它揭示了一个被工程派回避的真相:LLM 在某些任务上,粗暴重复比精巧设计更优
读完你会同时获得:对 Ralph 的敬畏 + 对它适用边界的清晰认识。
一句话总结
不要规划。不要架构。把同一份 prompt 喂给 Claude,让它跑。一直跑。它会在第 N 轮帮你写出来。
💎 金句墙
★ “Ralph is monolithic. Ralph performs one task per loop.” “Ralph 是单体的。Ralph 每个循环只做一件事。”
★ “This technique is deterministically bad in a non-deterministic world.” “在一个非确定性的世界里,这个技术是确定性地糟糕。” —— Geoffrey 的反讽:正因为它”确定性糟糕”,你才能调它,因为糟糕之处可预测。
★ “DO NOT IMPLEMENT PLACEHOLDER OR SIMPLE IMPLEMENTATIONS… DO IT OR I WILL YELL AT YOU.” “不要写占位符或简单实现 …… 给我做完否则我对你吼。” —— 真实的 prompt 片段。看到 LLM 偷懒的人都懂。
★ “Engineers are still required. The hype that fully autonomous tools work without an engineer’s guidance is bullshit.” “工程师依然是必需的。‘完全自动化无需工程师’的宣传是胡扯。” —— Ralph 推崇者必读的反幻觉声明。
★ 关于代码可维护性的灵魂质问: “By whom? Why are we framing this around humans?” “(给谁维护?)为啥要以人为框架想这个问题? 我们已经在 post-AGI 阶段了 —— 跑更多循环,而不是雇更多人维护。” —— 这一句让一半工程师怒火冲天,另一半工程师醍醐灌顶。
📋 核心精读
1. Ralph 是什么
最纯粹形式:
while :; do cat PROMPT.md | claude-code ; done
就这样。一个无限循环,每轮把同一个 prompt 喂给 Claude Code。Claude 看见自己上一轮改的文件、git history、测试结果,继续推进。
适合:绿地项目(greenfield)。 不适合:已有大型 codebase。Geoffrey 自己说:“我绝对不会在已有 codebase 用 Ralph。“
2. 三个关键洞察(Geoffrey 自己反复强调)
洞察 1 —— Context window 不是越满越好
- 可用容量 ~170k tokens
- 质量崩塌点 147k-152k(实测)
- 所以要主动让昂贵操作走 subagent,不要塞进主 context
- 搜索/写入:可同时用 500 个 subagent
- 编译/测试:只能用 1 个(防止反向压力 backpressure 失效)
洞察 2 —— 两阶段循环
- Generation:LLM 生成代码 —— 这一步现在很便宜
- Backpressure:工程把关 —— 这才是质量的真正源泉
- 反压怎么做?强类型(Rust)、静态分析(Dialyzer/Pyrefly)、测试、安全扫描
洞察 3 —— 不要追求”完美的 prompt”
“There is no such thing as a perfect prompt.”
- prompt 是调出来的,像调吉他
- 看到 LLM 跑偏 → 不是改具体任务,是改你的 stdlib(标准库规范)
- stdlib + spec 才是真正控制 LLM 的杠杆
3. CURSED 项目 —— Ralph 的活体实证
Geoffrey 正在用 Ralph 构建一门完全不存在于训练数据中的新编程语言 CURSED:
- 自托管编译器(用 CURSED 自己写自己)
- 完整标准库(用 CURSED 自己写,而不是 Rust)
- LLVM 后端
- 仍在路上,但已经能跑出工作示例
为什么这是关键反证:很多人质疑”LLM 只能做训练数据见过的东西”。CURSED 的存在直接打脸:只要 spec 足够清晰、循环足够多,LLM 可以做训练数据外的工作。
4. 关键设计决策(给你抄的)
- 每轮做且只做一件事 —— 不要 multi-task
- AGENT.md 文件让 Claude 自学项目(发现新事实就追加)
- fix_plan.md 文件做任务清单(LLM 自己维护 checkbox)
- 每轮重新载入 stdlib + spec —— 不依赖 session 记忆
- 9 个 9 的 emphasis 修辞(“DO NOT … OR I WILL YELL”):看起来荒谬但实测有效
5. 翻车与教训
Geoffrey 自己说过的真实失败:
- 编译错误把 context 撑爆,自己最后切到 Gemini 写一份 fix plan
- 醒来发现 codebase 不能编译 ——
git reset --hard重来 - “Ralph 90% 完成度” 意味着最后 10% 仍要人工
🟢 译者点评:Geoffrey 没有撒谎。Ralph 的 ROI 是真的,但”无人值守 24/7 自动写软件”是吹的。Ralph 把工程师从”写代码”解放为”调 prompt + 调 stdlib + review”,但工程师没消失。
🟢 译者总评
这篇文章和它代表的 Ralph 现象,是 2025 年最值得思考的”工程哲学事件”。
如果你之前读了 Anthropic 和 12-Factor,你会觉得 Ralph 几乎每条原则都违反:
- 反 Anthropic”用最简单方案” → Ralph 就是用最简单的(bash 循环)
- 反 12-Factor “own your control flow” → Ralph 把 control flow 简化为
while true - 反”小而专注的 agent” → Ralph 就一个 monolithic loop
但它有效。这怎么解释?
我的理解:这两条路线不矛盾,而是适用于不同任务结构。
- 强结构任务(企业系统、生产服务、复杂交互):Anthropic / 12-Factor 派的工程纪律是必需的
- 弱结构、有清晰自动验证的生成任务(独立工具、解释器、单一功能 utility):Ralph 派的暴力循环 ROI 更高
Geoffrey 自己也说只在 greenfield 用,不在已有 codebase 用 —— 这就是他自己画的边界。
如果你只从这篇带走 3 件东西:
- bash 循环 + 同一个 prompt 是一种合法的 agent 架构(别看不起它)
- stdlib/spec 文件是控制 LLM 的真正杠杆,不是 prompt 字句
- “LLM 只能做训练数据见过的事” 是已经被 CURSED 项目反证的迷思
🔗 延伸阅读
- 续集和扩展:ghuntley.com/loop/ —— “everything is a ralph loop”
- 前传 / 失败学:ghuntley.com/gutter/ —— “Autoregressive Queens of Failure”
- 教学:ghuntley.com/agent/ —— 几百行写一个 Claude Code 替代品
- 行业冲击波:VentureBeat - How Ralph Wiggum went from ‘The Simpsons’ to the biggest name in AI right now
- 创世访谈:Dev Interrupted - Inventing the Ralph Wiggum Loop
- 哲学论战:YouTube - Ralph Wiggum (and why Claude Code’s implementation isn’t it) —— Geoffrey 与 Dex Horthy 现场辩论”官方 ralph-loop 是不是阉割版”
🔗 调研来源(可校验)
- 原文:ghuntley.com/ralph/ | 兄弟篇:ghuntley.com/loop/
- 同作者其他必读:ghuntley.com/agent/(教学:几百行写编程 agent) | ghuntley.com/gutter/(失败学) | ghuntley.com/dothings/ | ghuntley.com/teleport/ | ghuntley.com/six-month-recap/
- 作者主页与 bio:ghuntley.com/bio/ | github.com/ghuntley
- HumanLayer 历史考据:A Brief History of Ralph
- HN 主帖:news.ycombinator.com/item?id=46524652
- 行业冲击波报道:VentureBeat
- 创世访谈(Dev Interrupted):Substack 文字 | Spotify 音频 | LinearB 详情 | YouTube 视频
- Ralph vs Anthropic 官方版的辩论:YouTube - Geoffrey & Dex Horthy
- 资源汇总:Geoffrey Huntley’s Ralph Wiggum Resources - prg.sh
- 第三方实现:frankbria/ralph-claude-code | Anthropic 官方插件:claude.com/plugins/ralph-loop
- 第三方教程:YUV.AI - Ralph for Claude Code | paddo.dev - Autonomous Loops | Awesome Claude | claudefa.st | Samanvya Tripathi | Webcoda | Newsletter Claude Code Masterclass