Ralph 循环在复合工程中发挥的关键作用
Ralph 循环是一个简单的 bash 脚本,它反复运行 AI 编码智能体直到所有任务完成,每次迭代以全新实例开始。结合复合工程 —— 一种每个特性使下一个特性更容易构建的方法论 —— 这两个概念正在从根本上重塑软件的开发方式。
什么是 Ralph 循环?
Ralph 循环最初由 Geoffrey Huntley 构想,以辛普森一家角色 Ralph Wiggum 命名,是一个用于自主 AI 编码智能体的编排模式。其核心非常简单:一个 bash 循环,它产生全新的 AI 智能体实例反复运行,直到产品需求文档(PRD)中的所有工作项完成。
每次迭代遵循可预测的模式:
- 选择最高优先级未完成任务
- 实现那个单一任务
- 运行质量检查(类型检查、测试)
- 如果检查通过则提交
- 更新任务列表以标记完成
- 将学到的东西附加到进度文件
- 重复直到所有任务通过
关键洞察是每次迭代产生一个带有全新上下文的新智能体实例。记忆仅通过 git 历史、进度文件和任务状态持久化 —— 而不是通过 AI 的上下文窗口。这解决了大语言模型的一个根本限制:随着对话增长上下文退化(context rot)。
为什么上下文管理重要
大语言模型面临一个已充分记录的挑战 —— 上下文退化。随着对话扩展,模型的注意力在早期内容上稀释,导致性能下降、幻觉和决策不佳。Ralph 循环完全通过将每次迭代视为全新开始来规避这一点。
这种方法镜像了人类开发者最佳的工作方式 —— 在离散任务上专注的短会话,而不是精神疲劳叠加错误的马拉松编码会话。不同之处在于 AI 智能体可以连续工作而不会疲劳,通过全新上下文无限循环。
这种模式还实现了 Geoffrey Huntley 所谓的"确定性上下文分配" —— 每个智能体精确获得其当前任务所需的上下文,不多不少。这种精确性与在臃肿、不聚焦的上下文窗口中操作的代理相比,显著提高了代码质量。
复合工程:乘数效应
复合工程代表了一种哲学转变,软件团队如何处理 AI 辅助开发。在传统工程中,每个新特性通常增加复杂性 —— 更多代码意味着更多边缘情况、更多相互依赖和更多意想不到的交互。代码库随时间变得更难处理。
复合工程颠覆了这种关系。每个特性被设计为通过为 AI 智能体和人类开发者创建学习循环使下一个特性更容易构建。Bug、性能问题和解决问题的洞察被记录并反馈回系统,加速未来开发。
复合工程循环包括四个阶段:
计划:智能体研究方法,分析代码库,并将信息合成为详细的实现计划。此阶段消耗约 40% 的开发工作量。
工作:智能体根据这些计划编写代码和创建测试。这通常只占总工作量的大约 20% —— 实际代码生成很快。
审查:工程师审查输出和从生成该输出中学到的教训。另外 40% 的工作量在这里。
复合:关键阶段,学到的教训反馈回系统。发现的一切 —— 模式、陷阱、约定 —— 都被记录下来,以便未来的智能体受益于积累的知识。
AGENTS.md 革命
启用复合工程的关键机制是 AGENTS.md 文件(有时称为 CLAUDE.md)。这个文件存在于你的仓库中,包含关于代码库的积累知识 —— 约定、常见模式、已知陷阱和发现的最佳实践。
每次 Ralph 循环迭代后,智能体用学到的东西更新相关的 AGENTS.md 文件。因为 AI 编码工具自动读取这些文件,未来迭代立即从先前发现的洞见中受益。代码库有效地教会 AI 如何与它一起工作。
这创造了一个飞轮效应:更多开发产生更多记录的知识,这使未来开发更快、质量更高,从而产生更多知识。复合中的复合。
反馈循环:不可协商的要求
Ralph 循环只有在健壮的反馈循环存在时才有效。没有它们,智能体没有方式来验证其工作,错误跨迭代复合而不是被捕获和纠正。
必不可少的反馈循环包括:
类型检查立即捕获类型错误,防止整类 bug 传播。
自动化测试验证实现匹配规格,且更改不会破坏现有功能。
持续集成确保代码库保持可部署状态。破坏性代码在自主迭代间的复合效果是毁灭性的。
浏览器验证用于前端工作确保视觉和交互更改确实按预期工作。智能体可以使用 Playwright 等工具导航页面、与 UI 元素交互并确认更改。
没有这些反馈机制,Ralph 循环变成了一个混乱引擎 —— 快速生成损坏代码的速度比人类能修复的速度更快。有了它们,它变成了一个生产质量的开发系统。
小任务:工作单元
Ralph 循环成功的关键因素是任务大小。每个 PRD 项目必须足够小以在单个上下文窗口内完成。如果任务太大,智能体会在完成前耗尽上下文并产生糟糕、不完整的代码。
大小合适的任务:
- 添加数据库列和迁移
- 实现单个 UI 组件
- 更新服务端 action 逻辑
- 向列表添加过滤下拉菜单
需要拆分的大任务:
- "构建整个仪表盘"
- "添加认证"
- "重构 API"
将工作分解为小的、可完成单元的纪律对软件工程并不新鲜,但当自主智能体执行该工作时它变得至关重要。每个任务应该有明确的完成定义和可验证的验收标准。
单位经济学转变
Ralph 循环从根本上改变了软件开发的单位经济学。传统开发涉及昂贵的人类开发者花大量时间输入代码、调试和浏览代码库。Ralph 循环用廉价的 AI 推理周期取代了其中的许多。
这不是消除对工程师的需求 —— 它改变了他们的角色。工程师成为编排者,设计系统使自主智能体能有效工作。他们专注于架构、反馈循环设计和质量关卡,而不是输入代码。
Geoffrey Huntley 认为这代表了"软件开发"(输入代码)和"软件工程"(设计系统)之间的区别。软件开发作为一个独立的职业可能正在衰退,但软件工程比以往任何时候都更关键。
新的工程挑战包括:
- 防止自主智能体做出破坏性更改(不要为数据库删除配置写入机密)
- 设计测试套件在错误复合之前捕获代理错误
- 创建代码库文档教导智能体你的约定
- 为视觉和交互更改构建验证系统
Gas Town:多智能体未来
虽然 Ralph 循环运行单个智能体循环,其逻辑扩展是运行多个智能体并行 —— Steve Yegge 所谓的"Gas Town"。这个编排系统管理着在不同任务上同时工作的自主 AI 编码智能体舰队。
Gas Town 依赖于"Molecular Expression of Work"(MEOW) —— 任务分解到如此颗粒化的程度,临时工作者可以拾取它们、执行它们并无协调开销地移交。可以将其视为 AI 智能体的 Kubernetes。
这代表了复合工程的终极表达:整个自主智能体团队,每个在全新上下文中操作,以超人的速度集体构建软件,而人类工程师专注于架构、质量和战略方向。
未来已来
像 Every 这样的公司已经在规模化实践复合工程,运营五个软件产品,每个主要由一个人构建和维护。他们估计使用这些技术的单个开发者可以做几年前五个开发者做的工作。
这些影响超出了生产力。当代码编写变得有效免费,瓶颈转移到规格质量、系统设计和反馈循环健壮性。蓬勃发展的开发者将是那些能够设计系统使自主智能体能有效导航的人。
这不是未来预测 —— 它正在发生。Ralph 循环和复合工程不是等待更好 AI 的理论概念。它们是用于构建服务真实用户的真实软件的生产技术。
使用 Ralph 循环入门
要在项目中实现 Ralph 循环:
- 安装 AI 编码 CLI(Claude Code、Amp 或类似工具)并认证
- 安装
jq用于 JSON 处理 - 创建 JSON 格式的结构化 PRD,带有用户故事和通过/失败状态
- 为智能体编写清晰的 prompt 说明
- 实现产生全新智能体实例的 bash 循环
- 确保健壮的类型检查和测试基础设施存在
技术实现是直接的 —— 真正的工作是文化层面的。团队必须接受更小的任务大小,投资于教导 AI 智能体的文档,并构建在错误复合之前捕获它们的反馈循环。
结论
Ralph 循环代表了软件开发中的范式转变,从人类输入的代码转向编排的自主智能体。与复合工程的学习循环结合,它创建了一个系统,其中每个开发周期使未来周期更快、质量更高。
软件开发的未来不是关于编写代码 —— 它是关于设计系统,使 AI 能够有效地编写代码。今天掌握这些技术的工程师在自主开发成为标准实践时将拥有显著优势。
转变已经在进行中。问题不是是否采用这些实践,而是你多快能适应一个你的竞争对手以数倍速度构建软件的世界。