返回

oh-my-codex 教程 5:$ralph 与持久执行模式

详解 $ralph 持久执行技能,学习自引用循环机制,掌握 sparkshell 验证工具,确保任务直到完成。

教程概述

$ralph 是 oh-my-codex 的持久执行技能,通过自引用循环机制确保任务持续执行直到完成。

你将学到

  • ✅ $ralph 的工作原理
  • ✅ 自引用循环机制
  • ✅ 与 $autopilot 的区别
  • ✅ sparkshell 验证工具
  • ✅ 复杂任务执行实战

触发方式标识

trigger_mode: "显式命令($ralph)"
codex_native_alternative: "手动持续跟进"
superpowers_equivalent: "verification-completion 技能"
when_to_use_omx: "复杂、多步骤、易失败的任务"
when_to_skip_omx: "简单、一次性成功的任务"

为什么需要 $ralph?

普通执行的问题

flowchart TD
    A[开始任务] --> B[执行步骤 1]
    B --> C{成功?}
    C -->|否| D[失败停止]
    C -->|是| E[执行步骤 2]
    E --> F{成功?}
    F -->|否| D
    F -->|是| G[完成]

    style D fill:#ffcccc

持久执行的优势

flowchart TD
    A[开始任务] --> B[$ralph 循环]
    B --> C[执行步骤]
    C --> D{成功?}
    D -->|否| E[分析失败]
    E --> F[修复问题]
    F --> B
    D -->|是| G[sparkshell 验证]
    G --> H{验证通过?}
    H -->|否| E
    H -->|是| I[完成]

    style B fill:#e1f5ff
    style E fill:#fff3e0

$ralph 是什么?

$ralph 是 oh-my-codex 提供的持久执行工作流,核心特性:

  1. 自引用循环 - 失败后自动重试
  2. 错误分析 - 诊断失败原因
  3. 自动修复 - 尝试修复已知问题
  4. 验证集成 - 完成后自动验证
  5. 直到完成 - 不会中途放弃

与 $autopilot 的区别

特性 $autopilot $ralph
目标 自动化常规任务 完成复杂任务
失败处理 停止并报告 自动重试
验证 可选 强制
使用场景 简单、确定性任务 复杂、探索性任务
人工介入 很少需要 关键决策点

工作循环

while not complete:
    1. 分析当前状态
    2. 规划下一步
    3. 执行操作
    4. 检查成功/失败
    5. if 失败:
         分析原因
         修复问题
         continue
    6. if 成功:
         sparkshell 验证
         if 验证通过:
            complete = true
         else:
            修复问题
            continue

sparkshell 验证工具

sparkshell 是 $ralph 集成的验证工具,用于验证任务完成情况。

验证维度

维度 检查内容 工具/方法
功能 功能是否正常工作 自动化测试
质量 代码是否符合规范 Linter
安全 是否存在漏洞 安全扫描
性能 是否满足性能要求 性能测试
集成 是否破坏现有功能 回归测试

sparkshell 工作流程

flowchart TD
    A[代码完成] --> B[sparkshell]
    B --> C[运行测试套件]
    C --> D{全部通过?}
    D -->|否| E[生成错误报告]
    E --> F[返回修复]
    D -->|是| G[验证完成]

    style B fill:#e3f2fd
    style G fill:#e8f5e9

完整实战案例

场景:重构大型代码库

任务:将 10000+ 行的单体应用重构为模块化架构

步骤 1:启动 $ralph

$ralph "重构 monolith 应用为模块化架构"

$ralph 执行过程

=== 迭代 1 ===
操作:识别模块边界
结果:成功
识别出 5 个核心模块

=== 迭代 2 ===
操作:提取用户模块
结果:失败 - 循环依赖
分析:User 和 Order 模块相互引用
修复:引入 UserRepository 接口

=== 迭代 3 ===
操作:重新提取用户模块
结果:成功
用户模块独立

=== 迭代 4 ===
操作:提取订单模块
结果:成功

...(持续迭代)...

=== 迭代 15 ===
操作:运行 sparkshell 验证
结果:验证失败
问题:3 个测试未通过
修复:更新测试用例

=== 迭代 16 ===
操作:重新验证
结果:全部通过
状态:完成

最终结果

  • 重构完成:5 个独立模块
  • 测试通过:98/98
  • 代码质量:A 级
  • 耗时:自动完成,无需人工干预

使用模式

模式 1:简单持久执行

$ralph "实现一个功能"

适用:中等复杂度,可能遇到预料外问题

模式 2:带验证的执行

$ralph "重构代码并确保测试通过"
# sparkshell 自动运行测试

适用:需要质量保证的任务

模式 3:多阶段执行

# 阶段 1:规划
$plan "重构方案"

# 阶段 2:持久执行
$ralph "按 PRD 重构代码"

适用:大型、复杂任务


核心原则

DO(推荐做法)

✅ 给 $ralph 明确的任务目标
✅ 设定合理的完成标准
✅ 在关键节点检查进展
✅ 信任 sparkshell 验证

DON’T(避免做法)

❌ 任务目标过于模糊
❌ 频繁中断 $ralph 执行
❌ 忽视 sparkshell 的错误报告
❌ 对简单任务使用 $ralph

反模式与常见错误

反模式 1:目标不明确

❌ 错误:
$ralph "改进代码"

✅ 正确:
$ralph "将代码覆盖率提升到 80%"

反模式 2:忽视验证失败

❌ 错误:
sparkshell 报告问题后忽略

✅ 正确:
认真分析 sparkshell 报告
修复所有问题

反模式 3:无限循环

❌ 问题:
任务目标不可能完成
$ralph 无限重试

✅ 解决:
设定最大迭代次数
达到限制后人工介入

vs 原生 Codex

特性 原生 Codex $ralph
失败处理 停止 自动重试
错误分析 手动 自动
验证 可选 集成 sparkshell
任务持续性 会话限制 持久直到完成
人工干预 频繁需要 关键节点

vs Superpowers

特性 Superpowers $ralph
触发方式 自动触发 显式命令
失败处理 自动重试 自动重试+修复
验证 verification 技能 sparkshell
使用场景 自动模式 显式控制
成本 自动管理 用户控制

快速参考

命令速查

# 基础持久执行
$ralph "任务描述"

# 带自定义验证
$ralph "任务描述 - 验证:测试通过率 100%"

# 限制迭代次数
$ralph "任务描述 --max-iterations 10"

# 与 $plan 组合
$plan "任务方案"
$ralph "执行上述方案"

使用场景速查表

场景 推荐命令
修复复杂 Bug $ralph
重构代码 $ralph
提高测试覆盖 $ralph
添加功能 $plan 后 /prompts:executor
简单修改 /prompts:executor

小结

$ralph 确保任务持续执行直到完成,是 oh-my-codex 的执行保障机制

核心要点

  1. 复杂任务用 $ralph
  2. 相信自引用循环机制
  3. 认真对待 sparkshell 验证
  4. 与 $plan 配合使用效果最佳

上一篇教程 4:/prompts 角色系统详解

下一篇教程 6:$team 多代理协调