名称: ralph-wiggum 描述: 自主AI编码循环用于无人值守开发 - 让Claude在您睡觉时持续工作,强制执行沙箱以确保安全 允许工具:
- Bash
- Read
- Write
- Edit
- Glob
- Grep
- Task
- TodoWrite
Ralph Wiggum 模式
“我英语不及格?那不可能!” - Ralph Wiggum
Ralph Wiggum 模式是一种自主AI编码循环,使Claude Code能够在没有人工干预的情况下连续工作。以这个坚持不懈乐观的辛普森角色命名,这种技术让Claude在您睡觉时进行"夜班"工作。
关键原则
进度持久化在文件和git中,而不是在LLM的上下文窗口中。
当上下文填满时,循环用新上下文重新启动Claude。新实例从文件系统状态(您的代码、git历史记录和任务跟踪文件)中接续。
何时使用此技能
使用Ralph Wiggum模式用于:
- 过夜功能开发
- 错误狂欢(修复多个问题)
- 测试覆盖率改进
- 重构大型代码库
- 文档生成
- 任何您希望在外出时完成的多步骤任务
安全模型
关键:Ralph需要一个沙箱环境。
Ralph使用 --dangerously-skip-permissions,这可以:
- 无确认删除文件
- 读取凭证(~/.ssh, ~/.aws)
- 发起网络请求
- 运行任意命令
Ralph将拒绝启动,除非它检测到:
- 容器环境(Docker/Kubernetes)
- 网络隔离(无法访问互联网)
- 非root用户
- 无法访问敏感路径
快速开始
1. 在项目中初始化Ralph
# 运行初始化脚本来搭建Ralph文件
./ralph-init.sh
这会创建:
RALPH_PROMPT.md- 每次迭代中Claude使用的提示IMPLEMENTATION_PLAN.md- 任务跟踪文件ralph.sh- 主循环脚本ralph-sandbox.sh- Docker包装器Dockerfile.ralph- 沙箱容器定义
2. 定义您的工作
# 创建规范目录用于需求
mkdir -p specs
# 写入您的需求
cat > specs/my-feature.md << 'EOF'
## 功能: 用户仪表板
### 需求
- 显示用户的最近活动
- 展示使用统计
- 允许日期范围筛选
EOF
# 更新实施计划
cat > IMPLEMENTATION_PLAN.md << 'EOF'
## 任务
- [ ] 创建仪表板组件
- [ ] 添加活动流API端点
- [ ] 实现日期范围选择器
- [ ] 为仪表板编写测试
EOF
3. 运行Ralph(在沙箱中)
# 推荐:使用Docker包装器
./ralph-sandbox.sh
# 带迭代限制
./ralph-sandbox.sh . 20
# 从另一个终端检查进度
tail -f ralph.log
git log --oneline -10
4. 审查结果
# 查看Ralph做了什么
git log --oneline
# 检查任务完成情况
cat IMPLEMENTATION_PLAN.md
# 验证测试通过
pytest
工作原理
┌─────────────────────────────────────────────────────────────────┐
│ 外部BASH循环 │
│ │
│ while :; do │
│ ┌─────────────────────────────────────────────────┐ │
│ │ CLAUDE会话 │ │
│ │ │ │
│ │ 1. 读取RALPH_PROMPT.md │ │
│ │ 2. 检查IMPLEMENTATION_PLAN.md │ │
│ │ 3. 选择一个任务,实现它 │ │
│ │ 4. 运行测试,提交更改 │ │
│ │ 5. 上下文填满 → 会话结束 │ │
│ └─────────────────────────────────────────────────┘ │
│ ↓ │
│ Git提交保存进度 │
│ 循环用新上下文重新启动 │
│ done │
└─────────────────────────────────────────────────────────────────┘
文件参考
RALPH_PROMPT.md
每次迭代加载的提示。为您的用例自定义:
# Ralph模式指令
您正在自主Ralph模式下操作。
## 每次迭代
1. 读取IMPLEMENTATION_PLAN.md和git日志
2. 选择一个待处理任务,标记为进行中
3. 完全实现并测试
4. 标记完成,提交更改
## 规则
- 绝不跳过测试
- 每次有意义的更改后提交
- 如果受阻,记录原因并继续
IMPLEMENTATION_PLAN.md
持久任务跟踪(在上下文重置中存活):
## 任务
- [x] 任务1(在迭代1中完成)
- [x] 任务2(在迭代2中完成)
- [ ] 任务3(进行中)
- [ ] 任务4(待处理)
ralph.sh
带沙箱强制执行的主循环。关键特性:
- 拒绝在沙箱外运行
- 可配置迭代限制
- 每次迭代后提交git
- 优雅的关闭处理
ralph-sandbox.sh
Docker包装器,可以:
- 如果需要,构建沙箱镜像
- 仅挂载项目目录
- 禁用网络(
--network none) - 设置资源限制(内存、CPU、PIDs)
- 放弃所有能力
配置
环境变量
| 变量 | 默认值 | 描述 |
|---|---|---|
RALPH_MAX_ITERATIONS |
0(无限) |
在N次迭代后停止 |
RALPH_MODEL |
sonnet |
使用的Claude模型 |
RALPH_COST_LIMIT |
50.00 |
最大花费(美元)(带成本监控钩子) |
ANTHROPIC_API_KEY |
可选 | API密钥(Claude Code订阅不需要) |
沙箱覆盖(危险)
仅用于您已验证的自定义沙箱环境:
RALPH_I_KNOW_WHAT_IM_DOING=sandboxed ./ralph.sh
最佳实践
提示工程
- 具体 - 告诉Claude每次迭代具体做什么
- 单一任务焦点 - "选择一个任务"防止上下文膨胀
- 要求测试 - 在提示中包含测试
- 跟踪进度 - 使用IMPLEMENTATION_PLAN.md作为共享状态
任务分解
将大任务分解为小的原子部分:
## 坏
- [ ] 实现用户认证
## 好
- [ ] 创建带电子邮件、密码哈希的用户模型
- [ ] 添加POST /api/register端点
- [ ] 添加POST /api/login端点
- [ ] 添加密码重置流程
- [ ] 添加JWT中间件
- [ ] 编写认证测试
监控
# 实时观看迭代
tail -f ralph.log
# 检查提交
watch -n 5 'git log --oneline -10'
# 监控资源使用
docker stats
安全钩子(推荐)
安装这些钩子以增加安全:
# 阻止危险操作
skillz hooks install ralph-safety-check
# 跟踪API成本
skillz hooks install ralph-cost-monitor
故障排除
Ralph无法启动
检查沙箱检测输出。您需要至少通过3个检查:
- 检测到容器
- 网络隔离
- 非root用户
- 无法访问敏感路径
Ralph卡在任务上
- 检查
ralph.log中的错误 - 更新
IMPLEMENTATION_PLAN.md以解除阻塞 - 添加澄清笔记到
RALPH_PROMPT.md
失控的迭代
设置MAX_ITERATIONS或使用成本监控钩子:
./ralph-sandbox.sh . 20 # 在20次迭代后停止