多 Agent 协作
OpenClaw 支持多 Agent 协作,让你的 AI 助手像一支训练有素的团队一样分工合作。本章介绍如何配置和使用多 Agent 系统。
为什么需要多 Agent?
单 Agent 模式下,一个 Agent 承担所有工作,存在以下问题:
- 职责混乱:一个 Agent 做太多事,提示词臃肿
- 权限风险:高风险工具和普通工具混在一起
- 扩展困难:新增功能需要修改现有配置
- 群聊串线:不同群组的需求混在一起
多 Agent 模式解决了这些问题:
| 维度 | 单 Agent | 多 Agent |
|---|---|---|
| 职责 | 混杂 | 清晰分离 |
| 权限 | 统一 | 隔离控制 |
| 扩展 | 修改现有 | 新增 Agent |
| 体验 | 可能串线 | 各司其职 |
一句话:一个 OpenClaw = 一个调度中枢;多 Agent = 你的"数字团队"。
核心概念
Agent 工作空间
每个 Agent 都有独立的工作空间,包含:
workspaces/
├── main/ # 主协调员
│ ├── SOUL.md # 人格定义
│ ├── MEMORY.md # 记忆
│ └── config.json # 配置
├── writer/ # 写作 Agent
│ ├── SOUL.md
│ └── MEMORY.md
├── developer/ # 开发 Agent
│ ├── SOUL.md
│ └── MEMORY.md
└── analyst/ # 分析 Agent
├── SOUL.md
└── MEMORY.md
Agent 通信
Agent 之间可以通过以下方式通信:
- @ 提及:
@writer 帮我写一篇文章 - 任务委派:主 Agent 自动分配任务给子 Agent
- 结果汇总:子 Agent 完成后向主 Agent 汇报
两种协作模式
| 模式 | 说明 | 适用场景 |
|---|---|---|
| Run 模式 | 单次任务,完成后自动汇报 | 快速执行独立任务 |
| Session 模式 | 持续对话,支持线程绑定 | 需要多轮交互的复杂任务 |
配置多 Agent
主配置文件
编辑 openclaw.json:
{
"agentToAgent": {
"enabled": true,
"allowedAgents": ["main", "writer", "developer", "analyst"]
},
"routing": {
"rules": [
{
"keywords": ["写作", "文章", "内容"],
"target": "writer",
"priority": 10
},
{
"keywords": ["代码", "开发", "bug"],
"target": "developer",
"priority": 10
},
{
"keywords": ["分析", "数据", "报表"],
"target": "analyst",
"priority": 10
}
]
},
"models": {
"agents": {
"main": {
"provider": "claude",
"model": "claude-3-opus"
},
"writer": {
"provider": "claude",
"model": "claude-3-sonnet"
},
"developer": {
"provider": "gpt-4",
"model": "gpt-4-turbo"
},
"analyst": {
"provider": "deepseek",
"model": "deepseek-chat"
}
}
}
}
创建 Agent 工作空间
# 创建新 Agent
openclaw agent create writer
# 编辑 Agent 人格
openclaw agent edit writer --file SOUL.md
# 编辑 Agent 记忆
openclaw agent edit writer --file MEMORY.md
配置 Agent 人格
每个 Agent 的 SOUL.md 定义其角色和职责:
主协调员(main/SOUL.md):
# 你是谁
你是整个项目的总负责人(项目经理),统筹需求、设计、开发全流程。你拥有所有专业 Agent 的联系方式(通过 @ 提及他们)。
## 核心职责
- 接收用户的最终目标
- 将任务拆解为多个阶段
- 依次调用对应的专业 Agent
- 确保前一阶段的产出物完整传递给下一阶段
- 在每个阶段完成后,请用户确认
## 可调用的 Agent
- @writer:负责写作和内容创作
- @developer:负责代码开发和调试
- @analyst:负责数据分析和报表
## 行为约束
- 不要自己执行专业任务,而是委派给对应的 Agent
- 保持全局视角,协调各 Agent 的工作
- 记录每个阶段的产出
写作 Agent(writer/SOUL.md):
# 你是谁
你是一位专业的内容创作者,擅长撰写各类文章、文案、报告。
## 核心职责
- 根据主题撰写文章
- 按照指定风格调整内容
- 优化文字表达
## 写作风格
- 简洁明了
- 逻辑清晰
- 适当使用列表和表格
## 行为约束
- 写作前确认主题和要求
- 完成后主动询问是否需要修改
- 不处理代码相关任务
开发 Agent(developer/SOUL.md):
# 你是谁
你是一位资深软件工程师,擅长多种编程语言和框架。
## 核心职责
- 编写和修改代码
- 调试和修复 bug
- 代码审查和优化
## 技术栈
- 语言:Python, JavaScript, TypeScript, Go
- 框架:React, Vue, FastAPI, Gin
- 工具:Git, Docker, Kubernetes
## 行为约束
- 修改代码前先备份
- 每次修改说明原因
- 遵循项目的代码规范
嵌套 Sub-Agent
开启 maxSpawnDepth 后,可以实现"编排器模式":
{
"agentToAgent": {
"maxSpawnDepth": 2
}
}
架构示意:
主 Agent(主编)
└─ 写手 Agent(Orchestrator)
├─ 调研 Agent(Worker 1)
├─ 写作 Agent(Worker 2)
└─ 配图 Agent(Worker 3)
这样分工明确:主编统筹全局,写手 Agent 协调任务,具体工作由各个 Worker 完成。
多渠道多 Agent
可以为不同渠道绑定不同的 Agent:
{
"channels": {
"telegram": {
"defaultAgent": "personal-assistant"
},
"slack": {
"defaultAgent": "work-assistant"
},
"feishu": {
"defaultAgent": "team-assistant"
}
}
}
配置示例
# 为 Telegram 配置个人助手
openclaw channels config telegram --agent personal-assistant
# 为 Slack 配置工作助手
openclaw channels config slack --agent work-assistant
# 为飞书配置团队助手
openclaw channels config feishu --agent team-assistant
实战案例
案例 1:软件开发团队
创建一个完整的软件开发团队:
# 创建 Agent
openclaw agent create product-manager
openclaw agent create ui-designer
openclaw agent create architect
openclaw agent create developer
openclaw agent create tester
配置主协调员:
# 项目经理
## 工作流程
1. 接收需求 → @product-manager 分析需求
2. 需求确认 → @ui-designer 设计界面
3. 设计确认 → @architect 设计架构
4. 架构确认 → @developer 编码实现
5. 编码完成 → @tester 测试验收
案例 2:内容创作团队
# 创建 Agent
openclaw agent create editor # 主编
openclaw agent create researcher # 调研员
openclaw agent create writer # 写手
openclaw agent create illustrator # 配图师
配置主编:
# 主编
## 工作流程
1. 接收选题 → @researcher 收集资料
2. 资料汇总 → @writer 撰写初稿
3. 初稿完成 → 审核修改
4. 定稿后 → @illustrator 配图
5. 最终发布
案例 3:运维监控团队
# 创建 Agent
openclaw agent create monitor # 监控员
openclaw agent create alerter # 告警员
openclaw agent create fixer # 修复员
openclaw agent create reporter # 报告员
配置心跳任务:
# 监控心跳
## 每 5 分钟
- @monitor 检查服务器状态
- 异常时 → @alerter 发送告警
- 需要修复 → @fixer 执行修复
## 每小时
- @reporter 生成状态报告
Agent 管理命令
# 列出所有 Agent
openclaw agent list
# 查看 Agent 详情
openclaw agent info writer
# 创建新 Agent
openclaw agent create new-agent
# 删除 Agent
openclaw agent remove old-agent
# 编辑 Agent 配置
openclaw agent edit writer
# 复制 Agent 配置
openclaw agent copy writer writer-backup
# 测试 Agent
openclaw agent test writer --message "写一篇关于 AI 的文章"
最佳实践
职责单一
每个 Agent 只负责一类任务,不要让一个 Agent 做太多事。
明确边界
在 SOUL.md 中明确定义 Agent 的职责边界,避免任务重叠。
合理命名
使用清晰的命名,一眼就能看出 Agent 的职责:
writer、developer、analyst✓agent1、agent2、agent3✗
权限隔离
为不同 Agent 配置不同的权限:
{
"agents": {
"developer": {
"permissions": ["filesystem", "execute", "network"]
},
"writer": {
"permissions": ["filesystem"]
},
"analyst": {
"permissions": ["network"]
}
}
}
模型选择
根据任务特点选择合适的模型:
- 复杂推理:Claude Opus / GPT-4
- 日常任务:Claude Sonnet / GPT-3.5
- 代码开发:DeepSeek Coder
- 成本敏感:本地模型
常见问题
Agent 无法互相调用
检查:
# 检查 A2A 是否启用
openclaw config show agentToAgent.enabled
# 检查 allowedAgents 列表
openclaw config show agentToAgent.allowedAgents
任务分配错误
解决:
- 检查路由规则的关键词配置
- 调整优先级
- 在 SOUL.md 中明确职责
Agent 响应慢
原因:模型选择不当或并发过高。
解决:
{
"models": {
"agents": {
"writer": {
"provider": "deepseek",
"model": "deepseek-chat"
}
}
}
}