8.4 智能体间通信

多智能体系统中的通信设计直接影响系统的可靠性和可扩展性。本节介绍消息传递与共享内存两种范式,以及 Claude Code 的混合通信方案、OpenClaw 的多渠道路由机制。

8.4.1 通信的两种范式

智能体间通信的设计直接影响系统的可靠性、可扩展性和延迟。主要有两种范式。

维度
消息传递
共享内存

原理

Agent 通过发送/接收消息通信,消息包含数据和操作指令

Agent 通过共享数据结构通信,在同一进程内实现

耦合度

松耦合,Agent 不需要知道彼此内部状态

紧耦合,需要同步机制(锁)

延迟

较高

可扩展性

易于添加新 Agent,分布式友好

难以分布式,可能导致数据竞争

顺序保证

困难,需要额外机制

实现复杂度

较高(需要消息队列、重试等)

较低

异步支持

天然支持非阻塞操作

需要额外处理

适用场景

分布式系统、异步处理、系统级隔离

单进程多线程、低延迟要求、智能体间关系紧密

8.4.2 Claude Code的通信机制

Claude Code采用 混合方案

  • Task间:基于消息的通知机制(task-notification XML)

  • Worker间:通过Scratchpad共享内存

  • 跨进程:使用Streamable HTTP(双向HTTP流)

Task-Notification XML消息格式

Claude Code使用XML格式的通知消息进行Task间的通信。 注意:以下XML格式是Claude Code内部的任务通知格式,与MCP协议不同。MCP协议本身使用JSON-RPC 2.0格式(详见第九章),而此处展示的XML格式仅用于框架内Task间的状态传递:

消息结构详解

字段
含义
类型

id

Task的唯一标识符

string

state

任务状态(pending/running/completed/failed/killed)

enum

timestamp

消息生成时间(ISO 8601格式)

datetime

result

执行结果(仅当state为completed或failed时)

object

metrics

执行指标(令牌数、耗时等)

object

next_tasks

后续可执行的Task ID列表

array

Scratchpad跨Worker共享

Scratchpad是Claude Code中的共享内存区域,多个Worker可以读写:

8.4.3 OpenClaw的渠道路由

OpenClaw支持多渠道通信路由,支持20多个平台的消息分发。

渠道定义

多渠道通信的YAML定义示例如下:

消息格式规范

为了支持多种渠道,OpenClaw定义了统一的内部消息格式,然后为每个渠道进行转换:

在实现了消息队列和传输适配器后,我们需要确保整个通信系统具有高可靠性和良好的性能特性。本节阐述了通信协议设计的核心原则,它们在保证消息传递质量方面起着至关重要的作用。

8.4.4 通信协议设计原则

1. 可靠性

消息传递必须保证:

  • 至少一次送达(At-Least-Once):即使失败也会重试

  • 幂等性:重复消息不会产生重复副作用

  • 确认机制:发送者需要接收确认

2. 顺序保证

某些场景需要消息按顺序处理:

3. 背压控制

当消息积压时,应该反馈给发送者:

8.4.5 本小节小结

智能体间通信是多智能体系统的血管。Claude Code采用混合方案(task-notification XML + Scratchpad),既保证了消息的显式流动,又通过共享内存支持高效的同步操作。OpenClaw的多渠道路由系统则提供了灵活的消息分发能力。关键是设计好通信协议,确保可靠性、顺序保证和背压控制。下一节将在MiniHarness中实现完整的编排引擎。

最后更新于