爱可可-爱生活 26-01-05 17:26
微博认证:AI博主 2025微博新锐新知博主

【让AI编程代理在你睡觉时帮你写代码】

最近发现了一种能让AI编程代理长时间(几小时甚至几天)运行、在你睡觉时持续产出代码的方法。试过之后,我已经回不去了。

这就是所谓的“Ralph Wiggum”方法。核心理念很简单:用一个清白的状态反复运行编程代理,直到满足停止条件。

+ 具体实现

整个方案只需要一个Bash脚本:

1. 设置一个有限次数的for循环(比如10次),防止代理无限运行
2. 循环内让编程代理(Claude Code、OpenCode、Codex等)专注于仓库中的单一功能,直到完成。提示词中要求:“如果实现后没有更多工作要做,回复COMPLETE
3. 在循环中检测这个标记,存在就提前退出

+ 停止条件的设定

LLM如何知道何时发出完成信号?有几种方式:
- 直接提示:在提示词中给出清晰的停止条件
- TODO列表:给代理一个待办清单
- PRD(产品需求文档):推荐方法,下面详述

+ 进度报告机制

必须在提示词中要求代理提交工作,并将进度追加到本地progress.txt文件。提交工作让后续代理能通过git历史了解之前做了什么。progress.txt是长期运行代理的标准做法,喂给代理时用“追加”而非“更新”,确保不覆盖之前的记录。

+ 保持CI绿色

每次提交必须通过所有测试和类型检查。这一点至关重要——如果不这样做,就会给后续代理留下坏代码,它们得花时间二分查找bug,非常麻烦。健康的反馈循环是成功的关键。

+ 用PRD解决核心问题

Ralph方法面临两个挑战:

第一,代理会选择过大的任务。它们不能正确评估工作量,尝试过于雄心勃勃的事情,结果耗尽上下文窗口,最终失败。

第二,代理不知道何时停止。

解决方案是用基于PRD的方法,将工作形式化为用户故事列表。这是PRD和TODO列表的结合体——一个JSON文件,包含多个用户故事,每个都有“passes: false”属性。

提示代理选择最高优先级的功能,只做这一件事,完成后更新相应PRD项的状态。这样能有效限制范围,只使用上下文窗口的一小部分,避免上下文腐化。停止条件也变得简单:“当PRD中所有测试用例都通过时,发出完成信号”。

+ 社区反馈中的洞见

有开发者指出,这个方法之所以有效,是因为它体现了“笨编排,聪明工人”的哲学。我们常常用LangChain或AutoGen等复杂框架过度设计代理,但一个简单的while循环加清晰的退出条件往往更稳健。把LLM当作需要重试的随机函数来对待——在代理设计中,“坚持不懈”比“聪明绝顶”更重要。

也有人提醒,flaky tests(不稳定的测试)是这种方法的隐形杀手。可能需要添加重试和隔离逻辑,否则循环会一直卡住。反馈循环的质量远比提示词技巧重要。

+ 总结

- Bash脚本循环
- JSON格式的PRD
- progress.txt进度追踪
- 保持CI绿色
- 建立健康的反馈循环

成本确实不低,但奇怪的是,比手动开发或单代理上下文切换等替代方案还是便宜。

x.com/mattpocockuk/status/2007924876548637089

发布于 北京