多Agent协作部署

单个 Agent 的能力终究有限,但当多个 Agent 组成团队协同工作时,它们能够完成远比单个 Agent 更复杂、更高质量的任务。OpenClaw 的多 Agent 协作系统让你可以部署一个由多个专业化 Agent 组成的团队,通过编排器(Orchestrator)统一调度,实现任务的智能分配和结果的高质量输出。本教程将以部署一个"内容创作团队"为例,带你掌握多 Agent 协作部署的全部技能。

编排器 + 工人模式

OpenClaw 的多 Agent 协作采用经典的"编排器 + 工人"(Orchestrator + Worker)模式。编排器 Agent 负责理解用户需求、分解任务、分配工作并汇总结果;工人 Agent 各自专注于特定领域的任务执行。这种模式既保证了任务的统一协调,又充分发挥了每个 Agent 的专业优势。

设计 Agent 团队

在动手部署之前,我们需要先设计 Agent 团队的结构。一个高效的多 Agent 系统需要明确每个 Agent 的角色定位、能力边界和协作关系。我们即将部署的"内容创作团队"包含以下三个角色:

  • 研究员(Researcher):负责搜集和整理资料,提供事实依据和数据支撑。擅长使用搜索工具和数据库查询工具。
  • 写作者(Writer):负责根据研究员提供的材料撰写文章。擅长文字表达、结构组织和风格把控。
  • 审查员(Reviewer):负责审查文章的质量,包括事实核查、逻辑检查、语法校对和风格统一。有权要求写作者修改。

这三个角色形成了一个完整的内容生产流水线:研究员搜集材料,写作者撰写文章,审查员把关质量。如果审查员发现问题,会将修改意见反馈给写作者,形成一个质量改进循环。

定义各个 Agent

首先,我们来定义团队中的每个 Agent。每个 Agent 都有独立的系统提示词,定义了它的专业角色和行为准则。

# agents/researcher.py
from openclaw import BaseAgent

class ResearcherAgent(BaseAgent):
    """研究员 Agent - 专注于信息搜集和资料整理"""

    name = "研究员"
    description = "负责搜集和整理与指定主题相关的资料、数据和事实"
    model = "gpt-4"

    system_prompt = """
    你是一位专业的研究员。你的职责是:
    1. 根据指定主题进行全面的资料搜集
    2. 从可靠来源获取数据和事实
    3. 整理信息并以结构化的格式呈现
    4. 标注信息的来源和可信度

    工作原则:
    - 优先使用权威来源
    - 区分事实和观点
    - 标注信息的时效性
    - 如果信息不足,明确指出需要补充的方向

    输出格式:
    - 关键发现(3-5条)
    - 详细资料(按主题分类)
    - 数据来源列表
    - 信息缺口(需要进一步研究的方向)
    """

    tools = ["web_search", "query_database"]

    async def on_message(self, message):
        research_result = await self.chat(message.content)
        return {"agent": self.name, "result": research_result}
# agents/writer.py
from openclaw import BaseAgent

class WriterAgent(BaseAgent):
    """写作者 Agent - 专注于内容创作和文章撰写"""

    name = "写作者"
    description = "根据研究资料撰写高质量的文章内容"
    model = "gpt-4"

    system_prompt = """
    你是一位资深的内容创作者。你的职责是:
    1. 根据研究员提供的资料撰写文章
    2. 确保文章结构清晰、逻辑连贯
    3. 使用生动准确的语言表达
    4. 根据审查员的反馈进行修改

    写作原则:
    - 标题吸引人,开头引人入胜
    - 段落之间过渡自然
    - 数据和引用要准确
    - 结论要有见地和深度

    当收到修改意见时:
    - 仔细阅读每条意见
    - 逐条回应并修改
    - 保持文章整体风格一致
    """

    async def on_message(self, message):
        content = await self.chat(message.content)
        return {"agent": self.name, "result": content}
# agents/reviewer.py
from openclaw import BaseAgent

class ReviewerAgent(BaseAgent):
    """审查员 Agent - 专注于内容质量审查"""

    name = "审查员"
    description = "审查文章质量,提供修改建议,确保内容达到发布标准"
    model = "gpt-4"

    system_prompt = """
    你是一位严格的内容审查专家。你的职责是:
    1. 核查文章中的事实和数据是否准确
    2. 检查逻辑是否连贯,论证是否充分
    3. 校对语法、拼写和标点错误
    4. 评估文章的可读性和吸引力

    审查标准:
    - 事实准确性:所有数据和引用必须可验证
    - 逻辑完整性:论点要有充分支撑
    - 语言质量:表达准确、流畅、无错误
    - 结构合理性:段落组织有序,过渡自然

    输出格式:
    - 总体评分(1-10分)
    - 通过/需要修改
    - 具体问题列表(如有)
    - 修改建议
    """

    async def on_message(self, message):
        review = await self.chat(message.content)
        return {"agent": self.name, "result": review}

创建编排器

编排器是多 Agent 协作系统的核心。它负责接收用户请求,将任务分配给合适的 Agent,协调 Agent 之间的通信,并汇总最终结果。

# agents/orchestrator.py
from openclaw import OrchestratorAgent

