openclaw多agent协调配置(ai生成,待验证)

实现多个 Agent 之间的协同工作。我们将以“研发 Agent 请求运维 Agent 提供 Hive 机器信息”的典型场景为例,逐步说明配置方法和操作流程。

1. 前置条件

已安装并运行 OpenClaw 核心服务(版本 ≥ 2026.03)。
具备基本配置文件(openclaw.json)的编辑权限。
了解 Agent、技能(Skill)、绑定(Binding)和钩子(Hook)的基本概念。
已接入至少一个消息渠道(如 WhatsApp、飞书、Slack),用于测试。

2. 整体架构

[用户消息] → Gateway (路由表) → 研发 Agent
                                     │
                                     │ (通过 assign_task 技能)
                                     ▼
                              Gateway (Hook 调度)
                                     │
                                     │ (启动运维 Agent)
                                     ▼
                              运维 Agent → 执行技能 (查架构/机器信息)
                                     │
                                     │ (结果存入共享记忆 或 通过 Hook 回调)
                                     ▼
                              研发 Agent → 整合结果 → 回复用户

协作方式采用 Agent Teams(显式编排):研发 Agent 作为协调者,通过任务分配触发运维 Agent 工作。

3. 配置步骤

3.1 定义 Agent

在 openclaw.json 的 agents.list 中分别定义研发 Agent 和运维 Agent。

{
  "agents": {
    "list": [
      {
        "id": "研发-协调者",
        "name": "研发负责人",
        "model": {
          "provider": "openai",
          "name": "gpt-4-turbo"
        },
        "tools": {
          "allow": ["assign_task"]   // 允许使用任务分配技能
        },
        "workspace": "./workspaces/dev"  // 独立工作区(可选)
      },
      {
        "id": "运维-执行者",
        "name": "运维专家",
        "model": {
          "provider": "anthropic",
          "name": "claude-3-haiku"
        },
        "tools": {
          "allow": [
            "query_hive_architecture",
            "get_machine_info"
          ]
        },
        "workspace": "./workspaces/ops"
      }
    ]
  }
}
3.2 配置消息路由(Bindings)

将外部消息(如来自飞书的特定群组)路由给研发 Agent。

{
  "bindings": [
    {
      "agentId": "研发-协调者",
      "match": {
        "channel": "feishu",
        "peer": {
          "kind": "group",
          "id": "oc_xxxxx"   // 实际群 ID
        }
      }
    }
  ]
}
3.3 创建 Agent 技能(Skills)

每个技能对应一个 Markdown 文件,放在 ~/.openclaw/skills/ 目录下。

assign_task 技能(研发 Agent 使用)
文件:~/.openclaw/skills/assign_task/SKILL.md

# assign_task

## 描述
当你需要其他专家 Agent(如运维)协助时,使用此技能分配任务。

## 参数
- `target_agent_id`: 目标 Agent 的 ID(字符串)
- `task_description`: 清晰的任务描述(字符串)

## 工作流程
1. 明确需要哪个 Agent 做什么事。
2. 调用底层工具 `sessions_send`,将任务信息发送到内部总线。
   - 消息格式:`{ "type": "task_assignment", "targetAgentId": "...", "taskDescription": "..." }`
3. 告知用户任务已分配,请稍候。

## 示例
用户要求获取 Hive 架构图时,应设置:
- `target_agent_id`: "运维-执行者"
- `task_description`: "请提供生产环境 Hive 机器的架构图和以下 IP 的详细信息:10.0.1.10, 10.0.1.11"
实际调用 sessions_send 的细节由 OpenClaw 运行时自动处理,技能作者只需描述参数和意图。

运维 Agent 技能
文件:~/.openclaw/skills/query_hive_architecture/SKILL.md
# query_hive_architecture

## 描述
获取 Hive 集群的架构图和相关机器信息。

## 工作流程
1. 调用内部 CMDB API 获取最新架构图。
2. 解析返回的 JSON 数据,生成 Markdown 格式的报告。
3. 将结果写入共享记忆,键名为 `hive_architecture_<会话ID>`。
文件:~/.openclaw/skills/get_machine_info/SKILL.md
# get_machine_info

## 参数
- `ip_list`: 以逗号分隔的 IP 地址列表

## 描述
查询指定机器的 CPU、内存、磁盘等详细信息。

