> ## Content Index
> Fetch the complete content index at: https://www.hubwiz.com/blog/llms.txt
> Use this file to discover other available public pages before exploring further.

# Ralph Loop：修复代理的健忘症
- URL: https://www.hubwiz.com/blog/ralph-loop-fix-agent-s-forgetfulness/
- Published: 2026-01-20T03:18:04.000Z
- Updated: 2026-01-20T03:18:04.000Z
- Description: 本文解释了 Ralph Loop 及其权衡，这将帮助你构建更有效的 AI 代理
- Author: admin
- Tags: AGENT, RALPH LOOP, #Import 2026-10-14 14:41

你知道那种感觉吗：你打开一个新的浏览器标签页要搜索什么东西，但当它加载时，你完全忘记了自己想查什么？

这正是 AI 代理工作一段时间后发生的情况。

**本文解释了 Ralph Loop 及其权衡，这将帮助你构建更有效的 AI 代理**

## 1、问题：AI 代理有可怕的记忆

残酷的事实是：**AI 模型一次只能"记住"有限量的文本**。

把它想象成你电脑上的 RAM。

**Claude 大约有 200,000 字的空间。GPT-4 大约有 128,000 字。听起来很多，对吧？**

**错了。**

当你要求 AI 代理构建东西时，以下是填满那个记忆的内容：

- 你的原始指令\* 它正在阅读的代码
- 每一次来回对话
- 错误消息
- 它创建的文件
- 它自己的思考过程

工作 10-15 分钟后，那个记忆就**满了**。当它满了，AI 开始表现不稳定。它忘记了你要求什么。它重写同一个函数两次。它自相矛盾。

这被称为**上下文腐烂**。**你的代理没有变笨——它只是再也看不到对话的开头了。**

**就像在打电话时，有人不断往你耳朵里塞棉花。**

## 2、解决方案：Ralph Loop

