DEV Community

Rick
Rick

Posted on

AgentCrew MCN 架构设计详解

AgentCrew MCN 架构设计详解

从一个需求说起:假如我们要搭建一个智能营销内容工厂,需要多个 AI Agent 协同工作——研究员收集信息、撰稿人撰写文章、设计师配图、审核员检查合规。如何让这些 Agent 既独立又能高效协作,同时还能被产品经理轻松调度?正是为了解决这类问题,我们设计了 AgentCrew MCN(Multi‑agent Collaboration Network)——一个可扩展、可观测、低代码的智能体协作架构。

本文将深入 AgentCrew MCN 的内核,从设计理念、核心组件、通信模型到实际代码示例,全面解析这一架构是如何让多个 Agent 像一支专业 Crew(团队)一样工作的。


1. 设计目标:为什么需要 MCN?

当前多数 AI Agent 框架侧重于单个 Agent 的能力强化(ReAct、Plan‑and‑Execute 等),但在真实业务中,往往需要多个 Agent 组成流水线或动态协作网络。AgentCrew MCN 的设计目标就是填补“单 Agent 到多 Agent 协作”之间的空白,具体包括:

  • 解耦协作逻辑 :将任务分配、消息传递、状态同步从 Agent 业务逻辑中剥离,让 Agent 只关注自身职责。
  • 动态组网:Crew(团队)可以根据任务需求动态组建与销毁,支持任意拓扑(顺序、并行、条件分支)。
  • 可靠通信:确保消息可靠投递、故障重试与超时处理,兼容同步与异步调用。
  • 可观测性:内置分布式追踪与日志,让每次多 Agent 对话全链路可监控。
  • 低代码编排:通过 YAML/JSON 配置或 Python SDK 快速定义协作流程。

2. 核心架构

AgentCrew MCN 的整体架构可以概括为“一个总线、两类节点、三层抽象”:

  • 一个总线 —— CrewBus:基于消息队列的异步消息中枢,负责 Agent 之间的通信与事件分发。
  • 两类节点 —— Agent 节点与 Crew 控制器
    • Agent 节点:挂载了特定能力(LLM、工具、记忆体)的工作单元。
    • Crew 控制器:管理 Crew 生命周期、任务路由与状态机。
  • 三层抽象
    1. Task:用户意图的最小单位,包含输入、输出类型和约束。
    2. Crew:由多个 Agent 节点和一段协作拓扑(DAG)组成的执行环境。
    3. Skill:可复用的能力封装,一个 Agent 可以挂载多个 Skill。

架构示意图:CrewBus 连接多个 Agent 和控制器

3. 消息与通信模型

AgentCrew MCN 的通信完全基于 意图消息(Intent Message),这是一个标准化的结构化数据包,包含:

{
  "intent": "write_article",
  "payload": {
    "topic": "AgentCrew MCN 架构设计",
    "style": "技术深度文章"
  },
  "sender": "orchestrator",
  "recipient": "writer_agent",
  "correlation_id": "task-123",
  "metadata": {
    "priority": "high",
    "ttl": 3600
  }
}
Enter fullscreen mode Exit fullscreen mode

消息通过 CrewBus 投递,支持三种通信模式:

  • 点对点(Direct):明确指定接收 Agent,用于确定性任务链。
  • 广播(Broadcast):发送给 Crew 内所有 Agent,用于状态同步或通知。
  • 路由匹配(Intent‑based routing):由 Crew 控制器根据意图字段自动分配到具备对应能力的 Agent,实现灵活调度。

4. Agent 节点设计

每个 Agent 节点本质上是一个微服务,内部包含:

class AgentNode:
    def __init__(self, name: str, skills: List[Skill], memory: Memory):
        self.name = name
        self.skills = {skill.intent: skill for skill in skills}
        self.memory = memory

    async def handle_message(self, msg: IntentMessage):
        # 根据 intent 选择技能
        skill = self.skills.get(msg.intent)
        if not skill:
            return self._reject(msg, reason="unsupported_intent")
        # 利用记忆上下文增强执行
        context = await self.memory.retrieve(msg.correlation_id)
        result = await skill.execute(msg.payload, context)
        # 更新记忆
        await self.memory.store(msg.correlation_id, result)
        return result
Enter fullscreen mode Exit fullscreen mode

Agent 不维护全局拓扑,只对收到的消息做出反应。这种无状态设计(除了记忆体)使得节点可以水平扩展。

5. Crew 控制器与拓扑编排

Crew 控制器是协作的大脑。它通过解析 Crew 定义文件 来构建 DAG(有向无环图),并驱动任务流转。

示例 crew.yaml

name: article_creation_crew
entry: researcher_agent
agents:
  - name: researcher_agent
    skills: [research]
  - name: writer_agent
    skills: [write_article]
  - name: reviewer_agent
    skills: [review_compliance]