## 工作流程
1. 调用内部监控 API 获取实时指标。
2. 整理成表格返回。
3.4 配置任务分发 Hook
在 openclaw.json 的 hooks 数组中添加规则,使 Gateway 能够监听 sessions_send 发出的任务分配事件,并启动对应的 Agent。
{
  "hooks": [
    {
      "event": "internal:message",          // 内部消息事件
      "condition": {
        "field": "payload.type",
        "operator": "eq",
        "value": "task_assignment"           // 仅处理类型为 task_assignment 的消息
      },
      "action": {
        "type": "start_agent",
        "agentId": "{{payload.targetAgentId}}",   // 从事件中动态获取目标 Agent ID
        "payload": {
          "kind": "agentTurn",
          "message": "{{payload.taskDescription}}",
          "sessionTarget": "isolated"            // 隔离会话,避免污染原对话
        }
      }
    }
  ]
}
3.5 (可选)配置共享记忆

如果希望运维 Agent 的结果能被研发 Agent 自动感知,可以启用共享记忆插件(如 @openclaw/memory-plugin)。

在 Agent 配置中添加记忆相关设置:

{
  "agents": {
    "list": [
      {
        "id": "研发-协调者",
        "memory": {
          "provider": "sqlite",
          "autoRecall": true,      // 自动召回相关记忆
          "namespace": "shared"     // 与其他 Agent 共享的命名空间
        }
      },
      {
        "id": "运维-执行者",
        "memory": {
          "provider": "sqlite",
          "autoStore": true,        // 自动存储结果
          "namespace": "shared"
        }
      }
    ]
  }
}

此时运维 Agent 的执行结果会自动存入共享记忆,研发 Agent 在后续回复时会自动召回这些信息。

4. 操作流程(用户视角)

用户提出问题:在已绑定的飞书群中发送:“生产环境 Hive 查询变慢,研发帮忙看看?”

研发 Agent 接收:Gateway 根据 Binding 将消息发给研发 Agent。

研发 Agent 分析:

识别到需要 Hive 架构图和机器信息。

调用 assign_task 技能,参数为:

target_agent_id: 运维-执行者

task_description: “请提供生产环境 Hive 机器的架构图和以下 IP 的详细信息:10.0.1.10, 10.0.1.11”

技能内部通过 sessions_send 发送内部消息。

研发 Agent 回复用户:“正在调取运维数据,请稍候...”

Gateway 调度:Hook 监听到内部消息,根据 targetAgentId 启动运维 Agent,并将任务描述作为输入。

运维 Agent 执行:

调用 query_hive_architecture 技能获取架构图。

调用 get_machine_info 技能获取指定 IP 的机器信息。

将结果(Markdown 格式)通过 sessions_send 发送回 Gateway(或存入共享记忆)。

结果返回:

如果配置了共享记忆,研发 Agent 在下一轮回复时会自动召回数据,直接生成最终答案。

或者 Gateway 可以通过另一个 Hook 将结果转发给研发 Agent(需要额外配置)。

研发 Agent 整合并回复:生成包含架构图和机器信息的完整分析报告,回复给用户。

5. 验证与调试

检查 Agent 日志:每个 Agent 的运行日志默认在 ~/.openclaw/logs/ 下,可查看调用过程。

测试技能:可以在 Agent 工作区中手动执行技能,确保技能本身能正常工作。

模拟内部消息:使用 openclaw-cli 工具发送测试内部消息,验证 Hook 是否触发。

查看共享记忆:如果使用了记忆插件,可查询数据库确认数据是否成功存储。

6. 注意事项

任务分配不要循环:确保 Hook 配置不会导致 Agent 互相无限触发(例如研发 Agent 分配任务给运维,运维完成后又分配任务给研发)。可在任务负载中加入唯一 ID 或会话标记,避免重复处理。

隔离会话:使用 sessionTarget: "isolated" 确保运维 Agent 的执行环境与用户对话隔离,防止混淆。

技能参数格式:确保技能定义的参数格式与 Agent 实际调用时一致。建议使用 JSON 或明确的分隔符。

权限控制:不同 Agent 可使用不同的 API 密钥,避免跨 Agent 权限滥用。

监控与告警:对关键 Agent 的任务执行时间、失败率设置监控,及时发现异常。

7. 扩展:其他协作模式

事件驱动 + 共享记忆:如果不需要显式任务分配,可以让 Agent 将结果存入共享记忆,其他 Agent 通过自动召回获取信息。此模式耦合度更低,适合信息查询类场景。

多 Agent 轮询:通过 Hook 链式触发多个 Agent,实现流水线处理(如数据采集 → 分析 → 报告生成)。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容