简要总结
Multi-Agent Sandbox & Tools
这页说明书是教你怎么给不同的“小助手”安排不同的“小房间”和“玩具箱”的。就像你有好几个机器人朋友,有的可以帮你画画,有的只能陪你聊天。这页会告诉你,怎么给每个机器人朋友设置它自己的活动范围和能玩的玩具。当你需要让不同的机器人做不同的事情,或者想让一些机器人更安全时,就可以看看这页。
五岁小孩版解释
想象一下,你有很多个机器人小助手,它们都是你的好朋友。现在,我们可以给每个好朋友安排一个自己的“小房间”(这叫做 Sandbox,沙盒),还可以决定它能在房间里玩哪些“玩具”(这叫做 Tools,工具)。这样,有的好朋友可以帮你做很多事情,有的好朋友只能做一点点安全的事情。
第一步:给每个小助手安排小房间和玩具 每个小助手都可以有自己的设置。最重要的两件事是:
- 小房间怎么安排:在
agents.list[].sandbox这里设置。你可以把它想成是给每个机器人指定一个游戏区。 - 玩具怎么管理:在
tools.allow和tools.deny,还有agents.list[].tools这里设置。allow是允许玩的玩具,deny是不允许玩的玩具。
第二步:看看例子就明白啦 说明书里给了几个例子,就像搭积木的图纸。
- 例子1:一个叫“Personal Assistant”的小助手,没有小房间(
mode: "off"),什么玩具都能玩。另一个叫“Family Bot”的小助手,被关在一个叫 Docker 的小房间里(mode: "all"),而且只能玩“读”这个玩具(allow: ["read"])。 - 例子2:一个“工作”小助手,它的小房间是和其他小助手“共享”的(
scope: "shared"),它能玩的玩具有读、写、执行等,但不能玩浏览器。 - 例子3:这里告诉你,如果大规则(
agents.defaults)和小助手自己的规则(agents.list[])不一样,听谁的呢?听小助手自己的!它自己的设置更重要。
第三步:要记住的重要规矩
- 小助手们的秘密不共享:每个小助手都有自己的小盒子(
agentDir)来放自己的秘密(比如登录密码)。它们不能互相看对方的秘密。如果你想两个小助手用同一个秘密,你得手动把秘密文件复制过去。 - 玩具的发放顺序:发玩具是有顺序的,像过筛子一样,一层层过滤。大规则先过滤一遍,然后是小助手自己的规则,最后是小房间的规则。记住哦:一旦在某一层说不许玩某个玩具,后面就不能再让它玩了。
- 小心“non-main”这个词:如果你在总规则里写了
mode: "non-main",意思是“除了主小助手,其他都关进小房间”。但这里判断谁是“主小助手”,不是看它的名字(id),而是看一个叫session.mainKey的东西。所以有时候可能会搞错。最保险的办法是,如果你不想关某个小助手,就直接在它自己的设置里写mode: "off"。 - 一个特殊的“setupCommand”命令:这个命令像是一个“房间布置指令”,只在给小助手创建 Docker 小房间的时候运行一次,用来提前把房间布置好。
第四步:设置好了,怎么检查? 设置完以后,我们可以检查一下:
- 用命令
openclaw agents list --bindings看看小助手们都安排对了吗。 - 用命令
docker ps --filter "name=openclaw-sbx-"看看小助手们的小房间(Docker 容器)是不是都建好了。 - 试着让小助手用一个你不允许它玩的玩具,看看它是不是真的用不了。
- 看看运行日志,用命令
tail -f .../gateway.log来观察,里面会告诉你小助手们都在干嘛。
第五步:如果出问题了怎么办?
- 问题:我让小助手进小房间(
mode: "all"),它怎么没进去? 检查:看看总规则(agents.defaults)里是不是有不一样的设置。记住,小助手自己的设置最管用,所以要在它自己的设置里写清楚mode: "all"。 - 问题:我不许小助手玩某个玩具(写在
deny里),它怎么还能玩? 检查:看看玩具的过滤顺序。是不是在其他地方(比如总规则)又允许它玩了?记住,一旦在某一层说不许玩,后面就不能再允许了。 - 问题:我想要每个小助手都有自己的独立小房间,怎么没分开?
检查:在小助手的设置里,看看
scope是不是设成了"agent"。如果设成"session",那就是按每次聊天来分房间,不是按小助手来分。