一篇文章带你把 OpenClaw 在同一 Gateway 下的多智能体互聊机制、配置方法、运行原理和最小落地步骤一次讲透。

1 方案概览
1.1 核心机制

OpenClaw 已经内置了智能体发消息给另一个智能体。同一个 Gateway 里,最适合的实现方式就是:多智能体 + sessions_send + agentToAgent 权限。
OpenClaw 本身支持一个 Gateway 托管多个agent;每个 agent 都有自己独立的 workspace、agentDir 和 session store。跨 agent 发消息时,用的是 session 工具。官方也明确写了:跨 agent 目标会话需要 tools.sessions.visibility:“all”,并且还要额外开启 tools.agentToAgent。
1.2 Gateway内部互聊

具体流程:
• 配两个 agent
• 开启 tools.agentToAgent
• 允许会话工具sessions_send,给 agent 足够的工具权限
• 一个 agent 把消息发到另一个 agent 的 session
• OpenClaw 会自动进入一个reply-back ping-pong 机制:从第 2 轮开始,请求方和目标方交替回复;回复 REPLY_SKIP 可以停;最大轮数由 session.agentToAgent.maxPingPongTurns 控制,范围0–5,默认5。循环结束后还会有一个 announce 步骤,目标 agent 可以用 ANNOUNCE_SKIP 静默。
2 配置落地
2.1 修改配置
修改 ~/.openclaw/openclaw.json 文件

用 tools.profile:“messaging”,是因为这个 profile 默认就包含 sessions_list、sessions_history、sessions_send 和 session_status。
2.2 参数含义
这几个配置是整套方案能不能跑起来的关键:

3 工作原理
3.1 Session 模型
OpenClaw 的 session 不是随便一串聊天记录,它有明确的键模型。
• 主直接聊天桶固定就是“main”
• 完整 session key 形式是 agent::
• 在 TUI 里,/session main 会展开成当前 agent 的 agent::main
• 也可以显式切到另一个 agent 的session,比如 agent:other:main
从工程角度讲,两个智能体互相聊天,本质上就是:一个 agent 调sessions_send,把一段消息发到另一个 agent 的某个 session key 上。然后 OpenClaw 在网关里跑完下面这些动作:
• 1. 消息投递
• 2. 目标 agent 执行
• 3. 等待结果
• 4. 触发 ping-pong
• 5. 可选 announce
3.2 Ping Pong 机制
真正让它像双智能体互聊的,不只是把消息发过去,而是 OpenClaw 自带的reply-back ping-pong机制。
• 从第 2 轮开始,请求方和目标方交替回复
• 某一方回复 REPLY_SKIP 可以终止继续回复
• 最大往返轮数由 maxPingPongTurns 控制
• 范围是0–5,默认 5
• 结束后还会有一个 announce 步骤
• 目标 agent 可以用 ANNOUNCE_SKIP 保持静默
它让 agent 之间具备短周期协商能力,适合做规划、审查、辩论、纠错这类任务。
4 目录与隔离
4.1 创建目录
用 mkdir -p 一次性把四个目录补齐。
• ~/.openclaw/workspace-agentA
• ~/.openclaw/workspace-agentB
• ~/.openclaw/agents/agentA/agent
• ~/.openclaw/agents/agentB/agent
这样做是为了让两个 agent 真正形成隔离的 workspace 和 state 目录。官方对多 agent 的定义里明确强调了 workspace、agentDir 和 session store 是分开的,这是多智能体体系的基本骨架。

4.2 角色差异
在 workspace-agentA 和 workspace-agentB 里分别放一个最小版AGENTS.md。比如让 A 偏向规划,B偏向审查。这样它们开始互聊时,不至于变成两个性格完全重叠的复读机。工程上这很像给两个线程设置不同职责,而不是让两个 identical worker 彼此镜像输出。

5 验证运行
5.1 看agent是否加载
修改完配置和目录后,第一步不是盯着它会不会聊天,而是先执行openclaw gateway restart。然后查看agents

5.2 实现效果
Agent A的聊天界面

Agent B的聊天界面

5.3 看session是否落盘
让 agentA 使用 sessions_send 把消息发到agent:agentB:main。真正跑起来后,~/.openclaw/agents//sessions/ 下应该逐渐出现 JSONL 会话记录。

6 最小步骤总结
• 1. openclaw agents add agenta
• 2. openclaw agents add agentb
• 3. 给两个 agent 分别准备独立 workspace / agentDir
• 4. 在 openclaw.json 里开启:
tools.agentToAgent.enabled = true
tools.agentToAgent.allow = [“agenta”,“agentb”]
tools.sessions.visibility =“all”
• 5. 给两个 agent 配 tools.profile =“messaging”
• 6. openclaw gateway restart
• 7. 让 agentA 调 sessions_send 向 agent:agentB:main 发消息
在同一个 OpenClaw Gateway 中实现多智能体互聊,本质上就是为多个 agent 建立独立运行空间,再通过 sessions_send 向目标 session key 投递消息,同时开启 agentToAgent 与 sessions.visibility =“all”,交给网关完成自动 ping-pong 协作。
夜雨聆风