上周,一个叫Ralph的开源项目在GitHub上悄悄冲到了16000星。
它的核心代码只有100行Bash脚本。没有LangChain,没有CrewAI,没有任何复杂的Agent框架。就是一个while循环,反复调用Claude Code或Amp,直到把你的产品需求文档(PRD)里的每一条用户故事全部实现完毕。
这听起来简单到让人怀疑。但它的创意来源Geoffrey Huntley声称,他用这个方法把一个原本5万美元的外包项目,压缩到了297美元的算力成本。
我花了两天时间研究这个项目,发现它背后的设计哲学比代码本身有意思得多。
为什么复杂的Agent框架反而不好用
过去一年,AI Agent领域出现了大量复杂框架——LangGraph、CrewAI、AutoGen、MetaGPT。它们动辄几千行代码,支持多Agent协作、复杂的工作流编排、状态机管理。
但用过的人都知道一个痛点:上下文窗口污染。
当一个Agent在单次长对话中运行时,随着上下文越来越长,LLM的输出质量会明显下降。到后期,Agent开始"忘记"前面的约定,产出越来越离谱。这不是bug,是大模型的物理限制。
Ralph的解决方案粗暴但有效:每次迭代都启动一个全新的AI实例。
上下文不够?不攒,直接清零重来。
Ralph的三件套记忆系统
既然每次都是全新实例,那怎么保持记忆?Ralph只用三样东西:
1. prd.json —— 结构化需求文档
不是自然语言的需求描述,而是一个JSON文件,每条用户故事都有明确的passes: true/false状态。新实例启动后,第一件事就是读这个文件,找到优先级最高的未完成故事。
2. progress.txt —— 累积学习笔记
每次迭代结束,Agent会把这轮学到的东西追加写入。下一轮新实例会读取这些笔记,避免重复踩坑。这是一个只增不删的文件,相当于Agent的"经验值"。
3. Git历史 —— 代码就是记忆
前几轮实现的代码已经提交到仓库了。新实例不需要"记住"之前写了什么,直接看代码就行。
三件套,没有向量数据库,没有RAG,没有任何花哨的记忆框架。够用就行。
真正的关键:测试作为"反压"
Ralph最精妙的设计不在AI部分,而在质量门控。
每轮迭代结束后,Ralph会跑类型检查、代码检查和测试。只有全部通过,代码才会被提交。 如果失败,这轮的产出直接被丢弃,下一轮重来。
Geoffrey Huntley把这叫做"backpressure"——反压。测试不是用来验证的,是用来淘汰的。
这个设计意味着:你的测试写得越好,Ralph的输出质量越高。测试覆盖率不是开发规范问题,而是直接决定了你能把多少工作交给AI。
人类的新角色:从写代码到写需求
用Ralph的工作流是这样的:
- 你用
/prd命令,通过问答生成一份详细的产品需求文档 - 用
/ralph命令把需求转换成结构化的prd.json - 运行
./ralph.sh --tool claude 10,等着就行
最多10轮迭代,Ralph会逐条实现你的需求。你的角色从"写代码的人"变成了"写需求的人"。
这不是空想。Ryan Carson(Ralph的作者,连续创业者,卖掉过3家公司)和Geoffrey Huntley都在实际项目中用这套流程。Huntley甚至用它构建了一门全新的编程语言CURSED——一个完全不在LLM训练数据里的东西,证明这个方法对"未知领域"同样有效。
但工程师不会失业
Geoffrey Huntley说了一句很清醒的话:那些声称AI工具不需要人类监督就能工作的说法,是扯淡。
Ralph需要人类做三件事:
- 写好需求:需求越精确,产出越好。模糊的需求出来的就是模糊的代码。
- 写好测试:测试是质量的唯一保障。没有测试的Ralph就是一台随机代码生成器。
- 调教行为:如果Ralph在某轮犯了错,你需要在CLAUDE.md里加一条规则防止下次再犯。用Huntley的话说:"如果Ralph从滑梯上摔下来了,你加一块告示牌。"
人类从"执行者"变成了"架构师 + QA + 产品经理"。写代码的部分交出去了,但设计和质量控制反而更重要了。
为什么说这代表了Agent的未来方向
看看今天GitHub Trending的榜单:hermes-agent以单日+11000星的速度飙升到75000星,Ralph稳定在16000星,Multica做Agent团队管理,Archon做Agent工程脚手架。
AI Agent领域正在经历一个"从复杂到简单"的回摆。
第一波Agent框架追求的是"更强大的能力"——更多工具、更复杂的编排、更多Agent之间的协作。但实践证明,大模型的能力边界决定了Agent的能力边界。与其在框架层做复杂优化,不如在流程设计上下功夫。
Ralph的哲学很简单:承认AI的局限性,然后设计一个让这些局限性不成问题的流程。
上下文窗口会污染?那就每轮清零。单次任务容易出错?那就把大任务拆成小任务。AI会犯重复的错?那就用文件记录教训。AI产出质量不稳定?那就用测试做硬性淘汰。
这不是什么高深的AI技术突破,这是软件工程的基本功——分而治之、质量门控、持续集成。
有时候最好的AI应用方案,根本不需要"AI框架"。一个while循环就够了。
Ralph 开源地址:github.com/snarktank/ralph Geoffrey Huntley 原始文章:ghuntley.com/ralph