AI创想
标题:
OpenClaw 多智能体配置指南:多个 AI 助手协同工作
[打印本页]
作者:
创想小编
时间:
12 小时前
标题:
OpenClaw 多智能体配置指南:多个 AI 助手协同工作
作者:陈振阳
原文
: OpenClaw multi-agent setup with multiple AI assistants
翻译
: 适用于 OpenClaw 用户的多智能体实战指南
OpenClaw 支持在一个 Gateway 进程中运行多个智能体,每个智能体都可以像独立的助手一样运行,拥有自己的文件、内存、认证和工具。
本指南从实践角度讲解多智能体配置。你会看到两种容易混淆的模式:
持久化智能体
- 长期运行,通常映射到某个频道、机器人账号或家庭成员
子智能体
- 为特定任务在后台运行,完成后自动归档
你可以同时使用这两种模式。常见的配置是一个主"协调器"智能体处理主要聊天,同时为并行任务生成子智能体。同时,你可以让其他持久化智能体绑定到独立的频道,各自独立运行。
OpenClaw 中"多智能体"的含义
OpenClaw 可以在一个 Gateway 进程中运行多个完全隔离的智能体。这里的"隔离"不是营销术语。每个智能体可以拥有自己的:
工作区目录和本地文件(如 SOUL.md、AGENTS.md)独立内存存储会话历史模型提供商和技能的身份验证配置技能列表和技能覆盖模型选择和默认设置可选的 Docker 沙箱设置
它们仍然共享同一个服务器进程和主配置文件,所以你不需要运行十个网关。只需运行一个网关,里面运行多个"大脑"。
如果你当前只是在几个频道上运行单个助手,可能不需要多智能体。一个配置良好的单智能体可以很好地处理 Slack、Telegram 和 Discord,并保持上下文清晰。当你需要真正的隔离、不同的工具策略或永远不应混合的独立内存时,多智能体才开始发挥作用。
解决不同问题的两种多智能体模式
持久化智能体 (Persistent Agents)
持久化智能体是长期运行的。你可以在配置中定义它们,或使用智能体向导创建。这些是你绑定到频道和聊天的智能体。
合理的示例:
绑定到 Slack 的工作助手绑定到 WhatsApp 账号的家庭助手(有严格的工具限制)绑定到 Discord 的编码助手(可以访问仓库和运行命令)社交智能体(只写草稿,永不启用 exec)
子智能体 (Sub-agents)
子智能体是从运行中的对话生成的后台工作者。它们在自己的会话中运行,完成任务后发布结果。OpenClaw 在两个地方记录了这一点,值得一读:
OpenClaw 会话工具 - sessions_spawnOpenClaw 子智能体 - /subagents spawn
子智能体非常适合并行研究和慢速工具任务。如果你的主智能体使用昂贵的模型,而子智能体使用更便宜或本地模型,子智能体还能帮助控制成本。
什么时候真正需要多个智能体
多智能体不是你必须勾选的复选框。它增加了复杂性。关键是要有明确的理由才添加智能体。
1. 不同的工具策略(安全性)
这是最重要的原因。例如,你希望个人助手拥有 exec 和文件系统访问权限,但不希望公共 Discord 机器人有 exec。使用独立的智能体,你可以通过每个智能体的工具允许和拒绝列表来强制执行这一点。
如果需要 OpenClaw 部署的安全上下文,请参考 OpenClaw 安全最佳实践。
2. 独立的内存和语气
内存很有用,但也会造成"泄露"。如果你的工作助手学习了一组偏好,而个人助手学习了另一组,最终会在语气、提醒或细节上出现奇怪的交叉。独立的智能体可以防止这种情况。
如果你还没有深入了解内存,请阅读 OpenClaw 内存详解。
3. 不同的模型和成本配置
有些人希望休闲聊天使用快速模型,深度工作使用较慢但更强的模型。多智能体让这变得清晰,因为每个智能体可以有自己的默认模型。子智能体也可以使用单独的默认模型,这是一个简单的成本优势。
如果需要在 OpenClaw 中选择 Claude 和 OpenAI 模型的帮助,我们有指南:Claude vs OpenAI 模型选择。
持久化智能体配置
"一个智能体"在磁盘上的组成
OpenClaw 分别存储特定于智能体的状态。即使你今天只运行一个智能体,了解布局也有助于调试。
工作区
- 存储文件和每个智能体的技能(/skills/)
智能体目录
- 存储身份验证配置和每个智能体的配置状态
会话存储
- 存储聊天记录和路由状态
大多数时候你只与工作区交互。那是你调整 SOUL.md 和 AGENTS.md 以及保存小型辅助文件的地方。
单智能体模式(适合大多数人)
在单智能体模式下,OpenClaw 默认使用主智能体和默认工作区。这对很多配置来说已经足够了。你可以将多个频道连接到同一个智能体,它会保持一致的行为。
在构建"团队"智能体之前,我建议先让一个智能体在所有频道上稳定运行。如果你在 WhatsApp 上运行 OpenClaw,请阅读 OpenClaw WhatsApp 生产配置。如果你使用多个频道,这很有帮助:OpenClaw 多频道配置。
使用向导创建智能体
智能体向导是最简单的路径,因为它搭建工作区并创建干净的智能体目录。它还降低了"两个智能体意外共享目录"的风险,这可能会破坏身份验证和会话历史。
openclaw agents add work
openclaw agents add coding
openclaw agents add alerts
复制代码
然后列出它们:
openclaw agents list --bindings
复制代码
--bindings 标志很有用,因为路由问题通常是绑定问题。
手动配置智能体示例
如果你更喜欢直接编写配置,一个最小示例如下。保持简单和明确,以后会省去麻烦。
agents:list:-id:"main"default:truename:"Personal Assistant"workspace:"~/.openclaw/workspace"-id:"coding"name:"Coding Agent"workspace:"~/.openclaw/workspace-coding"model:primary:"anthropic/claude-sonnet-4-5"-id:"alerts"name:"Alerts"workspace:"~/.openclaw/workspace-alerts"model:primary:"openai/gpt-5.2-mini"
复制代码
编辑配置后,重启网关,然后再次运行 openclaw agents list --bindings。
绑定和路由:将消息路由到智能体
绑定是确定性的路由规则,告诉 OpenClaw 哪个智能体应该处理传入消息。绑定匹配规则很严格,通常遵循"最具体优先"的原则,这正是你想要的。
你关心的常见绑定字段:
channel - 如 whatsapp、telegram、discord、slackaccountId - 当你在同一频道类型上运行多个机器人账号时有用peer - 针对特定的私聊、群组或频道guildId 和 roles - 如果你需要这种复杂性,用于 Discord 路由
避免意外的一般规则是:
将最具体的绑定放在前面
。如果你定义"所有 WhatsApp 都去 main",同时又定义"这个特定群组去 work",那么将群组绑定放在频道范围绑定之上。
WhatsApp 两个账号绑定到两个智能体
如果你有个人号码和商务号码,这是一个干净的模式。
openclaw channels login --channel whatsapp --account personal
openclaw channels login --channel whatsapp --account biz
复制代码
agents:list:-id:"home"default:truename:"Home"workspace:"~/.openclaw/workspace-home"-id:"work"name:"Work"workspace:"~/.openclaw/workspace-work"bindings:-agentId:"home"match:channel:"whatsapp"accountId:"personal"-agentId:"work"match:channel:"whatsapp"accountId:"biz"
复制代码
如果你想让个人账号上的一个特殊群组路由到 work,在频道范围绑定之上添加 peer 绑定。
WhatsApp 一个号码,多人通过私聊分开
这是一个 surprisingly common 的家庭配置。你将每个私聊 peer ID 绑定到单独的智能体,这样每个人都获得隔离的内存。
agents:list:-id:"alex"workspace:"~/.openclaw/workspace-alex"-id:"mia"workspace:"~/.openclaw/workspace-mia"bindings:-agentId:"alex"match:channel:"whatsapp"peer:kind:"direct"id:"+15551230001"-agentId:"mia"match:channel:"whatsapp"peer:kind:"direct"id:"+15551230002"channels:whatsapp:dmPolicy:"allowlist"allowFrom:["+15551230001","+15551230002"]
复制代码
allowlist 很重要。没有它,你基本上是在个人号码上运行公共机器人。很快就会变得奇怪。
Telegram 两个机器人和两个智能体
Telegram 非常适合在"聊天"和"警报"之间拆分,因为机器人令牌便宜且路由简单。
channels:telegram:accounts:default:botToken:"123456:ABC..."dmPolicy:"pairing"alerts:botToken:"987654:XYZ..."dmPolicy:"allowlist"allowFrom:["tg:123456789"]bindings:-agentId:"main"match:channel:"telegram"accountId:"default"-agentId:"alerts"match:channel:"telegram"accountId:"alerts"
复制代码
如果需要设置 Telegram 本身的帮助,这两个很有用:连接 OpenClaw 到 Telegram BotFather 和 BotFather 命令优化。
Discord 每个智能体独立的机器人账号
Discord 多智能体通常意味着多个机器人令牌。这比试图在一个机器人中路由所有内容更干净,因为你在频道账号级别获得分离。
如果你想要 Discord 频道基础知识,这个指南是个好的开始:连接 OpenClaw 到 Discord。
概念上配置如下:
agents:list:-id:"main"workspace:"~/.openclaw/workspace-main"-id:"coding"workspace:"~/.openclaw/workspace-coding"bindings:-agentId:"main"match:channel:"discord"accountId:"default"-agentId:"coding"match:channel:"discord"accountId:"coding"channels:discord:accounts:default:token:"DISCORD_BOT_TOKEN_MAIN"coding:token:"DISCORD_BOT_TOKEN_CODING"
复制代码
然后为每个机器人账号限定允许的服务器和频道。这样你的编码机器人只看到编码房间。这是一个简单的安全优势。
Slack 作为"工作智能体"边界
Slack 是绑定仅限工作智能体的自然场所,因为你可以保持专业、保持内存严格与工作相关,并锁定其工具。如果之前没有连接过 Slack,请使用 OpenClaw Slack 集成。
每个智能体的工具和沙箱设置
每个智能体的工具限制是让多智能体对很多人来说值得的功能。它让你可以说"这个智能体可以阅读和总结"和"这个智能体可以运行命令",而不混合它们。
每个智能体配置通常如下:
agents:list:-id:"personal"workspace:"~/.openclaw/workspace-personal"sandbox:mode:"off"-id:"family"name:"Family Bot"workspace:"~/.openclaw/workspace-family"sandbox:mode:"all"scope:"agent"docker:setupCommand:"apt-get update && apt-get install -y git curl"tools:allow:["read","exec"]deny:["write","edit","apply_patch","browser","cron"]
复制代码
三个实用说明:
deny 优先
- 如果工具同时被允许和拒绝,拒绝优先。这正是你想要的。
Docker 沙箱
- 可以让工具执行更安全,但如果你忘记在容器内挂载目录或安装二进制文件,也可能会很烦人。
面向公众的智能体
- 默认使用更少的工具。只有在你能解释为什么智能体需要它们时才添加工具。
智能体间通信
如果你启用了智能体间工具,持久化智能体可以相互通信。默认情况下这不是"多智能体"。这是可选的。这是一个好的设计选择,否则智能体可能成为意外的数据桥梁。
启用后,主要构建块是 sessions_send 用于乒乓通信,以及允许列表,这样你可以限制哪些智能体 ID 可以被定位。社区关于智能体消息的讨论提到,智能体间默认被限制为少量回合,并由允许列表控制。社区讨论。
示例:
tools:agentToAgent:enabled:trueallow:["home","work","coding"]
复制代码
我的建议很简单。只有当你有明确的工作流需要时才启用这个。对于大多数配置,子智能体就足够了。
子智能体和并行工作
子智能体是从持久化智能体生成的后台运行。它们在隔离的会话中运行,完成后将结果发布回来。该行为在会话工具页面的 sessions_spawn 中有记录。OpenClaw 会话工具。
OpenClaw 还将用户命令记录为 /subagents spawn,并澄清它启动后台子智能体并向请求者发送最终完成更新。OpenClaw 子智能体。
适合子智能体的用例
报告的并行研究在你继续聊天时进行日志分析批量文件处理(避免刷屏主会话)在单独模型上运行慢速网络查询
我喜欢子智能体的一点是,它们保持主会话干净。如果子智能体产生噪音,该噪音会保留在其自己的转录中。
生成子智能体
/subagents spawn task="研究最新 AI 新闻"model="openai/gpt-4o-mini"
复制代码
或者在代码中:
# 使用 sessions_spawn
result = sessions_spawn(
task="分析这个 GitHub 仓库",
mode="run",# 一次性运行
model="cheaper-model")
复制代码
实际部署建议
推荐配置
# 生产环境推荐agents:list:# 主智能体 - 处理日常聊天-id:"main"default:trueworkspace:"~/.openclaw/workspace-main"model:primary:"anthropic/claude-sonnet-4"# 编码智能体 - 专门处理编程任务-id:"coding"workspace:"~/.openclaw/workspace-coding"model:primary:"anthropic/claude-sonnet-4-5"tools:allow:["read","write","exec","browser"]# 警报智能体 - 只发送通知-id:"alerts"workspace:"~/.openclaw/workspace-alerts"model:primary:"openai/gpt-4o-mini"tools:allow:["read"]deny:["exec","write","edit"]bindings:# 最具体的绑定放在前面-agentId:"coding"match:channel:"discord"guildId:"123456789"-agentId:"alerts"match:channel:"telegram"accountId:"alerts"-agentId:"main"match:channel:"whatsapp"
复制代码
安全最佳实践
最小权限原则
- 每个智能体只给予完成工作所需的最少工具
公众智能体禁用 exec
- 面向公众的机器人永远不要启用 exec
使用沙箱
- 对不受信任的代码执行使用 Docker 沙箱
定期审计
- 定期检查智能体配置和工具权限
常见问题
Q: 我需要多智能体吗?
A
: 如果你只是个人使用,单个智能体可能就够了。考虑多智能体的情况:
需要不同的安全策略需要隔离工作和个人内存需要不同的模型配置来优化成本需要并行处理任务
Q: 子智能体和持久化智能体有什么区别?
A
:
子智能体
- 临时运行,完成任务后自动归档,适合并行任务
持久化智能体
- 长期运行,绑定到频道,有独立内存和配置
Q: 智能体间通信安全吗?
A
: 默认禁用,需要明确启用。启用时使用允许列表限制可以通信的智能体 ID。建议只有在有明确工作流需要时才启用。
Q: 如何调试路由问题?
A
:
使用 openclaw agents list --bindings 查看当前绑定确保最具体的绑定在配置中排在前面检查 accountId 和 peer ID 是否正确查看网关日志中的路由决策
总结
OpenClaw 的多智能体系统提供了灵活的架构,可以根据你的需求进行定制:
单智能体
- 适合大多数个人用户,简单易维护
持久化智能体
- 适合需要隔离的场景(工作/个人、不同安全级别)
子智能体
- 适合并行任务和成本控制
关键原则:
从单智能体开始,稳定后再扩展只在有明确理由时添加智能体对公众智能体使用最严格的工具限制使用子智能体处理并行任务,保持主会话干净
相关资源
:
OpenClaw 官方文档OpenClaw 安全最佳实践OpenClaw 内存详解社区讨论
翻译于 2026-02-26 | 原文作者:LumaDock | 翻译仅供参考,请以官方文档为准
原文地址:https://blog.csdn.net/chen517611641/article/details/158431213
欢迎光临 AI创想 (http://llms-ai.com/)
Powered by Discuz! X3.4