使用 MadoHub 构建多 Agent 工作流
一篇实用指南,讲解如何使用 MadoHub 画布把多个 AI Agent 组合成可靠的工作流。
运行单个 AI Agent 很简单。让五个相互依赖输出的 Agent 协同工作,事情就变得有趣了 - 也是大多数工具力有不逮的地方。
这篇文章会带你从摆放图块到配置路由规则,一步步构建一个多 Agent 工作流。
从输出开始倒推
在把任何图块放到画布上之前,先决定最终输出应该是什么。先从结果倒推,会迫使你思考中间需要哪些步骤。
比如说,你想生成一个经过测试、带文档的 API 端点。最终输出是一个包含实现、测试和文档的 pull request。倒着推的话:
- 一个 PR composer Agent 负责组装最终输出
- 一个 test writer Agent 负责生成测试文件
- 一个 docs writer Agent 负责生成 API 文档
- 一个 code generator Agent 负责写实现
- 一个 spec parser Agent 负责从自然语言描述里提取需求
在画布上摆放图块
每个 Agent 都对应一个图块。在 MadoHub 里,图块是独立的执行环境 - 每个图块都有自己的上下文、模型配置和 system prompt。
把 spec parser 放在画布左侧,把 PR composer 放在右侧。中间放中间那些 Agent,大致按执行顺序排列。这个从左到右的布局,正好镜像了数据在系统中的流动方式。
定义连接
连接是图块之间的有向边。当你从 spec parser 的输出端口拖一条线到 code generator 的输入端口时,你其实是在告诉 MadoHub:把解析后的规格喂给代码生成提示词。
一个图块可以有多个输入。test writer 可以同时收到解析后的 spec 和生成后的代码,这样它既能写符合规格的测试,也能调用真实实现。
路由策略
不是每条连接都应该在上游一有输出就立刻触发。MadoHub 中的每条连接都有一个 trigger:
- on-complete:在检测到上游 Agent 的会话完成后触发
- on-idle:在上游 Agent 的终端进入空闲状态后触发
- on-keyword:当上游输出中出现配置的关键词时触发
- always:每当有新的一段输出时就触发,不需要任何完成信号
在底层实现上,on-complete 和 on-idle 的处理方式是一样的——两者都会在各自的触发信号之后,先等待一段短暂的空闲计时器(约 8 秒),然后才真正路由。可以把它们看作同一种暂停,只是触发的原因不同,而不是两种独立的策略。
每条连接还有一个 transform,控制实际发送到下游的内容:raw(逐字保留最近若干行)、summary(AI 生成的摘要)、full-output(更大的最近输出窗口)、prompt-wrap(你自己的模板,可使用 {output} 和 {round} 等变量),或 ai-routing(AI 生成的、具备上下文感知能力的提示词,需要配置 API key)。
在我们的 API 工作流里,你可以把 spec parser 到 code generator 的连接设置为 on-complete 触发、full-output transform;再把 code generator 到 test writer 和 docs writer 的连接都设置为 on-complete 触发、raw transform——只要 code generator 的会话报告完成,两个下游 Agent 就会立刻基于同一段最近输出开始工作。
处理失败
Agent 会失败。模型会产生幻觉。输出不总是符合预期。一个可靠的多 Agent 工作流需要设置护栏,防止被路由触发的循环无限运行下去。
MadoHub 的循环保护基于轮次而不是输出校验:每条被路由的连接都有一个 maxRounds 上限(默认 5,可配置为 1 到 20),以及轮次之间的冷却时间(默认 3 秒,可配置到最多 30 秒),这样下游 Agent 就不会被触发得比它实际能响应的速度更快。你还可以设置一个 stopKeyword——任意不区分大小写的子串,比如 "LGTM"——只要某个 Agent 的输出中包含它,循环就会立刻停止。
MadoHub 内置的 Peer review flow 正是这样运作的:一个 Claude Code 作者和一个 Codex 审阅者被接成一个循环,stopKeyword 设为 "LGTM"——审阅者会持续给出反馈,直到它说出这个词为止,循环才会停止。内置的 Pipeline flow 更简单:这是一个两阶段的交接,第一个 Agent 完成后,把它的 full-output 传给第二个 Agent。内置的 Watcher flow 则全程由关键词触发,使用 ai-routing transform,把匹配到的短语转换成具备上下文感知能力的后续提示词。
迭代才是重点
基于画布的多 Agent 工作流最大的优势是迭代速度。再加一个 Agent - 比如在 code generator 和 PR composer 之间加一个安全审查者 - 只需要几秒。你放一个图块,画两条连接,工作流就更新了。
在 pipeline-as-code 系统里试试这个。你得改配置文件、重启进程,还得祈祷 schema 还能过。到了画布上,反馈回路是即时的。