![](https://www.hubwiz.com/blog/content/images/2026/01/image-621.png)

**Ralph Loop（也称为 Ralph Wiggum 技术）是一种运行 AI 代理的方法论，使其在连续、自我纠正的循环中运行，直到任务完全完成。**

它在 2024-2025 年由开发者 Geoffrey Huntley 推广，现在广泛用于像 Claude Code 这样的自主编码代理。

这个名字来自**Ralph Wiggum**，《辛普森一家》中可爱的固执孩子。**Ralph 以他的短期记忆问题和童真的困惑而闻名——他不断忘记自己在做什么，说像"我是爱达荷州！"和"我猫的呼吸闻起来像猫粮"这样的话。**

但 Ralph 有一个救赎性的品质：**他从不放弃**。**他只是不断尝试，一次又一次，每次都以新鲜的眼光。**

这就是 Ralph Loop 背后的哲学：

**"迭代胜过完美。"**

代理不是试图一次做对所有事情，而是不断尝试直到成功，每次都从错误中学习。

核心概念是：**代理尝试一项任务，检查是否成功，如果没有，则用完全知道刚才失败的知识再试一次。**

就像这样：

**普通代理**：尝试一次，失败，放弃或问你下一步该怎么做。

**Ralph Loop 代理**：尝试，失败，阅读错误消息，尝试不同的方法，再次失败，也从那中学习，继续直到成功。

## 3、它实际上是如何工作的：技术方面

![](https://www.hubwiz.com/blog/content/images/2026/01/image-622.png)

Ralph Loop 创建一个**自引用的反馈循环**，使代理持续工作直到任务完成。

机制如下：

### 3.1 完成的承诺

你给代理一个任务，信号意味着"我完成了"：

```
修复此仓库中所有失败的测试。
当你完全完成时，输出：<promise>COMPLETE</promise>

```

### 3.2 停止 Hook

这是巧妙的部分。

系统监视代理试图退出。如果代理试图停止但没有输出 `<promise>COMPLETE</promise>`，系统**阻止退出**并将原始任务重新注入对话。

**代理直到成功才能逃脱。**

### 3.3 通过文件实现持久记忆

这是它变得聪明的地方。因为代理在真实的文件系统（通常是 git 仓库）中工作，每次新迭代都可以**看到前一次迭代做了什么**。

- 代理看到来自尝试 #1 的代码更改
- 它看到来自尝试 #2 的错误日志
- 它看到显示哪些方法已经失败的 git 历史
- 它从自己的错误中学习，而不需要记住它们

文件系统成为记忆。

**每次循环迭代都像 Ralph 醒来头脑空白，但发现一本详细的日记，记录"昨天的 Ralph"尝试的一切。**

### 3.4 循环继续

周期重复：

1. 代理尝试修复问题
2. 系统检查是否出现 `<promise>COMPLETE</promise>`
3. 如果是：任务完成，循环退出
4. 如果否：循环继续，代理获得另一次机会

## 4、真实实现：人们实际上如何使用这个

在 2026 年，有几种运行 Ralph Loop 的方式：

### 4.1 Claude Code 插件（官方）

最简单的方式：

```
/ralph-loop "migrate all tests from Jest to Vitest" --max-iterations 20 --completion-promise "DONE"

```

### 4.2 简单 Bash 循环

DIY 方法：

```
while true; do 
    cat PROMPT.md | claude-code
done

```

### 4.3 Ralph-Claude-Code（社区工具）

生产就绪版本，具有：

- 速率限制以避免消耗你的 API 预算
- tmux 仪表板，让你看着代理工作
- 断路器以停止无限循环
- 迭代计数器和进度跟踪

## 5、为什么这实际上有效

**代理永远不会忘记目标**，因为原始提示在每次迭代中被重新注入。

**代理从失败中学习**，因为它可以读取错误日志并看到哪些代码更改不工作。

**代理不能提前放弃**，因为循环直到成功才不会让它退出。

就像区别在于：

- Ralph 曾经尝试制作一个立体模型，失败，然后走开
- Ralph 正在尝试制作一个立体模型，失败，检查他的错误，再试一次，更好地失败，再试一次，直到最终成功

## 6、陷阱：它不是魔法

Ralph Loop 有真正的成本和限制：

**API 成本快速增加**：每次迭代消耗令牌。复杂任务上的 20 次迭代循环可能花费 $5-15 的 API 费用。设置 `--max-iterations` 来保护你的预算。

**时间投入**：有些任务需要 30+ 次迭代。那可能是 2-4 小时的计算时间。这就是为什么人们对于大型任务通宵运行 Ralph Loop。

**可能陷入局部最小值**：有时代理连续 5 次尝试相同的破坏性方法。好的实现会检测到这一点并强制重置或尝试完全不同的策略。

**仅适用于客观任务**：循环需要一种方式**知道**它是否成功了。"所有测试通过"效果很好。"让 UI 更漂亮"不起作用——没有客观的完成信号。

**上下文窗口仍然重要**：如果你的任务太大而无法适应一个上下文窗口，即使完美的迭代，代理也会产生垃圾代码。将大任务分解成更小的原子故事。

## 7、何时使用 Ralph Loop

**在以下情况下使用：**

- 任务有明确的成功条件（测试通过，linter 干净，构建成功）
- 你正在进行机械重构（迁移 500 个文件，添加类型，更新依赖项）
- 你可以让它运行数小时而无需监督\* 失败是便宜的，迭代是容易的

**完美的用例：**

- **通宵功能构建**：当你睡觉时发送 6 个仓库的更改
- **TDD 开发**：编写代码直到你所有预定义的单元测试变绿
- **机械重构**：跨 200 个测试文件将 Jest 迁移到 Vitest
- **依赖项更新**：升级框架并修复所有破坏性更改

**在以下情况下不要使用：**

- 任务是创造性的或主观的
- 你需要在 5 分钟内得到结果
- 没有程序化的方式检查成功
- 任务需要人为判断

## 8、真实示例：修复破碎的测试套件

假设在重大重构后你有 47 个失败的测试。

**没有 Ralph Loop**（2 小时你的时间）：

- 你手动阅读每个测试失败
- 修复你认为破碎的东西
- 再次运行测试
- 12 仍然失败
- 修复那些
- 出现了 3 个新失败（你破坏了某些东西）
- 重复直到完成
- 你筋疲力尽

**使用 Ralph Loop**（20 分钟设置，90 分钟代理时间）：

- 你写道："修复所有失败的测试。当 `npm test` 显示 0 失败时输出 COMPLETE。"
- 使用 `--max-迭代次数 30` 启动 Ralph Loop
- 去冲咖啡\* 回来发现：
- 迭代 1–3：代理修复了明显的语法错误
- 迭代 4–7：代理修复了导入路径
- 迭代 8–12：代理意识到一个测试帮助器坏了，修复了它
- 迭代 13–15：代理清理了边缘情况
- 迭代 16：所有测试通过，代理输出 COMPLETE
- 循环退出
- 成本：$2.40 的 API 费用

代理尝试了 16 种不同的方法，从每次失败中学习，最终成功。你没有监督任何部分。

## 9、2026 年的最佳实践

人们在生产中运行 Ralph Loop 两年后，以下是实际有效的：

**1\. 程序化定义成功**。不要使用"让它更好"。使用"npm test 返回退出码 0"或"eslint 报告 0 错误"。

**2\. 始终设置最大迭代次数**。从 20 开始。如果它在没有成功的情况下达到限制，任务可能太大或定义不清。

**3\. 使用小的原子任务** "向认证系统添加 TypeScript 类型"比"向整个代码库添加 TypeScript"更好。你可以运行 10 个小的 Ralph Loop，而不是一个巨大的。

**4\. 用仪表板监控**。像 Ralph-Claude-Code 这样的工具给你实时可见性。你可以看到它在哪个迭代以及它当前正在尝试什么。

**5\. 使用紧急出口**。添加像"如果你尝试同样的事情 3 次，停止并寻求帮助"这样的条件以防止无限循环。

## 10、底线

还记得那个忘记你想搜索什么的浏览器标签页吗？

Ralph Loop 就像**书签该标签页，反复刷新它，并检查你的答案是否出现了**。

天才不在于让 AI 更聪明。它在于让 AI **持久**。Ralph Wiggum 不聪明，但如果你给他一个清单告诉他继续尝试直到每个框都被勾选，他最终会完成。

这就是 Ralph Loop 做的。它给代理：

- "完成"的明确定义
- 允许反复失败
- 从每次失败中学习的能力
- 成功之前没有逃脱

它完美吗？不。它很贵且慢。但它是"我尝试一次然后放弃"与"我尝试了 15 次最终弄清楚"之间的区别。

大多数 AI 工具在一次尝试后放弃。Ralph Loop 不会放弃直到工作完成。

它不花哨。它只是**作为系统设计的持久性**。

Ralph Wiggum 最终学会了系鞋带的方式（经过 47 次尝试），你的 AI 代理最终会修复那些测试，迁移那个代码库，或构建那个功能。

你只需要让它继续尝试。

**正如 Ralph 自己会说的："我在帮忙！而这次我不会停止直到完成！"**

---

原文链接：[The Ralph Loop: Fix Your AI Agent's Forgetfulness Forever](https://ai.plainenglish.io/the-ralph-loop-why-your-ai-agent-keeps-forgetting-what-its-doing-dce2bfa549cf?ref=hubwiz.com)

汇智网翻译整理，版权归原作者所有