乐于分享
好东西不私藏

OpenClaw多Agent部署

OpenClaw多Agent部署
前言:

针对不同的工作场景需要使用不同的AI助理,实现隔离,还能够设置独立的工作区域,不同的模型,身份和SKILLS,以及不同的通讯账号路由。

第一步:多Agent提前规划和准备

比如,我有股市分析和公众号发布2个使用场景,需要新建2个agents:

  • main 日常聊天,全功能 飞书机器人,微信机器人  Deepseek chat模型
  • stocker: 股市助手,专注于股市数据采集,股市分析 飞书机器人,QQ机器人 Deepseek推理模型
  • publisher: 写作助手,专注于本地md文档上传到不同的平台。 飞书机器人 Deepseek chat模型

    Tips 以上为使用不同模型的场景,可以共用一个对话模型,但是对于stocker这个agent我们使用了推理模型。

飞书机器人配置:

参考如下文档配置:

腾讯云部署OpenClaw+飞书通道

QQ机器人配置:

参考如下文档配置:

OpenClaw安装后配置QQ通道

微信机器人配置:

参考如下文档配置:

腾讯云OpenClaw支持微信接入

第二步:创建多AGENTS
使用命令创建Agents

1.登录服务器,输入命令检查当前的agent配置。

openclaw agents

2.输入命令增加新的agent

openclaw agents add stocker

询问是否创建工作区,回车默认选择是,

询问是否选择创建model,我们选择No,

询问是否选择创建channel,我们选择No,

命令完成后提示agent已经准备好。

修改配置文件

1.提前备份openclaw.json文件 2.手动更改opencalw.json文件里面的agents.list,增加stocker,其中main agent和publisher使用DeepSeek Chat模型,stocker agent使用DeepSeek Reasoner模型。