topology:
  - from: entry
    to: researcher_agent
    intent: research
  - from: researcher_agent
    to: writer_agent
    intent: write_article
    condition: "output.status == 'ok'"
  - from: writer_agent
    to: reviewer_agent
    intent: review_compliance
    condition: "output.draft != null"
  - from: reviewer_agent
    to: exit
    condition: "output.approved == true"
Enter fullscreen mode Exit fullscreen mode

控制器引擎的核心逻辑:

class CrewController:
    def __init__(self, topology_def: dict):
        self.topology = self._parse_dag(topology_def)
        self.state = {}

    async def execute(self, task: Task):
        node = self.topology.entry_node
        while node != "exit":
            # 发送消息给对应 Agent
            msg = self._build_intent(task, node)
            response = await bus.dispatch(msg)
            # 记录状态
            self.state[node] = response
            # 根据条件和当前节点找到下一个节点
            node = self.topology.next(node, response)
            task.payload = response  # 数据传递
        return self.state
Enter fullscreen mode Exit fullscreen mode

6. 异常处理与韧性设计

多 Agent 协作中,失败是常态。MCN 内置了多级容错策略:

  • 超时重试:每条消息可配置 ttl 和重试次数,CrewBus 自动处理指数退避。
  • 断路器:当某个 Agent 连续失败达到阈值时,将对其熔断,避免级联崩溃。
  • 补偿任务:拓扑中可定义 on_failure 跳转,执行回滚或通知人工接管。
  • 影子模式:灰度发布新 Agent 时,可同时向新旧版本发送流量并对比结果,不影响主链路。

7. 可观测性:全链路追踪

为了洞察复杂协作,MCN 为每条消息注入了 OpenTelemetry 标准的 Trace Context。开发者在控制台可以看到一次“从研究到文章发布”的完整调用链:

Task #123 (article_creation_crew)
 ├─ researcher_agent: 1.2s (ok)
 ├─ writer_agent: 2.8s (ok)
 │   └─ tool: gpt-4o 调用 1.3s
 └─ reviewer_agent: 0.5s (ok)
     └─ 输出: approved
Enter fullscreen mode Exit fullscreen mode

所有日志、指标和链路由 CrewOps Dashboard 统一展示,支持按业务 ID 检索。

8. 实战示例:搭建一个营销内容流水线

下面用 Python SDK 快速搭建一个简化版的多 Agent 内容生成流水线(基于 MCN)。

from agentcrew import AgentNode, Skill, CrewController, CrewBus
import asyncio

# 1. 定义 Skill
async def research_skill(payload, context):
    # 模拟搜索资料
    return {"findings": "AgentCrew MCN v2 发布,性能提升 40%"}

async def write_skill(payload, context):
    findings = payload.get("findings", "")
    draft = f"根据研究结果撰写:{findings}"
    return {"draft": draft}

async def review_skill(payload, context):
    draft = payload.get("draft", "")
    if "性能" in draft:
        return {"approved": True, "comment": "合规"}
    return {"approved": False, "comment": "缺少数据支撑"}

# 2. 构造 Agent 节点
researcher = AgentNode(name="researcher", skills=[Skill("research", research_skill)])
writer = AgentNode(name="writer", skills=[Skill("write", write_skill)])
reviewer = AgentNode(name="reviewer", skills=[Skill("review", review_skill)])

# 3. 注册到总线并定义拓扑
bus = CrewBus()
bus.register([researcher, writer, reviewer])

topology_def = {
    "entry": "researcher",
    "topology": [
        {"from": "researcher", "to": "writer", "intent": "write"},
        {"from": "writer", "to": "reviewer", "intent": "review"},
        {"from": "reviewer", "to": "exit", "condition": "output.approved == true"}
    ]
}
controller = CrewController(topology_def, bus)

# 4. 执行任务
async def main():
    task = {"topic": "AgentCrew 架构"}
    result = await controller.execute(task)
    print(result)  # 整个流水线状态

asyncio.run(main())
Enter fullscreen mode Exit fullscreen mode

9. 总结与展望

AgentCrew MCN 提供了一套轻量级、可组合的多 Agent 协作架构。它通过意图驱动的消息总线、声明式拓扑编排、以及丰富的异常处理,让开发者从“如何让 Agent 通信”的细节中解放出来,专注于业务 Skill 的开发。

未来,我们将进一步增强 MCN 的自治能力,包括:

  • Crew 自动优化:根据历史执行轨迹自动合并/拆分节点。
  • 多模态 Agent 支持:不仅限文本,还可接入图像、音视频处理 Agent。
  • 联邦协作:跨团队、跨组织的多 Crew 信任与协作协议。

如果你对多 Agent 协作感兴趣,欢迎前往 GitHub 查看项目源码,点亮 Star,也期待在 Issue 区听到你的场景与需求。让我们一同探索智能体协作的无限可能!

Top comments (0)