🎯 什么是 Ralph Wiggum?
Ralph Wiggum 是一个自动化 AI 编码工具,通过 bash 循环脚本让 Cline 自主完成多个任务。每次迭代都启动一个新的 Cline 进程,确保上下文始终清晰。
📋 核心理念
每次循环 = 全新的 Cline 会话
- ✅ 避免上下文窗口溢出
- ✅ 防止长时间会话后的性能下降
- ✅ 每个任务都有干净的起点
- ✅ 通过磁盘文件(specs/、历史记录)共享状态
🚀 如何在 Cline 中使用
步骤 1:初始化 Ralph Wiggum
在 Cline 中输入:
使用 https://github.com/fstandhartinger/ralph-wiggum 为我的项目设置 Ralph Wiggum
Cline 会引导你完成:
- 创建必要的目录结构(specs/、scripts/、logs/)
- 下载 ralph-loop.sh 脚本
- 项目访谈 - 了解你的项目愿景和目标
- 创建项目宪法 - 为所有会话提供指导原则
步骤 2:编写规范文件
在 specs/ 目录创建功能规范文件,关键是清晰的验收标准:
示例:specs/user-login.md
# Feature: 用户登录功能
## 需求
- 手机号+验证码登录
- 登录状态持久化
- 自动跳转到首页
## 验收标准
- [ ] 用户可以输入手机号
- [ ] 点击发送验证码后收到验证码
- [ ] 输入正确验证码后登录成功
- [ ] 刷新页面后登录状态保持
- [ ] 登录后自动跳转到首页
- [ ] 所有相关测试通过
**完成时输出:** `<promise>DONE</promise>`
💡 关键要点:
- ✅ 验收标准要具体、可测试
- ✅ 避免模糊的描述如"功能正常"
- ✅ 每个标准应该能明确验证
- ✅ 必须包含
<promise>DONE</promise>输出要求
步骤 3:运行 Ralph 循环
在终端中运行(不在 Cline 中运行):
# 开始自动化循环
./scripts/ralph-loop.sh
# 限制最大迭代次数
./scripts/ralph-loop.sh 10
发生了什么?
循环 1: Cline 启动 → 读取 spec → 实现 → 测试 → 提交 → 输出 DONE → Cline 关闭
循环 2: 新 Cline 启动 → 读取下一个 spec → 实现 → 测试 → 提交 → 输出 DONE → Cline 关闭
循环 3: 新 Cline 启动 → ...
每次循环都是全新的 Cline 实例,上下文不会累积!
步骤 4:查看日志
所有输出都保存在 logs/ 目录:
# 查看会话日志
cat logs/ralph_*_session_*.log
# 查看特定迭代日志
cat logs/ralph_*_iter_1_*.log
🎮 两种工作模式
1. Build 模式(默认)
./scripts/ralph-loop.sh
Cline 会:
- 选择一个未完成的 spec
- 实现功能
- 运行测试
- 提交代码
- 输出
<promise>DONE</promise>
2. Plan 模式(可选)
./scripts/ralph-loop.sh plan
Cline 会:
- 创建详细的实施计划
- 分解成小任务
- 保存到
IMPLEMENTATION_PLAN.md
📁 项目结构
your-project/
├── specs/ # 功能规范
│ ├── user-login.md
│ ├── dashboard.md
│ └── ...
├── scripts/ # Ralph 脚本
│ ├── ralph-loop.sh
│ └── ...
├── logs/ # 日志文件
│ ├── ralph_*_session_*.log
│ └── ralph_*_iter_*.log
├── ralph_history.txt # 历史记录(突破/阻塞/学习)
├── IMPLEMENTATION_PLAN.md # 实施计划(可选)
└── CONSTITUTION.md # 项目宪法(可选)
⚠️ 重要注意事项
1. 启用自动执行模式
为了 Ralph 自主工作,需要在启动 Cline 时使用危险模式:
# VSCode 中的 Cline 设置
# 或者在命令行中:
cline --dangerously-skip-permissions
⚠️ 仅在沙盒/测试环境中使用!
2. 完成信号很关键
Cline 必须输出 <promise>DONE</promise> 才算完成。
- bash 脚本会检查这个信号
- 如果没有输出,会重试当前 spec
- 确保在 spec 中明确说明要输出这个信号
3. 测试作为护栏
- 每个 spec 应包含"测试通过"作为验收标准
- Cline 在所有测试通过前不应输出完成信号
- 这确保了代码质量
💡 最佳实践
✅ 好的 Spec 写法
## 验收标准
- [ ] 用户点击登录按钮后显示加载状态
- [ ] API 返回成功后跳转到首页
- [ ] API 返回失败后显示错误提示
- [ ] 登录组件的单元测试全部通过
❌ 差的 Spec 写法
## 验收标准
- [ ] 登录功能正常工作
- [ ] 没有 bug
编写技巧
- 一个 spec 一个功能 - 不要混合多个不相关的功能
- 验收标准可量化 - 能够明确验证是否完成
- 包含测试要求 - 确保代码质量
- 说明完成信号 - 提醒 Cline 输出
<promise>DONE</promise>
🔄 典型工作流
第1天:规划阶段
├─ 在 Cline 中:初始化 Ralph,创建项目结构
├─ 编写 5-10 个功能 spec
└─ 运行 ./scripts/ralph-loop.sh plan(可选)
第2天:开发阶段
├─ 运行 ./scripts/ralph-loop.sh
├─ Ralph 自动完成所有 spec
└─ 查看日志,验证结果
第3天:调整优化
├─ 根据结果调整未完成的 spec
├─ 继续运行 ralph-loop.sh
└─ 直到所有功能完成
🔗 相关资源
- GitHub: https://github.com/fstandhartinger/ralph-wiggum
- 网站: https://ralph-wiggum.ai
- 原始方法: https://github.com/ghuntley/how-to-ralph-wiggum
🎯 总结
在 Cline 中使用 Ralph Wiggum 的关键:
- ✅ 让 Cline 帮你设置项目结构
- ✅ 编写清晰、可测试的 spec
- ✅ 在终端运行 ralph-loop.sh(不在 Cline 中)
- ✅ 每个循环都是全新的 Cline 会话
- ✅ 通过
<promise>DONE</promise>信号标记完成
让 Ralph 做 Ralph 的事 - 信任 AI 的自主能力,专注于编写好的规范!