Deploying the Ralph Wiggum Technique: A Step‑by‑Step Tutorial

部署罗尔夫·维格姆(Ralph Wiggum)技术:一步一步的教程

罗尔夫·维格姆技术(Ralph Wiggum Technique),由 Geoff Huntley 开创,将大型语言模型(LLM)转变为完全自治的软件开发者。传统的逐行编码方式被一套清晰的提示规范基准以及一个外层循环取代,该循环会自动提交并推送工作。以下完整流程可以应用于任何 GitHub 仓库——理想情况下是希望更快发布功能并减少人为错误的开源项目。


1. 罗尔夫·维格姆到底是什么?

  • 目标:将软件开发成本降低到 低于快餐工人的工资
  • 核心思想:一个循环提示,在 规划实现 阶段交替进行。每一次循环读取现有代码库、规范,决定下一个 要点任务,实现、运行测试并提交。
  • 为什么有效:循环利用 LLM(Opus 或 Sonnet)的推理能力来处理高层次任务,而在本地使用廉价子代理执行文件与测试操作。测试产生的回压确保仅提交有效变更。

2. 项目结构

/project-root/
├── loop.sh                # Bash 循环,负责驱动 Claude
├── PROMPT_build.md        # 构建模式提示
├── PROMPT_plan.md         # 规划模式提示
├── AGENTS.md              # 操作指南(build、test、lint)
├── IMPLEMENTATION_PLAN.md# 由 Ralph 生成的优先任务列表
├── specs/                 # 每个 JTBD 话题的规范文件
└── src/                   # 将要更改的源代码

小贴士:将 AGENTS.md 保持简短(≈60 行)。只包含 Ralph 需要验证工作的命令。


3. 三阶段工作流

