这篇文章是让小龙虾自己整理的,有需要的话我感觉应该可以直接投喂。
目录
1. [什么是多Agent系统](#1-什么是多agent系统)
2. [整体架构](#2-整体架构)
3. [飞书机器人创建](#3-飞书机器人创建)
4. [Agent团队配置](#4-agent团队配置)
5. [群聊设置](#5-群聊设置)
6. [子Agent任务分发](#6-子agent任务分发)
7. [记忆体系构建](#7-记忆体系构建)
8. [完整配置示例](#8-完整配置示例)
9. [常见问题](#9-常见问题)
---
## 1. 什么是多Agent系统
OpenClaw 的多Agent系统允许你在**一个网关进程**中运行多个**完全隔离的智能体**,每个Agent都有:
- **独立大脑**(工作区文件:AGENTS.md、SOUL.md、USER.md)
- **独立状态**(认证配置、会话存储)
- **独立人格**(可以设定不同角色和专长)
- **独立权限**(可配置不同的工具访问权限)
```
┌─────────────────────────────────────────────────┐
│ OpenClaw Gateway │
│ │
│ ┌─────────────┐ ┌─────────────┐ ┌───────────┐ │
│ │ xiaolongxia │ │ mr │ │ search │ │
│ │ (主脑) │ │ (文件整理) │ │ (搜索) │ │
│ │ 飞书通道 │ │ 子Agent │ │ 子Agent │ │
│ └─────────────┘ └─────────────┘ └───────────┘ │
│ │
└─────────────────────────────────────────────────┘
```
---
## 2. 整体架构
### 2.1 路径映射
| 组件 | 路径 |
|:---|:---|
| 主配置文件 | `~/.openclaw/openclaw.json` |
| 状态目录 | `~/.openclaw` |
| 默认工作区 | `~/.openclaw/workspace` |
| Agent目录 | `~/.openclaw/agents/<agentId>/agent` |
| 会话存储 | `~/.openclaw/agents/<agentId>/sessions` |
### 2.2 核心概念
- **agentId**:一个"大脑"的唯一标识
- **accountId**:渠道账户实例(如飞书机器人账号)
- **binding**:将入站消息路由到对应Agent的规则
---
## 3. 飞书机器人创建
### 3.1 创建飞书应用
2. 点击 **创建企业自建应用**
3. 填写应用名称和描述,选择图标
4. 在 **凭证与基础信息** 页面复制:
- **App ID**(格式:`cli_xxx`)
- **App Secret**
### 3.2 配置应用权限
在 **权限管理** 页面,点击 **批量导入**,粘贴以下JSON:
```json
{
"scopes": {
"tenant": [
"im:chat",
"im:message",
"im:message:send_as_bot",
"im:message.group_at_msg:readonly",
"im:message.group_msg",
"im:message.p2p_msg:readonly",
"im:message:readonly",
"im:resource",
"im:chat.members:bot_access",
"contact:user.employee_id:readonly"
],
"user": ["im:chat.access_event.bot_p2p_chat:read"]
}
}
```
### 3.3 启用机器人能力
在 **应用能力** > **机器人** 页面开启机器人能力。
### 3.4 配置事件订阅
在 **事件订阅** 页面:
1. 选择 **使用长连接接收事件**(WebSocket模式)
2. 添加事件:`im.message.receive_v1`
### 3.5 发布应用
在 **版本管理与发布** 页面提交审核并发布。
---
## 4. Agent团队配置
### 4.1 添加新Agent
使用向导添加隔离的Agent:
```bash
openclaw agents add <agent-id>
```
例如添加文件整理员:
```bash
openclaw agents add mr
```
### 4.2 Agent工作区结构
每个Agent需要有独立的工作区目录:
```
~/.openclaw/
├── agents/
│ ├── main/agent/ # 主Agent认证
│ │ └── auth-profiles.json
│ ├── mr/agent/ # 文件整理员
│ │ └── auth-profiles.json
│ ├── search/agent/ # 搜索专员
│ ├── thinking/agent/ # 思考员
│ └── security/agent/ # 安全员
└── workspace/ # 主工作区
├── workspace-mr/ # mr工作区
├── workspace-search/ # search工作区
└── ...
```
### 4.3 分层记忆体系
每个Agent推荐使用分层记忆体系:
```
workspace/
├── MEMORY.md # 索引入口(<40行)
└── memory/
├── projects.md # 项目状态
├── lessons.md # 踩坑记录
├── infra.md # 基础设施配置
└── YYYY-MM-DD.md # 日志详情
```
**MEMORY.md 模板**:
```markdown
# MEMORY.md - 记忆索引
## 活跃项目
- [项目名称](memory/projects.md#项目名称)
## 基础设施
- VPS: xxx | VNC:xxxx | CDP:xxxxx
## 重要教训
- 教训1 ([详情](memory/lessons.md#教训1))
## 近期日志
- [2026-03-23](memory/2026-03-23.md)
- [2026-03-22](memory/2026-03-22.md)
## Agent团队
- xiaolongxia - 主Agent
- mr - 文件整理
- search - 网络搜索
```
---
## 5. 群聊设置
### 5.1 基础群聊配置
编辑 `~/.openclaw/openclaw.json`:
```json5
{
channels: {
feishu: {
enabled: true,
dmPolicy: "pairing", // 私聊策略:需要配对
groupPolicy: "open", // 群组策略:开放
accounts: {
main: {
appId: "cli_xxx",
appSecret: "xxx",
botName: "小龙虾",
},
},
},
},
}
```
### 5.2 群组访问控制
**策略选项**:
| 策略 | 说明 |
|:---|:---|
| `"open"` | 允许所有群组,需要@提及 |
| `"allowlist"` | 仅允许白名单群组 |
| `"disabled"` | 禁用所有群组 |
**配置示例**:
```json5
{
channels: {
feishu: {
groupPolicy: "allowlist",
groupAllowFrom: ["oc_xxx", "oc_yyy"], // 群组ID列表
groups: {
"oc_xxx": {
requireMention: true, // 需要@才响应
allowFrom: ["ou_user1", "ou_user2"], // 发送者白名单
},
"oc_yyy": {
requireMention: false, // 无需@也响应
},
},
},
},
}
```
### 5.3 获取群组ID
1. 在群组中 @机器人发送消息
2. 运行命令查看日志:
```bash
openclaw logs --follow
```
3. 日志中会显示 `chat_id`(格式:`oc_xxx`)
### 5.4 多Agent群聊路由
将不同群组路由到不同Agent:
```json5
{
agents: {
list: [
{ id: "main" },
{ id: "mr", workspace: "~/.openclaw/workspace-mr" },
{ id: "search", workspace: "~/.openclaw/workspace-search" },
],
},
bindings: [
{
agentId: "main",
match: {
channel: "feishu",
peer: { kind: "group", id: "oc_main_group" },
},
},
{
agentId: "mr",
match: {
channel: "feishu",
peer: { kind: "group", id: "oc_mr_group" },
},
},
],
}
```
---
## 6. 子Agent任务分发
### 6.1 什么是子Agent
子Agent是从主Agent派生的后台任务,用于:
- 并行处理耗时任务
- 专业化分工
- 避免阻塞主对话
### 6.2 启动子Agent
**方式一:使用斜杠命令**
```
/subagents spawn <agent-id> <task description>
```
**方式二:使用工具**
```javascript
sessions_spawn({
task: "搜索关于XXX的信息",
label: "search-task-1",
agentId: "search",
model: "sonnet",
runTimeoutSeconds: 300
})
```
### 6.3 子Agent配置
在 `openclaw.json` 中配置子Agent默认行为:
```json5
{
agents: {
defaults: {
subagents: {
model: "haiku", // 默认使用便宜模型
maxConcurrent: 4, // 最大并发数
archiveAfterMinutes: 60, // 归档时间
},
},
},
}
```
### 6.4 模型选择策略
| 等级 | 模型 | 适用场景 |
|:---:|:---|:---|
| 高 | opus | 复杂架构设计、深度推理 |
| 中 | sonnet | 写代码、写脚本、信息整理 |
| 低 | haiku | 简单文件操作、格式转换 |
---
## 7. 记忆体系构建
### 7.1 主Agent记忆索引
```markdown
# MEMORY.md - 记忆索引
## 活跃项目
## ️ 基础设施
- VPS: xxxxx | VNC:xxxx | CDP:xxxxx
- 绿联NAS: /volume1/@appstore/com.ugreen.docker.openclaw/config(具体看自己的绿联nas安装目录)
## 重要教训
## 近期日志
- [2026-03-23](memory/2026-03-23.md)
- [2026-03-22](memory/2026-03-22.md)
## Agent团队
- xiaolongxia - 主Agent,飞书通道
- mr - 文件整理员
- search - 网络搜索专员
- thinking - 逻辑思考员
- security - 安全员
```
### 7.2 项目状态模板
```markdown
# 项目状态
## 项目名称
- 状态:进行中/已完成/暂停
- 说明:简要描述
- 待办:下一步行动
```
### 7.3 教训记录模板
```markdown
# 踩坑记录
## 等级说明
- 高重要性:致命问题,必须避免
- 中重要性:重要教训,值得注意
- 低重要性:建议做法
## 问题列表
```
### 7.4 日志格式
```markdown
# YYYY-MM-DD 工作日志
## 完成事项
1. 任务1
2. 任务2
## 待处理
- 任务A
## 新增
- 新工具/新发现
```
---
## 8. 完整配置示例
### 8.1 完整openclaw.json
```json5
{
// 模型配置
models: {
"minimax/MiniMax-M2.7": { alias: "default" },
"minimax/MiniMax-M2.7": { alias: "opus" },
},
// Agent列表
agents: {
list: [
{
id: "main",
name: "绿联小龙虾",
workspace: "~/.openclaw/workspace",
},
{
id: "mr",
name: "文件整理员",
workspace: "~/.openclaw/workspace-mr",
},
{
id: "search",
name: "网络搜索专员",
workspace: "~/.openclaw/workspace-search",
},
{
id: "thinking",
name: "逻辑思考员",
workspace: "~/.openclaw/workspace-thinking",
},
{
id: "security",
name: "安全员",
workspace: "~/.openclaw/workspace-security",
},
],
defaults: {
subagents: {
model: "haiku",
maxConcurrent: 4,
},
},
},
// 消息路由
bindings: [
{
agentId: "main",
match: { channel: "feishu", peer: { kind: "dm" } },
},
],
// 飞书渠道配置
channels: {
feishu: {
enabled: true,
dmPolicy: "pairing",
groupPolicy: "open",
accounts: {
main: {
appId: "cli_xxx",
appSecret: "xxx",
botName: "小龙虾",
},
},
groups: {
"*": { requireMention: true },
},
},
},
}
```
### 8.2 子Agent工作区初始化
每个子Agent首次启动时需要初始化记忆体系:
```bash
# 创建工作区目录
mkdir -p ~/.openclaw/workspace-<agent-id>/memory
# 创建基础文件
touch ~/.openclaw/workspace-<agent-id>/memory/YYYY-MM-DD.md
```
---
## 9. 常见问题
### Q1: Agent之间如何通信?
通过 `sessions_send` 工具进行Agent间消息传递:
```javascript
sessions_send({
sessionKey: "agent:mr:subagent:xxx",
message: "任务完成,结果如下..."
})
```
### Q2: 子Agent结果如何回传?
子Agent完成后会自动通过 **通告机制** 回传结果到主对话。
### Q3: 如何控制子Agent并发?
通过 `agents.defaults.subagents.maxConcurrent` 配置,默认8个。
### Q4: 群组中多个Agent如何避免混乱?
使用 `mentionPatterns` 为每个Agent设置独特的@前缀:
```json5
{
agents: {
list: [
{
id: "mr",
groupChat: {
mentionPatterns: ["@mr", "@文件整理"],
},
},
],
},
}
```
### Q5: 如何备份Agent记忆?
```bash
# 备份整个工作区
cp -r ~/.openclaw/workspace ~/.openclaw/workspace-backup
# 备份Agent配置
cp -r ~/.openclaw/agents ~/.openclaw/agents-backup
```