Skip to content
返回 AI 编程

多智能体编排模式

协调多个 AI 智能体(规划者、编码者、审查者)处理单上下文无法胜任的任务。

智能体开发高级

为什么

MCP 参考服务器仓库约有 9 万 GitHub star,代理 AI 基金会成员从 2025 年 12 月的 49 个创始成员增长到 2026 年 8 月的 247 个,显示多智能体生态快速增长。单一智能体在大任务上触及上下文上限并丢失主线。

将工作拆分给专门智能体(规划者分解、编码者实现、审查者批评)保持每个上下文聚焦,产生推理更充分的输出,并让循环在无需每轮人工介入时自我修正。这是将 AI 扩展到单一提示词之外的方式。

何时使用

在以下情况编排多智能体:任务需分解(触及 DB、API、UI 和测试的功能);单上下文无法容纳所有相关文件;或希望内置审查者门控编码者。单智能体一次能搞定的任务避免使用;编排开销不值得。

如何做

1. 将任务分解为带清晰交接的角色: 规划者:读规格,输出带文件目标的步骤列表。 编码者:取一步,实现,运行门禁。 审查者:将编码者输出与步骤 diff,批准或拒绝。 2. 选择编排拓扑: - 流水线:规划者 -> 编码者 -> 审查者,线性,最简单。 - 循环:编码者 -> 审查者 -> 编码者,直到审查者批准。 - 扇出:规划者拆为 N 个独立编码者运行,再合并。 3. 智能体间显式传递上下文,绝不隐式: - 规划者输出(步骤列表)是编码者输入。 - 编码者输出(diff + 门禁结果)是审查者输入。 - 将交接序列化为 JSON 文件,使每个智能体干净启动。 4. 用限定上下文运行编码者(仅该步骤的文件): claude --scope src/api/ "实现步骤 3:POST /api/books" 5. 用审查者智能体门控,不仅是测试: "将此 diff 与步骤规格对比。若添加未要求文件、使用禁用模式、 或未通过任何验收标准则拒绝。输出 APPROVE 或 REJECT + 原因。" 6. REJECT 时循环:将审查者原因作为下一提示词喂回编码者。 循环上限 3 次;超过则升级给人工。 7. 合并已批准步骤并运行完整门禁: npm run check && npm test && npm run build 提交合并结果并附智能体运行摘要。

示例

带 JSON 交接的流水线编排(Node.js 驱动): // 1. 规划者 const plan = await runAgent({ role: "planner", prompt: "将 '添加 books hub' 分解为带文件目标的步骤。输出 JSON。", }); // plan = [{ step: 1, target: "src/data/books.ts", task: "添加 Books 类型 + CRUD" }, ...] // 2. 每步编码者 + 审查者循环 for (const s of plan) { let verdict = "REJECT", tries = 0; while (verdict === "REJECT" && tries < 3) { const diff = await runAgent({ role: "coder", scope: s.target, input: s }); verdict = await runAgent({ role: "reviewer", input: { s, diff } }); if (verdict.startsWith("REJECT")) s = { ...s, feedback: verdict }; tries++; } if (verdict.startsWith("REJECT")) throw new Error(`步骤 ${s.step} 审查失败`); await commit(diff); } // 3. 最终门禁 await run("npm run check && npm test && npm run build");

常见问题

  • ⚠错误:智能体在同一工具调用上死循环 → 加最大迭代守卫和最近 N 步动作去重检查。
  • ⚠Error: Cannot find module '@modelcontextprotocol/sdk' → `npm install @modelcontextprotocol/sdk`;智能体需 SDK 调用 MCP 工具。
  • ⚠错误:"Tool timed out after 30000ms" → 调大超时配置或将任务拆成智能体可增量完成的小子任务。
  • ⚠过度编排:将一次性任务拆成 3 个智能体增加延迟和失败模式却无收益。

最佳实践

  • ✓定义每个角色的输入输出 schema;交接序列化为 JSON 文件。
  • ✓给审查者显式、可检的拒绝标准,而非模糊的'这好吗'判断。
  • ✓限制每个循环(3 次迭代)并在耗尽时升级给人工。
  • ✓每次编码者运行仅限定其步骤的文件以保持上下文聚焦。
  • ✓每步记录完整智能体转录,使失败可事后调试。

常见问题解答

什么时候多智能体编排值得开销?

任务需分解(触及 DB、API、UI 和测试的功能)或单上下文无法容纳所有相关文件时。单文件编辑或一次性任务用一个智能体更快——编排增加延迟和失败模式却无收益。

该用哪种拓扑:流水线、循环还是扇出?

流水线(规划者、编码者、审查者)最简单,适用大多数任务。需自修正时加循环(编码者与审查者直到批准)。可并行独立步骤用扇出(N 个独立编码者加合并)。从流水线开始。

智能体如何无共享内存共享上下文?

每个交接序列化为 JSON 文件。规划者的步骤列表成为编码者输入;编码者的 diff 成为审查者输入。每个智能体以干净上下文启动,仅读其输入文件——无隐式共享状态。

如何阻止审查者智能体橡皮图章?

给具体可检拒绝标准('若 diff 添加未要求文件、用禁用模式或未通过任何验收标准则拒绝')并要求显式 APPROVE/REJECT 加原因。模糊的'这好吗'审查者全批准,使门控失效。

如果编码者和审查者永远循环怎么办?

每个循环上限 3 次迭代,耗尽则升级给人工。每步记录完整转录以便调试分歧。无限循环通常意味着规格有歧义或审查者标准与编码者约束冲突。