← 返回首页ai798LAB Public

openclaw课程-干货合集

05 多Agent配置

2026年4月4日1. 上下文爆炸:产品需求、技术方案、设计风格全塞在一个对话里,早期的重要信息被压缩遗忘

为什么要配置多Agent

单个龙虾的瓶颈

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

多Agent的价值

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

配置流程

Step 1 · 创建新Agent

  1. 每个Agent在Agent名单(agents list)里包含以下信息 | 概览 | 字段解释 | *代表必填 | | | --- | --- | --- | | JSON { "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
  3. 跟它说: 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
  2. 流程见本课程第一章
  3. 把飞书Bot写入OpenClaw的Channel(频道)配置
  4. 字段解释 | 概览 | *字段解释 | 代表必填 | | | --- | --- | --- | | JSON "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 | |
  5. 让主控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关联起来
  2. 字段解释 | 概览 | *字段解释 | 代表必填 | | | --- | --- | --- | | ```JSON "bindings": [ { "agentId": "product-manager", "match": { "channel": "feishu", "accountId": "pm" } }]
| *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 里面的:
      ```JSON
"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)的那条记录里: ```JSON { "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。