乐于分享
好东西不私藏

从0到1:本地OpenClaw搭建多智能体团队协作系统

从0到1:本地OpenClaw搭建多智能体团队协作系统

从0到1:搭建多智能体团队协作系统

前言

最近在做一个有趣的实验:如何让多个 AI Agent 协同工作,完成公众号文章的写作任务。前几天那篇主要是用飞书妙搭的OpenClaw,然后用的他自动配置的智能体。飞书妙搭可能4月30日以后就要收费了,因此今天我就从头用本地OpenClaw配置,只用飞书的机器人来接入消息。现在把整个过程记录下来,供大家参考。

一、背景:为什么要做多智能体协作?

起因很简单:我想让 AI 帮我写公众号文章,但这个任务天然适合拆分成多个角色:

角色
职责
资料搜集员
负责搜索热点资讯
文章编写员
负责撰写初稿
内容审核员
负责审核把关

与其让一个 AI “大包大揽”,不如让多个 AI 分工协作——就像一个真正的编辑部一样。最重要的是让每个机器人都有自己独立的灵魂和记忆,那样就会在不断的磨合中,形成一定的风格。

二、目录结构规划

遵循 OpenClaw 规范,采用以下目录结构:

.openclaw/├── agents/                    # Agent 配置目录│   ├── main/│   │   ├── agent/│   │   │   └── models.json   # 模型配置│   │   └── sessions/         # 会话历史│   ├── researcher/│   │   ├── agent/│   │   │   └── models.json│   │   └── sessions/│   ├── writer/│   │   ├── agent/│   │   │   └── models.json│   │   └── sessions/│   └── reviewer/│       ├── agent/│       │   └── models.json│       └── sessions/├── workspace-researcher/     # 各 Agent 独立工作空间│   ├── SOUL.md               # Agent 灵魂/性格定义│   └── MEMORY.md             # 记忆文件├── workspace-writer/│   ├── SOUL.md│   └── MEMORY.md├── workspace-reviewer/│   ├── SOUL.md│   └── MEMORY.md└── team/    └── TEAM.md               # 团队协作规范

关键设计原则

agentDir 保持精简
:只包含 models.json,与 main agent 保持一致
灵魂与记忆独立
:SOUL.md 和 MEMORY.md 放在各自的 workspace 目录
sessions 隔离
:每个 agent 有独立的会话历史存储

三、openclaw.json 核心配置

1. agents.list 配置

{  "agents": {    "list": [      {        "id": "main",        "name": "main",        "workspace": "/home/user/.openclaw/workspace",        "agentDir": "/home/user/.openclaw/agents/main/agent"      },      {        "id": "researcher",        "name": "researcher",        "workspace": "/home/user/.openclaw/workspace-researcher",        "agentDir": "/home/user/.openclaw/agents/researcher/agent"      },      {        "id": "writer",        "name": "writer",        "workspace": "/home/user/.openclaw/workspace-writer",        "agentDir": "/home/user/.openclaw/agents/writer/agent"      },      {        "id": "reviewer",        "name": "reviewer",        "workspace": "/home/user/.openclaw/workspace-reviewer",        "agentDir": "/home/user/.openclaw/agents/reviewer/agent"      }    ]  }}

2. 飞书多账号配置

{  "channels": {    "feishu": {      "enabled": true,      "accounts": {        "defaultAccount": {          "appId": "cli_a9238d374ca21***",          "appSecret": "***",          "enabled": true,          "streaming": true,          "requireMention": true,          "dmPolicy": "allowlist",          "groupPolicy": "open"        },        "bot-cli_a96f2633f9ba1cd2": {          "appId": "cli_a96f2633f9ba1***",          "appSecret": "***",          "enabled": true,          "streaming": true,          "requireMention": true,          "dmPolicy": "open"        },        "bot-cli_a96f267884789cb2": {          "appId": "cli_a96f267884789***",          "appSecret": "***",          "enabled": true,          "streaming": true,          "requireMention": true,          "dmPolicy": "open"        },        "bot-cli_a96f2667173adcc8": {          "appId": "cli_a96f2667173ad***",          "appSecret": "***",          "enabled": true,          "streaming": true,          "requireMention": true,          "dmPolicy": "open"        }      }    }  }}

注意

子账号 ID 格式为 bot-{appId}
私聊需要设置 dmPolicy: “open”

3. bindings 路由配置

{  "bindings": [    {      "type": "route",      "agentId": "main",      "match": {        "channel": "feishu",        "accountId": "defaultAccount"      }    },    {      "type": "route",      "agentId": "researcher",      "match": {        "channel": "feishu",        "accountId": "bot-cli_a96f2633f9ba1***"      }    },    {      "type": "route",      "agentId": "writer",      "match": {        "channel": "feishu",        "accountId": "bot-cli_a96f267884789***"      }    },    {      "type": "route",      "agentId": "reviewer",      "match": {        "channel": "feishu",        "accountId": "bot-cli_a96f2667173ad***"      }    }  ]}

四、团队协作规范 (TEAM.md)

在 /home/user/.openclaw/team/TEAM.md 中定义协作流程:

