Ralph Flow——下一代自定义工作流编排引擎,探索无界AI编程的极致潜力
Ralph Flow:从一段 Bash 循环到可编排的 AI 工作流引擎
2025年底,澳大利亚开发者 Geoffrey Huntley 在铲羊粪时琢磨出一个简单的 Bash 脚本——Ralph Loop。逻辑其实挺粗暴:每次用全新上下文启动 Agent,跑完一轮就停,然后重启再跑,直到任务完成或者 Token 烧光。没想到这玩意儿在社区里火得很快,连 Claude Code 的负责人 Boris Cherny 都用它跑了 30 天、提交了 259 个 PR。
但热闹过后,实际用起来的问题也慢慢浮出水面。成本不好控、中间产物没地方放、状态全靠外部脚本维护……社区里那句“抛弃 Workflow,拥抱 Ralph Loop”的口号,很快就被更务实的声音取代了:我们缺的不是循环本身,而是一个真正能灵活编排、可追溯的工作流引擎。
于是有了 ralph-flow。它不是要推翻 Ralph Loop,而是把那种“死磕到底”的思路,做成了一个插件化的多步骤工作流工具,专门给 OpenCode 用户用的。
一、Ralph Loop 的局限与 ralph-flow 的出发点
Ralph Loop 的核心就一句话:Stop Hook 拦截 AI 的结束指令,把原始 Prompt 重新塞回去,强制它继续跑。简单直接,适合单点任务死磕。但一旦任务稍微复杂点,问题就来了:
- 只能做“执行→检查→重试”的单循环,拆不了“分析-设计-实现-测试”的流水线。
- 中间产物无处安放,比如审查报告、设计文档,全靠 PRD JSON 和
progress.txt硬扛。 - 状态管理散落在各个文件里,跑一半卡住了都不知道停在哪,回滚也麻烦。
ralph-flow 的思路很明确:保留“迭代直到完成”的内核,但把执行过程结构化。每个步骤拆成 DO(执行)和 CHECK(验证),用 YAML 定义流转逻辑,中间产物统一归档,状态实时可查。
二、核心设计:DO→CHECK 引擎与“工作流即配置”
1. 独立审计的 DO→CHECK 机制
每个步骤不再让 AI “自己考自己”。DO 阶段负责干活,输出 <done>;CHECK 阶段用独立的上下文去验证结果,返回 <true> 或 <false>。通过就往下走,不通过就把失败原因喂回去重试。
这样既避免了上下文膨胀导致的注意力分散,也解决了“全新失忆”带来的无效循环。每次失败后重新注入失败上下文,AI 是带着“上次为什么没跑通”的记忆继续的,而不是从头再来。
2. YAML 定义工作流
不用写代码,在 .opencode/ralph-flow/workflows/ 下放个 YAML 就能跑。比如一个标准的“审查→重构→测试”流程:
steps:
- id: review
desc: 代码审查
do: 审查当前代码库,找出代码异味、潜在bug和优化机会,生成审查报告
input: 项目源码
output: review-report.md
check: 审查报告是否覆盖了所有关键模块?是否给出了可操作的建议?
on_pass: refactor
on_fail: review
max_fail_count: 3
- id: refactor
desc: 代码重构
do: 基于审查报告执行重构,修复问题并优化代码结构
input: review-report.md
output: 重构后的代码
check: 重构后代码是否通过了测试?是否解决了审查报告中的所有问题?
on_pass: test
on_fail: refactor
max_fail_count: 5
- id: test
desc: 最终验证
do: 运行完整测试套件,验证重构后的功能完整性
input: 重构后的代码
output: test-results.md
check: 所有测试是否通过?是否有回归问题?
on_pass: done
on_fail: refactor
max_fail_count: 3
每一步的输入、输出、验证条件、失败重试次数都写得很清楚。团队可以把这套逻辑沉淀成模板,新人直接 /ralphflow-start tdd 就能按规范走。
3. 关键节点的人工介入
AI 跑飞了最头疼的是 Token 烧完才发现方向错了。ralph-flow 支持 manual_phase,比如:
manual_phase: review.do, execute.check
会在审查完成和验证前暂停,等你确认后再继续。效率和安全之间,留了一道手动开关。
三、状态管理与底层逻辑
1. 一切皆文件,Git 可追溯
所有中间产物和运行状态都放在 .opencode/ralph-flow/ 下:
.opencode/ralph-flow/
├── ralph-flow.local.md # 工作流状态(Markdown frontmatter)
├── workflows/ # 自定义工作流 YAML 定义
├── artifacts/ # 中间产物(proposal/design/verification 等)
└── logs/ # JSON Lines 格式执行日志
跑一半断了?直接看文件就知道停在哪,甚至能回滚。logs/ 里记录了 step_start、check_result、fail_count_increment 等事件,完全可审计、可回放。
2. 事件驱动与钩子
插件主要监听 session.idle 和 session.deleted。AI 输出 <done> 后进入 idle,插件自动注入 CHECK Prompt;验证结果出来后,根据 YAML 配置决定下一步。整个过程不依赖外部调度器,纯靠 OpenCode 的会话生命周期驱动。
四、ralph-loop vs ralph-flow:核心差异
| 维度 | Ralph Loop | Ralph Flow |
|---|---|---|
| 流程模型 | 单步死循环 | YAML 定义的多步骤流水线 |
| 验证方式 | PRD 里的 passes 标记 |
独立 CHECK 阶段,不同上下文审计 |
| 失败处理 | 全局 stuck 阈值 | 每步独立 max_fail_count + 失败上下文重试 |
| 人工介入 | CLI 手动干预 | manual_phase 精确控制暂停点 |
| 状态管理 | progress.txt |
Markdown 状态文件 + JSON Lines 日志 |
| 安装方式 | npm 全局 CLI | OpenCode 插件,一行配置自动注册命令 |
五、快速上手
在 OpenCode 配置里加一行:
{ "plugin": ["@yibener/ralph-flow"] }
首次加载会自动初始化目录结构。常用命令就几个:
/ralphflow-start(自动引导选工作流)/ralphflow-status(看当前进度、失败计数)/ralphflow-continue//ralphflow-cancel(恢复或终止)
六、能跑什么?不止是代码生成
ralph-flow 不预设固定模式,YAML 就是边界。除了刚才的 TDD 流程,实际社区里已经有人在用:
- API 开发:接口设计 → 参数校验 → 业务逻辑 → 单测 → 集成测试
- 依赖升级:影响分析 → 兼容性检查 → 渐进迁移 → 回归验证
- 安全审计:代码扫描 → 漏洞分析 → 修复建议 → 审计报告
每个 YAML 都可以版本控制、团队共享。它更像是一个“工作流脚手架”,把重复的 AI 交互固化成可复用的标准动作。你不需要重新发明轮子,只需要把团队的 best practice 写成配置。
七、写在最后
ralph-flow 还在早期,目前只支持基础 DAG 流转和单 Agent 执行。后续可能会加可视化编辑器、条件分支、多 Agent 协作,甚至搞个社区模板市场。但现阶段,它已经能解决“AI 跑偏了不知道”、“中间产物找不到”、“流程无法复用”这几个最头疼的问题。
项目是开源的:https://github.com/534529531/ralph-flow
如果你也在用 OpenCode 做 AI 辅助开发,或者对可编排的工作流感兴趣,欢迎 clone 下来试试。有 bug 直接提 Issue,有更好的工作流模板也欢迎 PR。顺手点个 Star 就行,开源项目靠大家养着。

浙公网安备 33010602011771号