乐于分享
好东西不私藏

【养虾记08】OpenClaw多Agent配置实战

【养虾记08】OpenClaw多Agent配置实战

大家好,我是质量架构师东哥,专注软件研发过程中的质量效率改进。

讲清原理,打通实战,拒绝空谈。欢迎关注。

OpenClaw支持配置多个智能体(Agent),每个Agent就像一个独立的”大脑”,拥有自己的人格、记忆、工具和会话,互不干扰。多个Agent可以独立工作,也可以互相协作工作。一般不太建议在一台电脑上面部署多个OpenClaw来实现多Agent,官方建议是一个操作系统部署一个OpenClaw,然后在一个OpenClaw配置多个Agent,因为一个系统部署多个OpenClaw可能会造成资源的并发操作导致不一致性,增加了混乱性。

什么是多Agent

关于OpenClaw的网关(Gateway)、智能体(Agents)和路由绑定(Binding)的关系可以参考如下图。

用户发消息 → 机器人接收 → Channel Account → Gateway → Binding路由匹配 → Agent处理 → LLM生内容回复 → 原路返回

路由绑定(Binding):路由是连接渠道(Channel)和智能体(Agent)之间的桥梁,通过路由OpenClaw能够知道我们当前聊天的渠道是和哪一个智能体进行沟通。

路由配置在 .openclaw.json文件中,例如下面我的配置:

"bindings": [
    {
"agentId""main",
"match": {
"channel""feishu",
"accountId""default"
      }
    },
    {
"agentId""main",
"match": {
"channel""dingtalk-connector",
"accountId""default"
      }
    }
  ],

消息通过路由处理进入目标Agent后,Agent拥有完全独立的上下文:

  • Workspace:独立的工作目录,包含 SOUL.md(人格)、AGENTS.md(行为规范)、USER.md(用户信息)、MEMORY.md(长期记忆)等文件,之前已经介绍过。

  • Session Store:独立的会话存储,路径为 ~/.openclaw/agents/<agentId>/sessions/

  • Models:每个Agent可以配置不同的模型,路径为 ~/.openclaw/agents/<agentId>/agent/models.json

  • Skills:从workspace + 共享目录(~/.openclaw/skills)加载,可按agent配置allowlist

多Agent的使用场景

场景
方案
多人共用一台服务器
每人一个Agent,完全隔离数据和会话
一个人多个人格
工作Agent(严肃高效) + 生活Agent(轻松随意)
按渠道分工
飞书用快速模型日常聊 +钉钉用Opus深度工作
家庭/团队共享
家庭群绑定family Agent,工作群绑定work Agent
安全隔离
给不信任的Agent配置沙箱+工具限制

