OpenClaw实现多智能体协同工作的实现
心与道合
一、创建新的智能体分支
使用 openclaw agents add 命令来创建一个新的智能体:
openclaw agents add --workspace ~/.openclaw/workspace-ui ui-service-agent
--workspace:指定该智能体的专属“大脑”目录,用于存储它的记忆、身份设定(SOUL.md)等,这是实现逻辑隔离的关键。ui-service-agent:为你新建的智能体设置一个唯一的 ID。
如图则创建成功:

二、配置消息路由
配置消息路由:现在,你需要告诉 OpenClaw,什么样的消息应该交给这个新智能体处理。这通过修改 bindings 配置来实现。
注意:此命令会覆盖现有所有 bindings,操作前建议先备份原有配置
场景一:绑定到特定群聊
假设你想让 customer-service-agent 专门处理一个飞书群的提问。你需要先获取该群的 conversation_id,然后配置绑定规则
openclaw config set --json bindings '[
{
"agentId": "customer-service-agent",
"match": {
"channel": "feishu",
"peer": {
"kind": "group",
"id": "oc_xxxxxx" # 替换为实际的群ID
}
}
}
]'如果你的主 Agent (main) 还需要处理其他渠道的消息,务必将原有 bindings 一并写入这个 JSON 数组中。
场景二:智能体之间的内部调用
更高级的用法是让主 Agent 作为“项目经理”,在接到复杂任务时,通过 sessions_send 工具,动态地将专业问题(如写代码)转发给专门的智能体(如 code-agent),后者处理完再返回结果。这实现了真正意义上的多智能体协同。
三、智能体之间的内部调用的具体示例
第一步:创建你的“技术专家”智能体
首先,我们需要一个专业的智能体。假设我们要创建一个专门负责写代码的智能体,名叫 code-agent。
创建智能体并分配独立工作空间:
打开你的服务器终端,执行以下命令。这会让 code-agent 拥有一个独立的“大脑”目录,用于存储它的记忆和专业技能,实现与其他智能体的逻辑隔离。
# 创建一个ID为'code-agent'的智能体,并指定其专属工作空间 openclaw agents add code-agent --workspace ~/.openclaw/workspace-code-agent
赋予它专业能力:
为了让 code-agent 更好地完成编程任务,你可以在它的工作空间(~/.openclaw/workspace-code-agent)里,通过编辑 SOUL.md(设定其身份为资深程序员)和 TOOLS.md(指导其如何使用代码相关工具)来塑造它。更进一步的权限控制,我们将在下一步为主智能体配置。
第二步:配置核心权限,让“项目经理”学会调度
现在,我们需要修改主智能体(main)的配置文件,让它知道它可以使用 sessions_send 这个“内部通话工具”来联系其他智能体。
1. 编辑主智能体的工具配置文件:
你需要修改 ~/.openclaw/openclaw.json 文件。为了安全起见,强烈建议你先备份
cp ~/.openclaw/openclaw.json ~/.openclaw/openclaw.json.backup
2.在配置中启用 sessions_send 工具:
使用 vim 或其他编辑器打开 openclaw.json,找到或创建针对 main 智能体的配置。在它的 tools 配置项中,确保它能够使用 group:sessions 里的工具(这包括了 sessions_send 和 sessions_spawn)。
一个推荐的配置是使用 messaging 配置文件,它专为需要与其他智能体或渠道通信的角色设计。你可以参考下面的配置片段:
{
"agents": {
"list": [
{
"id": "main",
// ... 其他配置 ...
"tools": {
"profile": "messaging"
// "profile": "messaging" 会自动包含 sessions_send, sessions_list 等通信工具
}
},
{
"id": "code-agent",
"workspace": "~/.openclaw/workspace-code-agent",
// 可以为 code-agent 配置不同的工具集,例如赋予它 coding 能力
"tools": {
"profile": "coding"
}
}
]
}
}关键点解析:
main 智能体的 tools.profile 设置为 "messaging",这相当于给了它一个“通讯录”,让它有权使用 sessions_send 工具来呼叫其他智能体。code-agent 的 tools.profile 设置为 "coding",这意味着它将拥有读写文件、执行命令等编程相关的工具集。你也可以根据实际需求进一步细化 allow 和 deny 的权限。
3. 重启网关服务使配置生效:
openclaw gateway restart
第三步:实战演练,让“项目经理”发号施令
一切就绪!现在,当主智能体 main 接到一个写代码的任务时,它就可以召唤 code-agent 了。
你可以在与 main 智能体的对话中,通过类似以下的指令来触发协同。为了让智能体能准确理解,指令需要非常清晰。
你:@main 请帮我写一个Python脚本,用来计算斐波那契数列。你让 code-agent 来写,写完后给我。
main 智能体的内部操作:
它会理解你的意图,并决定调用 sessions_send 工具。它发出的“内部指令”逻辑上类似于:
# 这是智能体内部调用的逻辑,不是你需要手动执行的命令 sessions_send \ --session-key "agent:code-agent:main" \ # 告诉系统,要呼叫 code-agent 这个智能体 --message "请帮我写一个Python脚本,用来计算斐波那契数列。要求代码简洁,包含注释。完成后将代码返回给我。"
session-key 的格式 agent:<目标智能体ID>:<源智能体ID> 是 OpenClaw 用来识别不同智能体会话的关键。
最终效果:
code-agent 收到任务后,会在自己独立的工作空间中,使用它被赋予的编程工具开始工作。任务完成后,它会将结果返回给 main,最后由 main 将整理好的代码呈现给你。整个过程对你来说是透明的,你只看到最终结果,但背后其实是两个智能体在协同工作。
到此这篇关于OpenClaw实现多智能体协同工作的实现的文章就介绍到这了,更多相关OpenClaw多智能体协同内容请搜索脚本之家以前的文章或继续浏览下面的相关文章,希望大家以后多多支持脚本之家!