阶段 发生什么 何时使用
阶段 1 – 定义需求 你(人类与 LLM)识别 待办工作(JTBD),并将其拆分为不同 关注主题。每个主题得到一个 specs/*.md 文件。 项目启动时,或引入新功能/重构时
阶段 2 – 规划 Ralph 阅读 specs/* 与当前代码,比较两者并写入/更新 IMPLEMENTATION_PLAN.md。不触碰任何代码。 当不存在计划或现有计划已过时
阶段 3 – 构建 Ralph 按计划优先级选择最高任务,实施、运行回压测试、提交并更新计划。 重复执行,直到计划耗尽

4. 循环工作原理

  1. 外层循环loop.sh)将提示文件提供给 Claude。
  2. 提示告诉 Claude 学习 PROMPT.mdAGENTS.mdspecs/*src/*
  3. 根据模式(plan / build),提示指示 Ralph:
  4. 规划:生成 缺口分析 并写下条目式计划。
  5. 构建:挑选下一个任务,实施、测试、提交。
  6. 当 LLM 完成任务后,外层循环以新的上下文重新开始。

由于唯一共享的状态是磁盘上的 IMPLEMENTATION_PLAN.md 文件,循环无需复杂的编排。


4. 提示模板

4.1 PROMPT_plan.md

0a. 学习 `specs/*`,使用最多 250 个 Sonnet 子代理。
0b. 学习 @IMPLEMENTATION_PLAN.md(如存在)。
0c. 学习 `src/lib/*`,使用最多 250 个 Sonnet 子代理。

1. 对规范与代码做缺口分析。
   使用 Opus 子代理优先化任务并创建/更新 @IMPLEMENTATION_PLAN.md。
   **请勿实现任何内容**;仅规划。

4.2 PROMPT_build.md

0a. 学习 `specs/*`(最多 500 个 Sonnet 子代理)。
0b. 学习 @IMPLEMENTATION_PLAN.md。

1. 选择计划中最重要的未完成任务。
2. 搜索代码库以确认该任务缺失。
3. 实施任务,提交并推送。
4. 运行 AGENTS.md 中定义的所有测试作为回压。
5. 更新 @IMPLEMENTATION_PLAN.md,将任务标记为完成。

注意PROMPT_build.md 中的 99999 保护阈值强制执行最佳实践,例如使用富信息提交说明和更新标签。


5. Bash 循环(loop.sh)

#!/bin/bash
# 使用示例:
#   ./loop.sh          # 构建模式,无限迭代
#   ./loop.sh 20       # 构建模式,完成 20 个任务后停止
#   ./loop.sh plan     # 完整规划模式,无限
#   ./loop.sh plan 5   # 规划模式,最多 5 次迭代

MODE=${1:-build}
PROMPT_FILE=()
MAX_ITER=${2:-0}

if [[ "$MODE" == "plan" ]]; then
  PROMPT_FILE=\"PROMPT_plan.md\"
elif [[ "$MODE" =~ ^[0-9]+$ ]]; then
  PROMPT_FILE=\"PROMPT_build.md\"
  MAX_ITER=$MODE
else
  PROMPT_FILE=\"PROMPT_build.md\"
fi

ITERATION=0
while true; do
  [[ $MAX_ITER -gt 0 && $ITERATION -ge $MAX_ITER ]] && exit 0
  cat "$PROMPT_FILE" | claude -p \
    --dangerously-skip-permissions \
    --output-format=stream-json \
    --model opus \
    --verbose
  git push
  ITERATION=$((ITERATION+1))
  echo "--- Loop $ITERATION Complete ---"
done

功能说明 - 启动无 UI 的 Claude 会话。 - 自动批准工具调用(--dangerously-skip-permissions)。 - 返回 JSON 流,便于监控。 - 每次迭代后推送,若出错可通过 git reset --hard 回滚。


6. 回压与测试

AGENTS.md 列出了运行测试、检查风格和类型检查的确切命令,例如:

## Validation
- Run tests: `npm test`
- Lint: `npm run lint`
- Type‑check: `npm run tsc --noEmit`

当 Ralph 实施任务时,它将自动执行这些命令;任何失败都会导致循环重新启动,直至所有测试通过。这样可以保证每一次提交都已准备好投入生产。


7. 增强与自定义

Plan‑work 模式 – 当你需要聚焦冲刺时,循环脚本现在支持 plan-work "<description>",在新分支上创建一个作用域 IMPLEMENTATION_PLAN.md

基于验收的回压 – 在未来版本中,你可以指定每个规划任务必须包含基于规范验收标准的关联测试。

非确定性回压 – 使用 llm-review 工具,让 LLM 判断语气、视觉层级或品牌一致性。

可根据需要调整提示或添加保护阈值,但请记住:保持规划与构建分离。Ralph 在决定下一步执行哪个任务时最为出色,而非在哪个任务子集


8. 综合实践

  1. Fork 仓库并克隆。
  2. 将项目文件添加至 src/,并为每个 JTBD 主题创建一个 specs/*.md
  3. 运行 ./loop.sh plan 生成初始计划。
  4. 开始构建:./loop.sh
  5. 观察日志;当计划清空,项目即完成。
  6. 打开 PR,合并后继续下一功能。

此工作流将 LLM 转变为开发助手,负责繁重工作——循环执行任务、即时测试、干净提交,同时保持透明且版本可控。


9. 关键要点

  • 循环即核心:单个文件(IMPLEMENTATION_PLAN.md)将所有环节连接。
  • 规划与构建分离:两者使用相同提示基础设施,但在行为和输出上区别明显。
  • 回压不可省:测试、Lint 与类型检查确保质量。
  • 可扩展性:为大型功能使用工作规划,或为小项目保持单一计划。
  • LLM 的好坏取决于提示:保持提示精准,用 study 而非 read,并使用高级指令进行保护。

有了这份指南,你现在拥有完整蓝图,可在任何项目中部署罗尔夫·维格姆技术,将 AI 打造成一名自律的开发者,工作量降低、成本大幅削减。

原创文章: 查看原文

分享本文