class ContentTeamOrchestrator(OrchestratorAgent):
    """内容创作团队编排器"""

    name = "内容总监"
    description = "协调研究员、写作者和审查员完成高质量内容创作"

    system_prompt = """
    你是内容创作团队的总监。你需要协调以下团队成员:
    - 研究员:负责资料搜集
    - 写作者:负责文章撰写
    - 审查员:负责质量审查

    工作流程:
    1. 收到创作任务后,先分配给研究员搜集资料
    2. 将研究资料传递给写作者撰写文章
    3. 将文章传递给审查员进行审查
    4. 如果审查不通过,将修改意见反馈给写作者
    5. 修改后再次提交审查(最多3轮)
    6. 审查通过后,输出最终文章
    """

    team = ["研究员", "写作者", "审查员"]
    max_revision_rounds = 3

    async def orchestrate(self, task: str) -> str:
        """执行协作流程"""
        # 第一步:研究员搜集资料
        research_result = await self.delegate(
            "研究员",
            f"请对以下主题进行全面研究:{task}"
        )

        # 第二步:写作者撰写文章
        draft = await self.delegate(
            "写作者",
            f"请根据以下研究资料撰写文章:\n主题:{task}\n"
            f"研究资料:\n{research_result['result']}"
        )

        # 第三步:审查循环
        for round_num in range(1, self.max_revision_rounds + 1):
            review = await self.delegate(
                "审查员",
                f"请审查以下文章:\n主题:{task}\n"
                f"研究资料:{research_result['result']}\n"
                f"文章内容:{draft['result']}"
            )

            if "通过" in review["result"]:
                return draft["result"]

            draft = await self.delegate(
                "写作者",
                f"审查意见:{review['result']}\n"
                f"请根据意见修改文章(第{round_num}轮)"
            )

        return draft["result"]

配置与部署

所有 Agent 定义完成后,需要在配置文件中注册整个团队。OpenClaw 支持在配置文件中定义 Agent 团队及其协作关系。

# config.yaml - 多Agent协作配置
app:
  name: "content-team"
  version: "1.0.0"

team:
  name: "内容创作团队"
  orchestrator:
    name: "内容总监"
    module: "agents.orchestrator"
    class: "ContentTeamOrchestrator"
    settings:
      model: "gpt-4"
      temperature: 0.5
      max_revision_rounds: 3

  workers:
    - name: "研究员"
      module: "agents.researcher"
      class: "ResearcherAgent"
      settings:
        model: "gpt-4"
        temperature: 0.3
      tools:
        - name: "web_search"
          module: "tools.web_search"
        - name: "query_database"
          module: "tools.database_query"

    - name: "写作者"
      module: "agents.writer"
      class: "WriterAgent"
      settings:
        model: "gpt-4"
        temperature: 0.8

    - name: "审查员"
      module: "agents.reviewer"
      class: "ReviewerAgent"
      settings:
        model: "gpt-4"
        temperature: 0.2

collaboration:
  message_format: "structured"
  shared_memory: true
  memory_backend: "redis"
  timeout_per_step: 120

部署这个多 Agent 系统只需要一条命令:

# 启动多Agent协作系统
openclaw team run content-team

# 提交一个创作任务
openclaw team task content-team \
  --input "撰写一篇关于AI Agent技术发展趋势的深度分析文章"

资源管理注意

多 Agent 系统会同时消耗多个 LLM 连接的资源。在生产环境中,请注意以下几点:第一,合理设置每个 Agent 的 temperature 参数——研究员和审查员应该使用较低的值(更严谨),写作者可以使用较高的值(更有创意)。第二,使用 shared_memory 共享上下文,避免重复传递大量文本。第三,设置合理的超时时间,防止某个 Agent 卡住导致整个流程阻塞。

监控与调试

OpenClaw 提供了丰富的监控工具来帮助你观察多 Agent 协作过程。使用 openclaw team monitor 命令可以实时查看每个 Agent 的状态、正在处理的任务和通信消息。这对于调试协作问题和优化 Agent 行为非常有帮助。

在调试模式下,你还可以查看编排器的完整决策日志,包括它为什么选择某个 Agent 执行任务、如何评估审查结果、以及何时决定终止修改循环。这些日志信息是优化多 Agent 系统行为的关键依据。

优化建议

多 Agent 协作系统的性能优化有几个关键方向:首先,为不同角色选择合适的模型——不是所有 Agent 都需要最强大的模型,简单的任务可以用更小更快的模型。其次,利用缓存机制减少重复工作——如果多个任务涉及相同的研究主题,可以复用之前的研究结果。最后,考虑使用流式输出(streaming)来提升用户体验,让用户能够实时看到内容创作的进展。

小结

多 Agent 协作是 OpenClaw 最强大的特性之一。通过编排器 + 工人模式,你可以构建一个由多个专业化 Agent 组成的团队,让它们各司其职、协同工作。本教程中部署的"内容创作团队"只是一个示例,同样的模式可以应用到客服系统、数据分析、代码开发等众多场景。在下一节教程中,我们将深入学习 Prompt 工程,帮助你打造行为更加可靠的 Agent。