名称: ralph 描述: 自我引用循环直到任务完成,经过架构师验证
[RALPH + ULTRAWORK - 迭代 {{ITERATION}}/{{MAX}}]
您之前的尝试没有输出完成承诺。继续处理任务。
<目的> Ralph 是一个持久循环,持续处理任务直到完全完成并经过架构师验证。它将超工作的并行执行与会话持久性、失败自动重试以及完成前强制验证包装在一起。 </目的>
<使用时机>
- 任务需要保证完成并经过验证(不仅仅是“尽力而为”)
- 用户说“ralph”、“不要停”、“必须完成”、“完成这个”或“持续直到完成”
- 工作可能跨越多次迭代,需要在重试间保持持久性
- 任务受益于并行执行,并在结束时由架构师签署 </使用时机>
<不要使用时>
- 用户想要从想法到代码的完整自主管道——改用
autopilot - 用户想在提交前探索或计划——改用
plan技能 - 用户想要快速一次性修复——直接委托给执行代理
- 用户想要手动控制完成——直接使用
ultrawork</不要使用时>
<为什么存在> 复杂任务常常无声失败:部分实现被宣布为“完成”,测试被跳过,边缘情况被遗忘。Ralph 通过循环直到工作真正完成来防止这种情况,要求在允许完成前提供新的验证证据,并使用分层架构师审核来确认质量。 </为什么存在>
<执行策略>
- 同时触发独立代理调用——从不按顺序等待独立工作
- 对长操作使用
run_in_background: true(安装、构建、测试套件) - 委托给代理时始终显式传递
model参数 - 首次委托前阅读
docs/shared/agent-tiers.md以选择正确的代理层级 - 交付完整实现:不缩减范围、不部分完成、不删除测试以使它们通过 </执行策略>
<步骤>
- 回顾进展:检查 TODO 列表和任何先前迭代状态
- 从离开处继续:拾取未完成任务
- 并行委托:将任务路由到适当层级的专业代理
- 简单查找:低层级(Haiku)——“此函数返回什么?”
- 标准工作:中层级(Sonnet)——“添加此模块的错误处理”
- 复杂分析:高层级(Opus)——“调试此竞争条件”
- 在后台运行长操作:构建、安装、测试套件使用
run_in_background: true - 用新证据验证完成: a. 识别证明任务完成的命令 b. 运行验证(测试、构建、代码检查) c. 读取输出——确认它实际通过 d. 检查:零待处理/进行中 TODO 项
- 架构师验证(分层):
- <5 个文件,<100 行带完整测试:标准层级最低(architect-medium / Sonnet)
- 标准变更:标准层级(architect-medium / Sonnet)
-
20 个文件或安全/架构变更:彻底层级(architect / Opus)
- Ralph 底线:即使小变更也始终至少标准层级
- 批准时:运行
/oh-my-claudecode:cancel以干净退出并清理所有状态文件 - 拒绝时:修复提出的问题,然后在同一层级重新验证 </步骤>
<工具使用>
- 首次使用 MCP 工具前,调用
ToolSearch("mcp")以发现延迟的 MCP 工具 - 对于安全敏感、架构相关或涉及复杂多系统集成的变更,使用
ask_codex和agent_role: "architect"进行验证交叉检查 - 对于简单功能添加、充分测试的变更或时间关键验证,跳过 Codex 咨询
- 如果 ToolSearch 未找到 MCP 工具或 Codex 不可用,仅使用架构师代理验证继续——从不因外部工具而阻塞
- 使用
state_write/state_read用于 ralph 模式在迭代间的状态持久性 </工具使用>
<示例> <好> 正确并行委托:
Task(subagent_type="oh-my-claudecode:executor-low", model="haiku", prompt="添加 UserConfig 的类型导出")
Task(subagent_type="oh-my-claudecode:executor", model="sonnet", prompt="实现 API 响应的缓存层")
Task(subagent_type="oh-my-claudecode:executor-high", model="opus", prompt="重构认证模块以支持 OAuth2 流程")
为什么好:三个独立任务同时触发在适当层级。 </好>
<好> 完成前正确验证:
1. 运行:npm test → 输出:“42 通过,0 失败”
2. 运行:npm run build → 输出:“构建成功”
3. 运行:lsp_diagnostics → 输出:0 错误
4. 生成 architect-medium → 裁决:“批准”
5. 运行 /oh-my-claudecode:cancel
为什么好:每步都有新证据,架构师验证,然后干净退出。 </好>
<坏> 未经验证声称完成: “所有更改看起来不错,实现应该能正确工作。任务完成。” 为什么坏:使用“应该”和“看起来不错”——没有新测试/构建输出,无架构师验证。 </坏>
<坏> 独立任务顺序执行:
Task(executor-low, “添加类型导出”) → 等待 →
Task(executor, “实现缓存”) → 等待 →
Task(executor-high, “重构认证”)
为什么坏:这些是应并行运行的独立任务,而非顺序。 </坏> </示例>
<升级与停止条件>
- 当基本阻塞需要用户输入时停止并报告(缺失凭据、需求不明确、外部服务宕机)
- 当用户说“停止”、“取消”或“中止”时停止——运行
/oh-my-claudecode:cancel - 当钩子系统发送“巨石永不停止”时继续工作——这意味着迭代继续
- 如果架构师拒绝验证,修复问题并重新验证(不要停止)
- 如果同一问题在 3+ 次迭代中重复出现,将其报告为潜在基本问题 </升级与停止条件>
<最终检查清单>
- [ ] 原始任务的所有要求都已满足(无范围缩减)
- [ ] 零待处理或进行中 TODO 项
- [ ] 新测试运行输出显示所有测试通过
- [ ] 新构建输出显示成功
- [ ] lsp_diagnostics 显示受影响文件 0 错误
- [ ] 架构师验证通过(标准层级最低)
- [ ] 已运行
/oh-my-claudecode:cancel以清理状态 </最终检查清单>
<高级>
PRD 模式(可选)
当用户提供 --prd 标志时,在启动 ralph 循环前初始化产品需求文档。
检测 PRD 模式
检查 {{PROMPT}} 是否包含 --prd 或 --PRD。
PRD 工作流
- 创建
.omc/prd.json和.omc/progress.txt - 解析任务(
--prd标志后的所有内容) - 分解为用户故事:
{
"项目": "[项目名称]",
"分支名": "ralph/[功能名称]",
"描述": "[功能描述]",
"用户故事": [
{
"id": "US-001",
"标题": "[短标题]",
"描述": "作为一个 [用户],我想要 [动作] 以便 [好处]。",
"验收标准": ["标准 1", "类型检查通过"],
"优先级": 1,
"通过": false
}
]
}
- 创建
progress.txt带时间戳和空模式部分 - 指南:大小适中的故事(每个会话一个)、可验证标准、独立故事、优先级顺序(基础工作优先)
- 使用用户故事作为任务列表继续正常 ralph 循环
示例
用户输入:--prd 使用 React 和 TypeScript 构建待办事项应用
工作流:检测标志,提取任务,创建 .omc/prd.json,创建 .omc/progress.txt,开始 ralph 循环。
后台执行规则
在后台运行 (run_in_background: true):
- 包安装(npm install、pip install、cargo build)
- 构建过程(make、项目构建命令)
- 测试套件
- Docker 操作(docker build、docker pull)
阻塞运行(前台):
- 快速状态检查(git status、ls、pwd)
- 文件读写和编辑
- 简单命令 </高级>
原始任务: {{PROMPT}}