← 返回首页ai798Lab 公开知识库

OpenClaw课程-干货合集

05 多Agent配置

2026年4月4日

为什么要配置多Agent

单个龙虾的瓶颈

  1. 上下文爆炸:产品需求、技术方案、设计风格全塞在一个对话里,早期的重要信息被压缩遗忘
  2. 人格漂移:AGENTS.md会越来越长。你让它一会儿当产品经理一会儿当程序员,它容易行为紊乱

多Agent的价值

  1. 每个Agent一套独立的SOUL、AGENTS.md、Skills、记忆。它执行需求更精准
  2. 每个Agent一个独立的上下文窗口,上下文更干净,也不会容易爆
  3. 每个Agent执行独立的定时任务,查收体验更好

配置流程

Step 1 · 创建新Agent

  1. 每个Agent在Agent名单(agents list)里包含以下信息

    概览

    字段解释 | *代表必填

    {
      "id": "product-manager",
      "name": "Steve",
      "workspace": "~/.openclaw/workspace-pm",
      "model": "moonshot/kimi-k2.5",
      "tools": {
        "deny": ["sessions_send", "gateway"],
        "allow": ["feishu_doc", "feishu_drive"]
      },
      "subagents": {
        "allowAgents": ["engineering-lead"]
      }
    }

    *id

    Agent 在OpenClaw系统里的唯一标识,一般用职能命名。英文小写 + 横线,比如 product-manager

    name

    给别人看的显示名,随便起一个,最好和飞书Bot的应用名称一致

    *workspace

    Agent的专属文件夹路径。SOUL.md、USER.md、AGENTS.md、MEMORY.md 都放在这里。用workspace-xx命名

    ⚠️ 其实不是必填的,但还是建议每个Agent单独一个workspace,方便管理

    model

    Agent使用的模型。不填的话会使用(和主Agent一样的)默认模型

    tools·deny

    禁止这个 Agent 使用的工具列表,比如 ["sessions_send", "gateway"]

    💡 推荐配置:专业角色只禁 sessions_send(防止跨 agent 主动通信)和 gateway(防止修改系统配置)

    tools·allow

    额外允许这个 Agent 使用的工具列表。配合 tools.profile 使用。profile 决定基础工具集,allow 在此基础上额外添加

    subagents·allowAgents

    这个Agent指派subagent完成任务时,可以把任务指派给哪些其他的Agent。不填会默认只能spawn(指派给)自己创建的临时subagent。

  2. 让主控Agent帮你创建新Agent
    1. 跟它说:
      1. 在 openclaw.json 的 agents.list 里添加一个新 agent:id 是xx,name 是 xx。workspace 是 ~/.openclaw/workspace-xx,model 用xx,tools.deny 设 ["sessions_send", "gateway"]。不要动其他 agent 的配置。

Step 2 · 新建飞书bot

  1. 新建飞书Bot
    1. 流程见本课程第一章
  2. 把飞书Bot写入OpenClaw的Channel(频道)配置
    1. 字段解释

      概览

      字段解释 | *代表必填

      "channels": {
        "feishu": {
          "enabled": true,
          "defaultAccount": "ceo",
          "accounts": {
            "pm": {
              "appId": "xx",
              "appSecret": "xx",
              "botName": "Steve",
              "dmPolicy": "open",
              "allowFrom": ["*"],
              "enabled": true
            }
          }
        }
      }

      *键名

      这个飞书 Bot 的账号 ID,在 OpenClaw 内部用来标识。自己起,英文简写即可,比如 pmsteve都行

      ⚠️后面 bindings 的 match.accountId 要跟这里一致。你这里叫 pm,bindings 里就写 pm

      *appId

      飞书应用的唯一标识,从飞书开放平台创建应用后复制过来

      *appSecret

      飞书应用的密钥,跟 appId 配对使用,从飞书开放平台复制过来

      botName

      机器人在飞书上显示的名字。跟 agent 的 name 保持一致比较好。不填会取飞书应用本身的名字

      dmPolicy

      谁能跟这个 bot 私聊。可选值:"open"(所有人)、"pairing"(需要配对码)

      默认值:"pairing"

      allowFrom

      允许哪些用户发消息。["*"] 表示不限制,也可以填具体用户 ID 列表

      enabled

      是否启用这个账号。默认值:true

      用途:临时停用某个 agent 的飞书通道,不用删配置

      defaultAccount

      channels.feishu 的兜底配置,指定默认使用哪个账号。未被 bindings 明确路由的消息会走这个账号对应的Agent

    2. 让主控Agent帮你完成
      1. 跟它说
        1. 在 openclaw.json 的 channels.feishu.accounts 里添加一个新账号:键名是xx,appId 是 xx,appSecret是xx,botName 是xx,allowFrom 设 ["*"],enabled 设 true。不要动其他账号的配置。

Step 3 · 关联飞书Bot 和 Agent

  1. 把飞书Bot和Agent关联起来
    1. 字段解释

      概览

      字段解释 | *代表必填

      "bindings": [
        {
          "agentId": "product-manager",
          "match": {
            "channel": "feishu",
            "accountId": "pm"
          }
        }
      ]

      *agentId

      消息交给哪个 agent 处理,填入对应 agents.list 里的 id

      *match.channel

      匹配哪个渠道来的消息,填入"feishu""discord""telegram""whatsapp"

      match.accountId

      匹配哪个渠道账号来的消息,填入对应 channels.feishu.accounts 里的键名

      ⚠️ 不填会默认匹配该 channel 下所有账号的消息

    2. 让主控Agent帮你完成
      1. 跟它说
        1. 在 openclaw.json 的 bindings 里添加一条路由规则:agentId是xx,match.channel是xx,match.accountId是xx。不要动其他路由规则。

Step 4 · 通信配置

  1. 目标
    1. 让主控可以指挥其他Agent,其他Agent之间不能互相指挥
  2. 具体配置
    1. 全局设置
      1. 默认情况下,agent 之间的通信是关闭的,谁也联系不了谁。你得先打开。这是 openclaw.json 顶层 tools 里的全局配置,不是写在某个 agent 里面的:
        "tools": {
          "agentToAgent": {
            "enabled": true,
            "allow": ["main", "engineering-lead", "product-manager", "design-director", "seo-specialist", "writer"]
          }
        }
      2. 让主控Agent帮你做
        1. 跟它说
          1. 在 openclaw.json 里把 tools.agentToAgent.enabled 设为 true,allow 列表设为 ["main", "engineering-lead", "product-manager", "..."]。改完后让我重启 gateway。
    2. 允许主控Agent可以指挥其他Agent
      1. 主控需要用 sessions_spawn 给团队成员派任务。默认设置只能 spawn 自己,你得告诉它"你可以给这些人派活"。这个配在 agents.list 里 主控Agent(main)的那条记录里:
        { "id": "main", "subagents": { "allowAgents": ["engineering-lead", "product-manager", "design-director", "seo-specialist", "writer"] } }
      2. 让主控Agent帮你设置
        1. 在 openclaw.json 里给 main agent 加上 subagents.allowAgents,列表设为 ["engineering-lead", "product-manager","..."]。改完后让我重启 gateway。