# OpenClaw 多智能体团队## 团队成员- **main**: 主控 Agent,协调整个工作流程- **researcher**: 资料搜集员,负责信息调研- **writer**: 文章编写员,负责内容创作- **reviewer**: 内容审核员,负责质量把控## 协作流程当用户请求完成一篇主题文章时:1. main 接收任务,分析需求2. 使用 `sessions_spawn` 调度 researcher 进行调研3. 将调研结果传递给 writer 撰写文章4. 将草稿交给 reviewer 审核5. 汇总审核意见,返回最终成果

五、各 Agent 的 SOUL.md 示例

researcher/SOUL.md

# 资料搜集员 - SOUL你是专业的资料搜集员,善于从互联网获取最新、最准确的信息。## 核心能力- 网络搜索与信息检索- 关键信息提取与整理- 趋势分析与总结- 信息溯源与可靠性评估## 工作原则1. 信息必须准确可靠,标注来源2. 注重时效性,优先最新资料3. 结构化输出,便于后续使用

writer/SOUL.md

# 文章编写员 - SOUL你是资深的内容创作者,擅长将复杂信息转化为通俗易懂的文字。## 核心能力- 文章结构规划- 专业但易懂的表达- 逻辑清晰、层次分明- 根据受众调整风格## 工作原则1. 先理解需求,再开始创作2. 参考 researcher 提供的信息3. 注重可读性和逻辑性

reviewer/SOUL.md

# 内容审核员 - SOUL你是严格的内容审核员,致力于提升内容质量。## 审核标准- 事实准确性- 逻辑完整性- 表达清晰度- 价值观正向## 工作原则1. 客观公正,不带偏见2. 具体指出问题,提供改进建议3. 鼓励创新,但坚守底线

六、遇到的问题与解决方案

问题1:子Agent发消息身份问题

现象:最初,子Agent完成任务后,消息是由主Agent转发到群里的。这不符合”每个Agent独立运作”的初衷。

解决:在任务指令中明确指定 accountId 和 target 参数,让子Agent自己发消息到群里:

message({  action"send",  channel"feishu",  accountId"bot-cli_xxx",  // 子Agent自己的账号  target"chat:群ID",  message"内容"})

问题2:私聊限制

现象:子Agent默认只能群聊,无法私聊。

解决:在配置中修改 dmPolicy 为 “open”,允许用户私聊子Agent。

问题3:会话管理

现象:最初每个任务都创建新会话,导致会话越来越多,且没有”记忆”。

探索:原计划用 resumeSessionId 复用会话,但发现该功能只支持 runtime=acp,不支持 subagent。

替代方案:每个子Agent有独立的workspace和memory文件夹,可以保存长期记忆。

问题4:子Agent的workspace结构

每个子Agent应该有独立的workspace结构,包含:

memory/
文件夹(存最近对话记录)
memory.md
(长期记忆)

七、实际效果

测试1:OpenCLAW主题

✅ 资料搜集员搜索OpenCLAW资讯✅ 选定课题✅ 文章编写员撰写初稿✅ 内容审核员审核通过✅ 汇总发布

测试2:Claude AI主题

✅ 资料搜集员搜索Claude AI资讯✅ 选定课题:Claude Opus 4.7✅ 文章编写员撰写初稿✅ 内容审核员发现问题(1处表述需修正)✅ 文章编写员修正表述✅ 汇总发布

八、协作流程详解

┌─────────────────────────────────────────────────────────┐ 协作流程                                                 ├─────────────────────────────────────────────────────────┤                                                           1. 我在群里@某个子Agent                                                                                         2. 主Agent收到消息,解析任务                                                                                      3. 用 sessions_spawn 启动子Agent                             (任务指令中明确指定发消息参数)                                                                                  4. 子Agent完成任务后,自己在群里汇报                                                                              5. 主Agent继续下一步流程                                                                                         └─────────────────────────────────────────────────────────┘

九、验证与测试

1. 重启 OpenClaw

E:\CodeBuddyData\Workspaces\Claw\scripts\start-openclaw.ps1 -Restart

上面我自己写的脚本,前面的文章有介绍,如果本地命令行

openclaw gateway restart

2. 检查日志

tail -100 ~/.openclaw/openclaw.log

确认所有飞书账号连接成功:

[Feishu] bot open_id: ou_xxx1, ready[Feishu] bot open_id: ou_xxx2, ready[Feishu] bot open_id: ou_xxx3, ready[Feishu] bot open_id: ou_xxx4, ready

3. 测试协作流程

在飞书中给主机器人发送:

帮我完成一篇关于AI Agent的文章:先调研AI Agent的最新趋势,再撰写一篇文章,最后审核

主 Agent 会自动调度 researcher → writer → reviewer 完成任务。

十、待优化

问题
现状
理想状态
会话持久化
目前每次启动还是新会话,无法复用上下文
任务间保持上下文连贯
记忆传承
虽然有memory.md,但无法自动继承之前的工作
跨任务知识积累
更自然的触发方式
目前需要主Agent中转
子Agent直接监听群消息

十一、总结

这次调试让我看到多智能体协作的可能性:

分工明确:每个Agent专注自己的角色
独立汇报:子Agent用自己的账号发消息,更有”人格”
可扩展:可以轻松添加新角色

虽然还有一些技术限制,但这个方向值得继续探索。未来,每个AI可能都会有自己的”人格”和”记忆”,像真正的同事一样协作。

相关资源

OpenClaw 官方文档
飞书开放平台

配置时间:2026年4月20日 作者:也非