简要总结
Multi-Agent Routing
这页说明书在教你一个“多智能体路由”的魔法!想象一下,你有一个大城堡(Gateway),里面可以住好几个不同的小机器人(Agent)。每个小机器人都有自己的小房间(Workspace)、自己的玩具箱(agentDir)和记事情的小本子(Session)。这页就是告诉你,怎么让不同的人发来的消息,自动找到对的机器人去聊天。比如,让爸爸的消息去找“工作”机器人,让妈妈的消息去找“家庭”机器人。当你想要让一个城堡服务好几个人,或者让一个机器人专门做一件事(比如写代码,另一个专门聊天)的时候,就可以看这页啦!
五岁小孩版解释
什么是“一个智能体”?
你可以把一个“智能体”想成是一个完整的小机器人脑袋。每个小机器人都是完全分开的,它们有:
- 自己的小房间:里面放着它的规则说明书(像
AGENTS.md,SOUL.md)、笔记和玩具(文件)。 - 自己的玩具箱:叫
agentDir,里面放着它登录各种聊天软件(比如微信)的密码钥匙(auth profiles),还有它自己的小设置。 - 自己的小本子:叫 Session,用来记住和谁聊过天,聊了什么。
重要提醒:每个机器人的密码钥匙都是它自己的,不会自动分享给其他机器人。所以,千万不要把 A 机器人的玩具箱(agentDir)直接给 B 机器人用,那样它们的钥匙和聊天记录会打架,弄乱的!如果你真想分享密码,可以小心地复制 auth-profiles.json 这个钥匙文件过去。
怎么开始玩多个小机器人?
别担心,有个“机器人小助手”(agent wizard)可以帮你。就像搭积木一样,跟着这些步骤做:
给每个机器人建一个小房间。
- 要做什么:创建新的、独立的小机器人。
- 怎么做:在电脑的命令行里,输入
openclaw agents add 机器人名字。比如,openclaw agents add coding创建一个叫“coding”的编程机器人,openclaw agents add social创建一个叫“social”的社交机器人。
给机器人准备聊天软件的账号。
- 要做什么:为你喜欢的聊天软件(比如 Discord, Telegram, WhatsApp)创建账号,每个机器人最好有自己的账号。
- 怎么做:这步需要在那些聊天软件里操作。比如在 Discord 为每个机器人创建一个“Bot”(小机器人),拿到它的专属密码(token)。然后,在我们的系统里用
openclaw channels login --channel whatsapp --account 账号名字这样的命令登录。
告诉城堡,哪个账号的消息去找哪个机器人。
- 要做什么:设置“绑定规则”(bindings)。
- 怎么做:需要修改一个叫
openclaw.json的配置文件。在里面,你要列出所有机器人(agents.list),列出所有聊天账号(channels.<channel>.accounts),然后用bindings把它们连起来。下面会举例子。
重启城堡并检查。
- 要做什么:让刚才的改动生效,并看看一切是否正常。
- 怎么做:依次输入下面三个命令:
openclaw gateway restart(重启城堡)openclaw agents list --bindings(看看机器人和它们的绑定规则)openclaw channels status --probe(检查所有聊天账号的连接状态)
一个有趣的例子:一个 WhatsApp 号码,服务多个人
即使你只有一个 WhatsApp 手机号,也能让不同的人的消息由不同的机器人回复!这就像你有一个总机号码,但可以根据来电号码转接给不同的分机。
- 要怎么做:在
bindings规则里,匹配发消息人的手机号码(像+8612345678900)。设置peer.kind: "direct"表示这是私聊。 - 要注意什么:虽然消息由不同的机器人处理,但回复消息时,对方看到的发送者还是你原来的那个 WhatsApp 号码,不会变成机器人自己的号码。而且,这种私聊会共用机器人的“主会话”,所以如果要完全分开,最好还是“一个人对应一个机器人”。
消息是怎么找到机器人的?(路由规则)
城堡收到一条消息后,会像玩“找不同”游戏一样,按照从最具体到最一般的顺序,看看这条消息符合哪条 bindings 规则:
- 首先看:是不是发给某个特定的人或群(
peer完全匹配)? - 然后看:是不是在某个聊天线程里(
parentPeer匹配)? - (如果是 Discord)看:发消息的人是不是有某个特殊身份(
guildId + roles)? - (如果是 Discord)看:是不是在某个服务器里(
guildId)? - (如果是 Slack)看:是不是在某个团队里(
teamId)? - 看:是不是来自某个特定的聊天账号(
accountId匹配)? - 看:是不是来自某个聊天软件,不管哪个账号(
channel匹配,accountId: "*")? - 如果以上都不符合,就交给默认机器人(在
agents.list里标记了default: true的那个,或者第一个机器人)。
小提醒:如果有多条规则在同一级别都匹配,排在最前面的那条会赢。一条规则里可以设置多个匹配条件(比如既要匹配 peer 又要匹配 guildId),那就必须所有条件都满足才行。
给机器人穿上“防护服”(沙盒和工具限制)
从某个版本开始,你可以给每个机器人单独设置“防护服”(沙盒)和规定它能使用哪些“工具”。
- 防护服(沙盒):就像给机器人一个独立的游戏围栏,它在里面玩,不会弄坏城堡其他地方。你可以设置
sandbox.mode: "all"来强制它始终在围栏里玩,或者"off"让它自由活动。 - 工具限制:你可以用
tools.allow列出允许它使用的工具(比如只让“读”文件),用tools.deny列出禁止它使用的工具(比如不让“执行”命令)。 - 好处:这样更安全!比如,你可以让处理家庭群消息的机器人限制多一些,只允许它使用少数几个安全的工具;而让你自己用的私人机器人拥有所有权限。
重要注意:有一个叫 tools.elevated 的高级工具权限是全局的,不能针对每个机器人单独设置。如果你需要限制某个机器人不能运行命令,就在它的 tools.deny 列表里加上 "exec"。