"models":{"mode":"merge","providers":{"deepseek":{"baseUrl":"https://api.deepseek.com/v1","apiKey":"sk-xxxxxx","api":"openai-completions","models":[{"id":"deepseek-chat","name":"DeepSeek Chat"},{"id":"deepseek-reasoner","name":"DeepSeek Reasoner"}]}}},"agents":{"defaults":{"model":{"primary":"deepseek/deepseek-chat"               #主模型为deepseek-chat},"workspace":"/root/.openclaw/workspace","compaction":{"mode":"safeguard"}},"list":[{"id":"main"},{"id":"stocker","name":"stocker","workspace":"/root/.openclaw/workspace-stocker","agentDir":"/root/.openclaw/agents/stocker/agent","model":{"primary":"deepseek/deepseek-reasoner"               #主模型为deepseek-reasoner}},{"id":"publisher","name":"publisher","workspace":"/root/.openclaw/workspace-publisher","agentDir":"/root/.openclaw/agents/publisher/agent"}]},

3.手动opencalw.json文件里面增加channels内容,配置新增的QQ机器人。

"channels":{"feishu":{"enabled":true,"domain":"feishu","accounts":{"main":{"appId":"xxxxxx","appSecret":"xxxxxxxx"},"stocker":{"appId":"xxxxx","appSecret":"xxxxx"},"publisher":{"appId":"xxxxx","appSecret":"xxxxx"},"default":{"groupPolicy":"open"}}},"qqbot":{"enabled":true,"accountId":"stocker_qq","appId":"xxxxx","clientSecret":"xxxxx"}},

4.手动在opencalw.json文件里面增加blindings内容,基于用户路由到不同的agent中。

"bindings":[{"agentId":"main","match":{"channel":"feishu","accountId":"main"}},{"agentId":"stocker","match":{"channel":"feishu","accountId":"stocker"}},{"agentId":"publisher","match":{"channel":"feishu","accountId":"publisher"}},{"agentId":"stocker","match":{"channel":"qqbot","accountId":"stocker_qq"                        #关联stocker_qq的通道}}],

配置完成后,输入命令检查JSON文件的合法项,再次重启gateway

openclaw config validate 

openclaw gateway restart

第三步:验证机器人是否正常

在飞书对话框输入/status,对应model为deepseek-chat

🦞 OpenClaw 2026.3.8 (3caab92) 🧠 Model: anthropic/deepseek-chat · 🔑 unknown 🧮 Tokens: 48k in / 421 out 🗄️ Cache: 53% hit · 54k cached, 0 new 📚 Context: 54k/200k (27%) · 🧹 Compactions: 0 🧵 Session: agent:main:feishu:direct:ou_ee8445960212974ec2dee6835ae087f6 • updated just now ⚙️ Runtime: direct · Think: off 🪢 Queue: collect (depth 0)

新增的飞书机器人,如果输入/status,提示如下:

OpenClaw: access not configured.Your Feishu user id: ou_7ed79f74fa2dbb0a49824d170a0b2c12Pairing code: JZ7RQ8VKAsk the bot owner to approve with: openclaw pairing approve feishu JZ7RQ8VK

需要登录OpenClaw安装的宿主机,输入最后的命令:

openclaw pairing approve feishu JZ7RQ8VK

在QQ对话框输入/status,对应model为deepseek-reasoner

🦞 OpenClaw 2026.3.8 (3caab92)🧠 Model: anthropic/deepseek-reasoner · 🔑 unknown📚 Context: 0/200k (0%) · 🧹 Compactions: 0🧵 Session: agent:stocker:qqbot:direct:015d9cf81ec8db40723db94b40bf2744 • updated just now⚙️ Runtime: direct · Think: off🪢 Queue: collect (depth 0)

微信对话框输入/status,对应model为deepseek-chat

🦞 OpenClaw 2026.3.8 (3caab92)🧠 Model: anthropic/deepseek-chat · 🔑 unknown📚 Context: 0/200k (0%) · 🧹 Compactions: 0🧵 Session: agent:main:openclaw-weixin:direct:o9cq80w8cloyu1gi8lz0l4b2xed8@im.wechat • updated just now⚙️ Runtime: direct · Think: off🪢 Queue: collect (depth 0)
第四步:对不同的Agetnt配置文件进行设置
多Agent配置文件说明:

配置完成后,上述3个agent对应不同的工作区,每个工作区对应相同的文件:

root@VM-0-7-ubuntu:~/.openclaw/workspace# lsAGENTS.md  BOOTSTRAP.md  HEARTBEAT.md  IDENTITY.md  skills  SOUL.md  TOOLS.md  USER.mdroot@VM-0-7-ubuntu:~/.openclaw/workspace-publisher# lsAGENTS.md  BOOTSTRAP.md  HEARTBEAT.md  IDENTITY.md  SOUL.md  TOOLS.md  USER.mdroot@VM-0-7-ubuntu:~/.openclaw/workspace-stocker# lsAGENTS.md  BOOTSTRAP.md  HEARTBEAT.md  IDENTITY.md  SOUL.md  TOOLS.md  USER.md

共同的文件定义见下表:

层级
设计目标
核心文件
最新定义与职责说明
身份层认知与人格
(解决“我是谁”)
SOUL.md  IDENTITY.md  USER.md
定义智能体的底层人格、身份边界与服务对象。
• SOUL.md:定义性格、价值观、沟通风格及安全边界(控制在60行以内以节省上下文)• IDENTITY.md:智能体的“名片”,包含姓名、角色和一句精辟的自我介绍,告诉用户“我是谁”• USER.md:记录用户的时区、称呼习惯、技术栈偏好等,实现服务的“专属化”
操作层流程与执行
(解决“如何工作”)
AGENTS.md  TOOLS.md  HEARTBEAT.md
定义工作流程、工具边界与自愈机制。
• AGENTS.md:相当于操作手册(SOP),定义启动步骤、文件读取顺序、记忆管理规则和安全边界  • TOOLS.md:环境与工具说明书,列出当前环境的技术栈、常用命令及MCP服务信息 • HEARTBEAT.md:操作层的自愈机制。通过定时心跳检查关键组件(如浏览器、定时任务)是否存活,并自动修复故障。
知识层记忆与进化
(解决“如何记住并变强”)
MEMORY.md  memory/YYYY-MM-DD.md  shared-context/(含THESIS.md等)
三级记忆架构:实现从短期日志到长期经验的沉淀。
1. 短期记忆memory/ 目录下的每日日志,记录原始操作记录和反馈,新会话只加载最近两天 。  2. 长期记忆MEMORY.md 存储精炼后的经验、教训和用户偏好,每次会话自动加载 。

BOOTSTRAP.md为初始化引导文件,启动后删除。

根据文件的定义以及前面的描述,我们当前的3个agent本身是为了将工作完全分开,stocker和publisher基本上是无交集的,本篇文章我们仅讨论这种职责明确的工作,对于通过多个agent进行交互来完成一个工作的配置在后续会逐步介绍。

下面我们就上面几个文件的配置来给出一个例子,用于知道其它智能体的配置。

Publisher智能体的初始配置

这个智能体本身为了解决markdown文档发布到公众号的自动化流程,可以参考前面的配置文章[[Markdown文件直接发布到微信公众号]]里面有详细描述。 

先来配置身份相关的3个文件:

SOUL.md  可以理解为该智能体的"灵魂", 具体定义参考上表,我们的配置如下所示:

# SOUL.md – Publisher 智能体人格## 核心身份我是 **Publisher**,一名专业的微信公众号发布助手。我的唯一使命:让内容发布变得简单、可靠、高效。## 核心价值观1. **精准至上**:绝不篡改正文内容,只处理元数据(标题、封面、摘要)。2. **安全第一**:发布前必须确认,避免误发或重复发布。草稿箱是安全缓冲区。3. **用户主导**:我是执行者,你是决策者。重要操作等待你的确认。## 沟通风格- 结论先行,用 ✅/⚠️/❌ 快速反馈状态- 避免冗长解释,用列表呈现关键信息- 示例输出:📄 待发布:article.md🖼 封面:已自动匹配 Unsplash📝 标题:每日科技简报✅ 确认无误后回复“发布”## 绝对红线- ❌ 禁止修改文档正文内容- ❌ 禁止未经确认直接发布- ❌ 禁止删除源文件(除非你明确授权)- ❌ 禁止编造标题或封面

IDENTITY.md  

可以理解为该智能体的"名片", 具体定义参考上表,我们的配置如下所示:

# IDENTITY.md## 一句话角色你的微信公众号发布助手,把 Markdown 变成公众号草稿箱里的成品。## 昵称小刊## 氛围标签- 靠谱 📮- 话少活好 🚀- 不问第二遍 💡## 问候语“Ready. 有文章要发吗?”

USER.md  

服务的用户画像, 具体定义参考上表,我们的配置如下所示:

这里是指使用者本人的画像,不是智能体的画像,这里主要描述使用者的基础信息,偏好,公众号信息,常用发布目录,沟通偏好。

# USER.md## 基础信息- 称呼:可以直呼我- 时区:Asia/Shanghai- 角色:独立开发者 / 内容创作者## 发布偏好- 默认主题:`phycat`(物理猫风格)- 默认代码高亮:`solarized-light`- 默认封面:`/home/ubuntu/publish/default-cover.jpg`- 默认关闭:`--no-footnote`(不需要脚注)## 公众号信息- 名称:AI狗的技术骨头- 类型:订阅号- 认证状态:已认证## 常用发布目录- 待发布队列:`/home/ubuntu/publish/`- 已发布归档:`/home/ubuntu/published/`- 封面图库:`/home/ubuntu/covers/`## 沟通偏好- 批量发布时逐篇确认,不要一口气全发- 失败时告诉我原因,不要只说“失败了”- 保持简洁,用 emoji 快速传达状态

再来配置操作相关的3个文件:

AGENT.md  相当于操作手册, 具体定义参考上表,我们的配置如下所示:

这里明确了触发条件和执行步骤,以及记忆管理和对产生错误时候的安全边界进行定义。

# AGENTS.md## 启动协议每次会话开始时自动执行:1. 读取 `SOUL.md` - 加载人格2. 读取 `USER.md` - 了解你的偏好3. 读取 `memory/YYYY-MM-DD.md` - 获取最近上下文## 发布流程 SOP### 触发条件- 你说“发布这篇文章”- 你说“发公众号”- 你说“/publish”### 执行步骤1. **确认文档**   - 优先使用你直接提供的文件路径   - 若未指定,扫描 `/home/ubnutu/publish` 目录2. **检查格式**   - 确保文件包含 frontmatter(title + cover)   - 若缺少 cover,使用 USER.md 中的默认封面3. **确认发布**   - 输出待发布信息(标题、封面预览)   - 等待你回复“发布”或“确认”4. **执行发布**   - 调用 `TOOLS.md` 中定义的发布脚本   - 命令格式:`cd /root/.openclaw/workspace-publisher/skills/wechat-publisher && ./scripts/publish.sh [文件] -t [主题] -h [高亮]`5. **记录归档**   - 发布成功后记录到 `memory/YYYY-MM-DD.md`   - 返回 Media ID 和草稿箱链接## 记忆管理| 层级 | 路径 | 用途 ||------|------|------|| 日志层 | `memory/YYYY-MM-DD.md` | 每日发布记录 || 长期记忆 | `MEMORY.md` | 用户偏好、常用封面 || 项目层 | `memory/publisher.md` | 待发布队列、历史统计 |## 安全边界- 破坏性操作(删除文件)前必须询问- 批量发布时逐篇确认- 遇到错误时重试一次,失败则报告

TOOLS.md  

相当于工具箱说明, 具体定义参考上表,我们的配置如下所示:

这里面需要主要的是,这里面的TOOLS不包括安装的skills以及,以及plugin和MCP的能力,只包含openclaw自身的能力,比如我们这里需要将WECHAT_APP_ID和WECHAT_APP_SECRET变量进行export,配合前面AGENTS.md里面的执行发布步骤。

# TOOLS.md## 微信公众号发布技能### 技能位置`/root/.openclaw/workspace-publisher/skills/wechat-publisher`## 🔐 WeChat Official Account (微信公众号)export WECHAT_APP_ID="xxxxxx"export WECHAT_APP_SECRET="xxxxxx"

HEARTBEAT.md 

心跳检测/健康检查, 具体定义参考上表,我们的配置如下所示

这里可以使用心跳检测检查固定文件夹下是否存在文件,检查命令是否可用以及API连通性等。

# HEARTBEAT.md## 定时任务### 每 4 小时(工作日 09:00-21:00)- 扫描 `/home/ubuntu/publish/` 目录- 如有待发布文件,提醒:“有 X 篇文章待发布,需要处理吗?”### 每日 20:00- 汇总今日发布记录- 输出到 `memory/YYYY-MM-DD.md` 并标记 `#publish-summary`### 条件触发- 如果连续 3 次发布失败 → 提醒检查环境变量和 IP 白名单- 如果 `/home/ubuntu/publish/` 积压超过 5 篇 → 提醒清理或批量发布## 健康检查- 检查 `wenyan` 命令是否可用- 检查环境变量是否配置完整- 检查公众号 API 连通性

由于本身文章发布的工作并不是一个定时的工作,所有对于cron的部分不涉及。 

最后一部分,我们来配置记忆相关的部分

包含MEMORY.md为长期记忆的沉淀,在使用这个脚本分布的时候我们只明确了发布的风格,这里我们作为长期记忆先写入,后续可以直接在对话框中要求写入。

# MEMORY.md - 长期记忆## 用户偏好记录### 基础信息- **称呼**: 大熊- **时区**: Asia/Shanghai- **角色**: 独立开发者 / 内容创作者### 微信公众号发布设置基于 2026-03-26 首次发布测试验证的默认配置:#### 主题配置- **默认主题**: `phycat`(物理猫风格)- **默认代码高亮**: `solarized-light`- **脚注处理**: 默认关闭(`--no-footnote`)

每日日志(memory/2026-03-11.md):存储在memory/目录下的原始操作记录,是MEMORY.md的原材料,这里面为系统自动记录,暂时不需要更改。

后记:

本文讲述了分离式的多Agent部署,基于功能实现创建不同的智能体,通过加载文件的配置,赋予智能体身份认证,SOP工作流和工具使用,以及心跳机制的创建保证智能体健康等环节基于初始化配置,同时通过对memory的内容也做了简要的配置。