openclaw课程-干货合集
05 多Agent配置

为什么要配置多Agent
单个龙虾的瓶颈
- 上下文爆炸:产品需求、技术方案、设计风格全塞在一个对话里,早期的重要信息被压缩遗忘
- 人格漂移:AGENTS.md会越来越长。你让它一会儿当产品经理一会儿当程序员,它容易行为紊乱
多Agent的价值
- 每个Agent一套独立的SOUL、AGENTS.md、Skills、记忆。它执行需求更精准
- 每个Agent一个独立的上下文窗口,上下文更干净,也不会容易爆
- 每个Agent执行独立的定时任务,查收体验更好
配置流程
Step 1 · 创建新Agent
- 每个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。 | | - 让主控Agent帮你创建新Agent
- 跟它说: 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
- 新建飞书Bot
- 流程见本课程第一章
- 把飞书Bot写入OpenClaw的Channel(频道)配置
- 字段解释
| 概览 | *字段解释 | 代表必填 | |
| --- | --- | --- |
|
JSON "channels": { "feishu": { "enabled": true, "defaultAccount": "ceo", "accounts": { "pm": { "appId": "xx", "appSecret": "xx", "botName": "Steve", "dmPolicy": "open", "allowFrom": ["*"], "enabled": true } } }}| *键名 | 这个飞书 Bot 的账号 ID,在 OpenClaw 内部用来标识。自己起,英文简写即可,比如pm、steve都行 > ⚠️后面 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 | | - 让主控Agent帮你完成
1. 跟它说
- 在 openclaw.json 的 channels.feishu.accounts 里添加一个新账号:键名是xx,appId 是 xx,appSecret是xx,botName 是xx,allowFrom 设 ["*"],enabled 设 true。不要动其他账号的配置。
Step 3 · 关联飞书Bot 和 Agent
- 把飞书Bot和Agent关联起来
- 字段解释 | 概览 | *字段解释 | 代表必填 | | | --- | --- | --- | | ```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。