多Agent支持多种配置方式,比如:

  1. 单渠道、多机器人、多Agent,一个飞书,配置多个机器人、配置多个Agent(这也是我**目前使用最频繁的一个场景**,因为我的大部分使用OpenClaw都是在飞书上,然后飞书上配置多个机器人,不同机器人职能不同,有日常管理我的日程的,前面介绍过搭建个人日程监控;有负责帮我检查文章错别字、结构的机器人;有负责技术答疑的机器人等等,所以本篇会重点介绍这种方式。

  2. 多渠道、多机器人、多Agent,一个飞书+一个钉钉,配置多个机器人、配置多个Agent。

  3. 单渠道、单机器人、多Agent、多群聊。一个机器人对接多个不同的群,目前没找到合适的使用场景。我用的很少。最重要的就是让多个Agent和群绑定即可。

如何配置多Agent

单渠道、多机器人、多Agent,一个飞书,配置多个机器人、配置多个Agent(这也是我目前使用最频繁的一个场景,因为我的大部分使用OpenClaw都是在飞书上,然后飞书上配置多个机器人,不同机器人职能不同,有日常管理我的日程的,前面介绍过搭建个人日程监控;有负责帮我检查文章错别字、结构的机器人;有负责技术答疑的机器人等等,所以本篇会重点介绍这种方式)。

下面介绍最常用的一种方式,单渠道、多机器人、多Agent的配置方法,比较符合日常使用场景。

配置多Agent之前目录结构如下

agents目录下只有一个main标识主Agent

根目录下也只有一个workspace目录,每个Agent都有一个独立的workspace工作空间。

通过命令行方式创建多Agent

  1. 添加Agent命令:openclaw agents add <agent-id> [参数] ,例如:通过下面的命令添加一个新的agent名称叫:ip,并且指定workspace目录名称为workspace-ip。如果要指定agent使用的大模型可以继续添加参数 –model,不指定默认复制main Agent的模型作为当前新agent的默认模型。
openclaw agents add ip --workspace ~/.openclaw/workspace-ip

当然你也可以通过对话的方式让你的小龙虾帮你执行,这样不用登陆服务器。

执行结果如下:

查看OpenClaw目录

创建完之后会自动在openclaw.json文件中agents节点中添加对应的agent 列表,无需手动配置

{
"agents": {
"defaults": {
"workspace""/root/.openclaw/workspace",
    },
"list": [
      {
"id""main"
      },
// 新增 agent ip
      {
"id""ip",
"name""ip",
"workspace""/root/.openclaw/workspace-ip",
"agentDir""/root/.openclaw/agents/ip/agent"
      },
      {
"id""lobster",
"name""lobster",
"workspace""/root/.openclaw/workspace-lobster",
"agentDir""/root/.openclaw/agents/lobster/agent"
      }
    ]
  },
// 其他配置

每个agent都有独立的workspace。

  • 登陆飞书管理后台创建飞书机器人,记录appId,appSecret。

  • 配置飞书机器人,在openclaw.json中的channels段落添加配置。

配置之前,只有一个机器人所以不区分账户(accounts)

"channels": {

"feishu": {
"enabled"true,
"appId""cli_a955d0f App ID cdd",
"appSecret""RWMATV App Secret zbQvxx",
"connectionMode""websocket",
"domain""feishu",
"dmPolicy""pairing",
"allowFrom": [
"ou_4556db7503bxxx161a28ec2cd646"
      ],
"groupPolicy""allowlist",
"requireMention"true
    }
  }

配置之后,通过 accounts 区分多机器人

"channels": {
// 渠道名称 feishu 下面会用到
"feishu": {
// 注意需要配置 accounts 节点
"accounts": {
"default": {
"enabled"true,
"appId""cli_输入机器人的 App ID ",
"appSecret""输入机器人的 App Secret ",
"connectionMode""websocket",
"domain""feishu",
"dmPolicy""pairing",
"allowFrom": [
"ou_455xxx646"
          ],
"groupPolicy""allowlist",
"requireMention"true
        },
// feishu-ip 这个名字下面会用到 
"feishu-ip": {
"enabled"true,
"appId""机器人的 App ID",
"appSecret""机器人的 App Secret",
"connectionMode""websocket",
"domain""feishu",
"dmPolicy""pairing",
"allowFrom": [
"ou_455xxxxxx6"
          ],
"groupPolicy""allowlist",
"requireMention"true
        }
      },
"enabled"true
    }
  }
  • 添加路由bindings,如果没有此代码块可以直接加在tools同节点即可。
"tools": {
"profile""full",
"sessions": {
"visibility""all"
    }
  },
// 注意是 [] 数组的方式,因为要配置多个
"bindings": [
    {
"agentId""main",
"match": {
"channel""feishu",
"accountId""default"
      }
    },
    {
"agentId""ip",
"match": {
"channel""feishu",       // channel 是上面 channels.feishu 的名称
"accountId""feishu-ip"// accountId 是上面 channels.accounts.feishu-ip 
      }
    }
  ],
"models":xxx
  • 验证配置文件是否正确
openclaw config validate
  • 重启网关
openclaw gateway restart
  • 找到我们新增的机器人与它对话,第一次会要求进行配对,拷贝到服务器执行: openclaw pairing approve feishu xxx

两个飞书通道的dmPolicy都配置为pairing模式,该模式下只有在allowFrom白名单列表内的用户可以直接访问机器人,不在列表内的新用户首次发消息都会触发配对审批流程,防止陌生用户随意使用机器人,如果嫌麻烦可以将上面的配置中的 dmPolicy从pairing改为open,修改后重启网关即可,Open模式不需要配对即可使用

  • 执行命令进行配对。
openclaw pairing approve feishu 29EGKGGR
  • 分别给两个机器人发送消息:/status  验证是否配置成功

机器人1:

机器人2:

可以看到Session: agent:xxx:feishu:这里的agent id 已经不同了,而且工作空间也不同。

接下来快速回顾一下创建多agent的步骤:

1. 添加Agent:openclaw agents add lobster --workspace ~/.openclaw/workspace-lobster
2. 在 openclaw.json 配置添加 channels。第一次需要添加 "accounts" 用于配置一个渠道多机器人账户,后续复制机器人配置即可。
3. bindings 里配置agentId 和 accountId
4. openclaw config validate
5. openclaw gateway restart
6. 与新机器人对话。第一次会让你配对机器人:openclaw pairing approve feishu 29EGKGGR
7. 发送消息:/status  验证是否配置成功

如果不想手工配置,也可以通过跟小龙虾对话的方式,让小龙虾帮你完成配置。

创建完所有机器人之后,当我们有一个复杂的任务需要多个智能体进行协作时,我们可以把这些智能体都拉到一个群里,然后自己编排好任务之后,创建一个飞书云文档,让所有的机器人在群里按照我们编排的任务进行在同一个文档中协作完成复杂任务。

如果你觉得这篇文章写的还不错,麻烦双击屏幕点个👍、点个❤️、点个转发,你的支持是我继续分享的动力!

欢迎志同道合的朋友添加我的微信 Miller_Shan 一起交流,互相学习,共同进步。