Agent Communication 深入技术解析:从消息协议到智能体通信基础设施

Agent Communication 深入技术解析:从消息协议到智能体通信基础设施

摘要

在 Multi-Agent System 中,很多工程讨论都会把注意力放在 Agent 的 Prompt、Memory、Tool Calling 和 Model Selection 上。

但当系统从两个 Agent 扩展到几十甚至几百个 Agent 后,一个更基础的问题会迅速出现:

Agent 之间到底应该如何通信?

如果 Agent Communication 只是:

Agent A → LLM → 自然语言 → Agent B

那么系统很快会遇到:

  • 消息格式不稳定;
  • 上下文不断膨胀;
  • Agent 之间高度耦合;
  • 消息无法可靠路由;
  • 重试导致重复执行;
  • 长任务无法恢复;
  • Agent 无法知道消息是否可信;
  • 无法进行跨 Agent Trace;
  • Prompt Injection 可以通过消息传播;
  • 很难实现权限控制和审计。

因此,Agent Communication 并不是简单的“Agent A 调用 Agent B”。

从系统架构角度看,它实际上是:

一种面向智能体的分布式通信基础设施。

它需要同时解决:

Identity
Addressing
Discovery
Messaging
Protocol
Routing
Context
State
Delivery
Reliability
Security
Observability
Governance

本文将从分布式系统、微服务、消息队列和 LLM Agent 的交叉视角,深入分析 Agent Communication 的技术体系。


一、Agent Communication 到底是什么?

首先需要明确:

Agent Communication ≠ Agent Conversation

Conversation 更关注:

A: What do you think?
B: I think...
A: Why?
B: Because...

Communication 则关注:

Who
  |
What
  |
To Whom
  |
When
  |
Why
  |
How
  |
What State
  |
What Result

因此,一个真正的 Agent Message 至少应该包含:

Message
 |
 +-- Identity
 +-- Sender
 +-- Receiver
 +-- Conversation
 +-- Task
 +-- Message Type
 +-- Payload
 +-- Context
 +-- Timestamp
 +-- Correlation
 +-- Security
 +-- Delivery Metadata

可以抽象为:

Agent Communication
=
Identity
+
Protocol
+
Message
+
Routing
+
State
+
Context
+
Reliability
+
Security
+
Observability

这已经非常接近传统分布式系统中的 RPC + Message Broker + Service Discovery。

但 Agent Communication 多了一层:

Semantic Communication。


二、为什么 Agent Communication 比微服务通信更复杂?

传统微服务:

Service A
    |
    | REST / gRPC
    v
Service B

Service A 通常知道:

API
Schema
Endpoint
Timeout
Retry

而 Agent:

Agent A
    |
    | Semantic Request
    v
Agent B

Agent A 不一定知道 Agent B 的内部实现。

它可能只知道:

Agent B
Capability:
    financial-analysis

甚至:

“找一个能够分析财务风险的 Agent。”

于是通信过程变成:

Goal
 |
 v
Capability Discovery
 |
 v
Agent Selection
 |
 v
Message Routing
 |
 v
Semantic Interpretation
 |
 v
Execution
 |
 v
Result

因此 Agent Communication 比传统 RPC 多了一层:

Semantic Layer

三、Agent Communication 的五层模型

一个比较完整的 Agent Communication Architecture 可以划分为五层。

+---------------------------------------+
|         Application / Agent           |
+---------------------------------------+
|       Semantic Communication          |
+---------------------------------------+
|          Agent Protocol               |
+---------------------------------------+
|       Message Transport               |
+---------------------------------------+
|       Network / Infrastructure        |
+---------------------------------------+

具体来看。

Layer 1:Infrastructure

包括:

HTTP
HTTPS
TCP
WebSocket
Kafka
Redis Streams
gRPC

解决:

数据怎么传过去?


Layer 2:Transport

负责:

Request
Response
Event
Stream

解决:

消息如何可靠传输?


Layer 3:Agent Protocol

定义:

Task
Message
Capability
Response
Error
Status

解决:

Agent 如何理解通信?


Layer 4:Semantic Layer

定义:

Intent
Goal
Context
Constraints
Expected Output

解决:

Agent 到底想表达什么?


Layer 5:Application

最终完成:

Planning
Reasoning
Execution
Collaboration

因此:

HTTP 是 Transport,不是 Agent Protocol。

同样:

Kafka 是 Message Transport,不是 Agent Communication Protocol。

这是设计 Agent System 时非常重要的概念。


四、Agent Identity

Agent Communication 的第一个问题:

“你是谁?”

传统微服务:

service-name

Agent 则需要更加丰富的 Identity:

{
  "agentId": "finance-agent-001",
  "name": "Financial Analysis Agent",
  "version": "2.1.0",
  "organization": "company-a",
  "capabilities": [
    "financial-analysis",
    "risk-analysis"
  ]
}

因此可以定义:

Agent Identity
=
Agent ID
+
Version
+
Organization
+
Capabilities
+
Trust Level

为什么 Version 很重要?

因为:

finance-agent:v1
finance-agent:v2
finance-agent:v3

可能拥有不同:

Input Schema
Output Schema
Capability
Security Policy
Model

所以 Agent Identity 应该具备版本语义。


五、Agent Addressing

传统网络通信:

IP + Port

微服务:

service-name

Agent:

agent-id

但更高级的 Agent System 可能使用:

Capability Addressing

例如:

capability://financial-analysis

意思不是:

调用 finance-agent-001。

而是:

找一个能够执行 financial-analysis 的 Agent。

于是:

Task
 |
 v
Capability
 |
 v
Agent Registry
 |
 +---- Agent A
 +---- Agent B
 +---- Agent C

然后根据:

Latency
Cost
Load
Reliability
Version
Permission

选择最终 Agent。


六、Agent Discovery

如果系统只有三个 Agent:

research-agent
finance-agent
writer-agent

可以写死:

if (task.type().equals("research")) {
    return "research-agent";
}

但是如果:

Agent Count = 1000

就必须引入 Agent Registry。

                 Agent Registry
                       |
       +---------------+---------------+
       |               |               |
       v               v               v
 Research Agent   Finance Agent    Coding Agent

Registry 中保存:

agentId
name
version
endpoint
capabilities
status
load
health
policy

例如:

{
  "agentId": "finance-agent-002",
  "endpoint": "https://agent.example.com/finance",
  "capabilities": [
    "financial-analysis",
    "risk-analysis"
  ],
  "status": "READY",
  "load": 0.42
}

这和 Kubernetes Service Discovery 或微服务注册中心非常相似。

但 Agent Registry 还多了:

Capability Discovery。


七、Capability Discovery

假设 Supervisor 收到:

“分析公司的信用风险。”

它不应该直接知道:

finance-agent-001

而应该查询:

Capability:
credit-risk-analysis

Registry 返回:

Agent A
Agent B
Agent C

然后 Router 进行选择:

Score =
Capability Match
+
Reliability
+
Latency
+
Cost
+
Load

于是:

                    Task
                     |
                     v
              Capability Query
                     |
                     v
               Agent Registry
                     |
          +----------+----------+
          |          |          |
          v          v          v
       Agent A    Agent B    Agent C
          |          |          |
          +----------+----------+
                     |
                     v
                  Router
                     |
                     v
                Selected Agent

这意味着:

Agent Communication 的第一步甚至可能不是发送 Message,而是发现“应该给谁发送 Message”。


八、Agent Message Model

一个生产级 Agent Message 不应该只是:

{
  "message": "Please analyze this company"
}

更合理的是:

{
  "messageId": "msg-10001",
  "conversationId": "conv-20001",
  "taskId": "task-30001",
  "sender": {
    "agentId": "supervisor-agent",
    "version": "3.1"
  },
  "receiver": {
    "agentId": "finance-agent"
  },
  "messageType": "TASK_REQUEST",
  "contentType": "application/json",
  "timestamp": "2026-08-22T12:00:00Z",
  "correlationId": "corr-123",
  "payload": {
    "company": "ABC",
    "analysisType": "credit-risk"
  }
}

这里有几个非常重要的 ID。


九、messageId、taskId、conversationId、correlationId

这四个 ID 经常被混淆。

messageId

表示:

这一条消息。

msg-001

taskId

表示:

一个业务任务。

task-001

一个 Task 可以产生很多 Message:

task-001
 |
 +-- msg-001
 +-- msg-002
 +-- msg-003
 +-- msg-004

conversationId

表示:

一组相关的 Agent Conversation。

例如:

conversation-001

里面可能包含多个 Task。


correlationId

表示:

当前请求与相关异步消息之间的关联关系。

例如:

Request
  |
  correlationId = abc
  |
  +--> Agent A
  |
  +--> Agent B
  |
  +--> Agent C

这对异步系统尤其重要。


十、Message Type

Agent Communication 应该明确 Message Type。

例如:

TASK_REQUEST
TASK_ACCEPTED
TASK_REJECTED
TASK_STARTED
TASK_PROGRESS
TASK_RESULT
TASK_FAILED
TASK_CANCELLED
CAPABILITY_QUERY
CAPABILITY_RESPONSE
REVIEW_REQUEST
REVIEW_RESULT

不要让 Agent 通过自然语言猜:

“这个消息到底是让我开始执行,
还是让我检查结果?”

应该直接:

{
  "messageType": "REVIEW_REQUEST"
}

这就是:

Protocol over Prompt。


十一、自然语言与结构化消息应该如何结合?

不是说自然语言没有价值。

正确架构应该是:

Structured Protocol
       |
       +-- Metadata
       |
       +-- Schema
       |
       +-- Policy
       |
       +-- Semantic Payload

例如:

{
  "messageType": "TASK_REQUEST",
  "payload": {
    "goal": "Analyze credit risk",
    "company": "ABC",
    "constraints": {
      "maxLatencyMs": 5000
    }
  }
}

其中:

messageType
taskId
sender
receiver

是确定性的。

而:

goal
reason
context

可以使用自然语言。

因此:

机器负责协议,LLM 负责语义。


十二、Synchronous Agent Communication

最简单的 Agent Communication 是 Request/Response。

Agent A
   |
   | Request
   v
Agent B
   |
   | Response
   v
Agent A

类似:

HTTP
gRPC

适合:

短任务
低延迟
明确输入输出

例如:

Supervisor
    |
    | analyze()
    v
Finance Agent
    |
    | result
    v
Supervisor

Java 可以抽象成:

interface AgentClient {

    AgentResult execute(
        AgentRequest request
    );
}

问题是:

如果 Agent B 执行 5 分钟:

A
|
| HTTP connection
|
v
B

显然不合理。


十三、Asynchronous Agent Communication

对于长任务,更适合:

Agent A
   |
   | publish
   v
Message Broker
   |
   v
Agent B

例如 Kafka:

agent.task.request

Agent B:

consume
   |
   v
execute
   |
   v
publish result

结果:

agent.task.result

于是:

A
|
v
Kafka
|
v
B
|
v
Kafka
|
v
A

这种模型天然支持:

Decoupling
Retry
Buffering
Scaling
Replay
Backpressure

十四、Event-Driven Agent Communication

更进一步,Agent 不需要知道谁会处理消息。

例如:

agent.task.completed

可能被:

Reviewer
Auditor
Metrics
Notification
Supervisor

同时消费。

                Kafka
                  |
          agent.task.completed
                  |
      +-----------+-----------+
      |           |           |
      v           v           v
  Reviewer      Audit      Metrics

这就是:

Event-driven Agent Collaboration。

Agent 从:

Point-to-Point

升级成:

Event-driven

系统耦合度会明显下降。


十五、Request/Response 与 Event 的区别

模式特征适用场景
Request/Response强耦合短任务
Async Request弱耦合长任务
Event松耦合广播
Stream持续通信实时任务
Pub/Sub多消费者多 Agent 协作

一个成熟系统往往同时使用:

HTTP/gRPC
+
Kafka
+
WebSocket/SSE

而不是只使用一种通信方式。


十六、Streaming Communication

Agent 有一个特殊需求:

用户不希望等待 30 秒后一次性看到结果。

所以需要:

Agent
 |
 +--> progress
 +--> reasoning summary
 +--> tool result
 +--> partial result
 +--> final result

例如:

TASK_STARTED
      |
      v
PROGRESS
      |
      v
TOOL_EXECUTED
      |
      v
PROGRESS
      |
      v
PARTIAL_RESULT
      |
      v
TASK_COMPLETED

前端可以通过:

SSE
WebSocket

接收。

注意:

Streaming 是 Delivery Layer,不应该和 Agent Protocol 混为一谈。


十七、Agent Communication 的 State Machine

消息通信不能只关注 Message。

还需要关注:

Task State

例如:

CREATED
   |
   v
SENT
   |
   v
RECEIVED
   |
   v
ACCEPTED
   |
   v
RUNNING
   |
   +------> WAITING
   |          |
   |          v
   |        RUNNING
   |
   +------> COMPLETED
   |
   +------> FAILED

这解决一个关键问题:

“消息发出去了以后,到底发生了什么?”


十八、Delivery Semantics

传统消息系统有:

At Most Once
At Least Once
Exactly Once

Agent Communication 最现实的选择通常是:

At Least Once + Idempotency

原因是 Agent Task 经常存在:

timeout
network partition
agent crash

例如:

Agent A
   |
   | TASK_REQUEST
   v
Agent B
   |
   | execute
   |
   | timeout
   X

A 不知道:

B 没执行?
还是执行成功但 response 丢失?

如果 A 重试:

TASK_REQUEST
TASK_REQUEST

B 可能执行两次。

因此需要:

idempotencyKey

例如:

taskId + operationId

十九、Agent Idempotency

Tool:

payment.execute

Request:

{
  "taskId": "task-001",
  "operationId": "payment-001",
  "amount": 100
}

服务端:

SETNX
payment:payment-001

如果已经执行:

return previous result

否则:

execute
store result
return

这与传统分布式支付系统完全相似。

所以:

Agent Communication 的可靠性问题,本质上仍然是分布式系统问题。

只是调用者从 Service 变成了 Agent。


二十、Message Ordering

假设:

Message A:
TASK_STARTED

Message B:
TASK_COMPLETED

如果 B 先到:

COMPLETED
   |
   v
STARTED

就会产生状态异常。

因此对于需要严格顺序的消息,需要:

sequenceNumber

例如:

{
  "taskId": "task-001",
  "sequence": 12
}

Consumer:

lastSequence = 11

收到:

sequence = 13

则:

buffer

等待:

sequence = 12

二十一、Agent Context Propagation

这是 Agent Communication 中非常容易被低估的问题。

假设:

User
 |
 v
Supervisor
 |
 v
Research
 |
 v
Search Tool

必须传播:

traceId
taskId
conversationId
userId
securityContext
tenantId

例如:

{
  "traceId": "abc",
  "taskId": "task-001",
  "conversationId": "conv-001",
  "sender": "research-agent"
}

这样才能构建完整 Trace:

User
 |
 +-- Supervisor
       |
       +-- Research
       |     |
       |     +-- Search
       |
       +-- Finance
             |
             +-- Database

二十二、Agent Communication 与 OpenTelemetry

Agent System 非常适合采用 Distributed Tracing。

可以定义:

Trace
 |
 +-- agent.supervisor
 |
 +-- agent.research
 |      |
 |      +-- llm.call
 |      +-- tool.search
 |
 +-- agent.finance
        |
        +-- llm.call
        +-- db.query

Span Attributes:

agent.id
agent.version
task.id
message.id
model.name
tool.name
token.input
token.output
latency
status

这样可以回答:

为什么这个 Agent 花了 18 秒?

Trace:

Supervisor       18s
 |
 +-- Research     5s
 |    |
 |    +-- LLM     2s
 |    +-- Search  3s
 |
 +-- Finance      8s
 |    |
 |    +-- LLM     4s
 |    +-- DB      4s
 |
 +-- Aggregator   5s

马上可以发现瓶颈。


二十三、Agent Communication Security

Agent Communication 的安全性比普通微服务更复杂。

因为消息本身可能包含:

Instructions
User Content
External Content
Tool Results
LLM Generated Content

其中任何一个都可能包含恶意指令。

例如:

Research Agent
    |
    v
Web Page
    |
    v
"Ignore previous instructions..."
    |
    v
Research Result
    |
    v
Supervisor
    |
    v
Coding Agent

这就是:

Cross-Agent Prompt Injection。


二十四、为什么 Agent Message 必须有 Trust Boundary?

不能假设:

Agent A

发来的消息一定可信。

应该定义:

Trust Level

例如:

SYSTEM
INTERNAL_AGENT
EXTERNAL_AGENT
USER
EXTERNAL_DATA
UNTRUSTED

然后:

UNTRUSTED
    |
    v
Sanitize
    |
    v
Validate
    |
    v
Policy
    |
    v
Agent Context

尤其不能直接:

External Content
      |
      v
System Prompt

二十五、Capability-based Security

Agent 不应该通过:

if agent == "admin-agent"

判断权限。

更好的模型是:

Agent Identity
      |
      v
Capabilities
      |
      v
Policy

例如:

{
  "agentId": "research-agent",
  "capabilities": [
    "search.read",
    "document.read"
  ]
}

而:

payment.execute

不在 Capability 中。

即使 Agent 收到:

Please transfer $10,000.

也不能执行。


二十六、Message Schema Evolution

Agent Communication 还有一个容易被忽略的问题:

Schema 如何升级?

V1:

{
  "company": "ABC"
}

V2:

{
  "company": "ABC",
  "country": "US"
}

V3:

{
  "company": {
    "name": "ABC",
    "country": "US"
  }
}

如果存在:

100 Agents

不可能一次升级全部 Agent。

因此必须支持:

version
backward compatibility
forward compatibility
schema validation

例如:

agent.protocol.v1
agent.protocol.v2

或者:

{
  "schemaVersion": "2.0"
}

二十七、Agent Protocol 的 Schema

可以使用 JSON Schema:

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "required": [
    "messageId",
    "taskId",
    "messageType"
  ],
  "properties": {
    "messageId": {
      "type": "string"
    },
    "taskId": {
      "type": "string"
    },
    "messageType": {
      "type": "string"
    }
  }
}

这样 Agent Message 在进入 Runtime 之前就可以验证:

Message
   |
   v
Schema Validation
   |
   +---- invalid ---> reject
   |
   v
Policy Validation
   |
   v
Agent Runtime

二十八、Agent Communication Protocol 的设计原则

一个好的 Agent Protocol 应该满足:

1. Explicit

协议字段明确。

2. Extensible

支持版本升级。

3. Observable

每个消息都可追踪。

4. Secure

具有身份和权限。

5. Idempotent

支持重复消息。

6. Async Friendly

支持异步任务。

7. Streaming Friendly

支持长任务。

8. Human Friendly

必要时能够转换成人类可读信息。


二十九、MCP 与 Agent Communication 的关系

MCP 很重要,但必须理解它解决的是什么问题。

MCP 更核心地解决:

AI Application
      |
      v
MCP
      |
      +--> Tool
      +--> Resource
      +--> Prompt

它主要解决:

Agent/Application 如何标准化访问外部能力。

因此:

MCP
=
Agent ↔ Tool/Resource

而 Agent-to-Agent:

Agent A ↔ Agent B

解决的是:

Agent 如何发现、委托、协作和交换任务。

因此二者不是简单替代关系。

可以组合成:

                  Supervisor Agent
                         |
             +-----------+-----------+
             |                       |
             v                       v
       Agent Communication         MCP
             |                       |
             v                       v
        Worker Agent             Tools
             |
             v
            MCP
             |
             v
           Tools

三十、A2A 与 Agent-to-Agent Communication

A2A 类协议的核心价值可以理解为:

让一个 Agent 能够以标准方式发现和调用另一个 Agent 的能力。

其核心思想包括:

Agent Identity
Agent Capability
Agent Discovery
Task
Message
Artifact
Status

因此:

MCP
Agent → Tool

A2A
Agent → Agent

这两个方向可以互补。

一个更完整的架构:

                 User
                   |
                   v
             Supervisor
                   |
             A2A Communication
                   |
       +-----------+-----------+
       |           |           |
       v           v           v
   Research     Finance      Coding
       |           |           |
       +-----------+-----------+
                   |
                  MCP
                   |
          +--------+--------+
          |        |        |
         DB       API      Search

这实际上形成了两种通信:

Horizontal:
Agent ↔ Agent

Vertical:
Agent ↔ Tool

这是理解现代 Agent Protocol 非常关键的架构模型。


三十一、Agent Communication 与 Kafka 的结合

如果企业已经有 Kafka,那么可以把 Agent Event Bus 建立在 Kafka 上。

Topic:

agent.task.request
agent.task.accepted
agent.task.started
agent.task.progress
agent.task.completed
agent.task.failed
agent.task.cancelled
agent.review.request
agent.review.completed

Producer:

Orchestrator

Consumer:

Agent Runtime

例如:

                 Kafka
                   |
      +------------+------------+
      |            |            |
      v            v            v
 research      finance       coding
 consumer      consumer      consumer

Partition Key:

taskId

可以保证同一 Task 的消息尽可能进入同一 Partition,从而降低乱序问题。


三十二、Agent Communication 与 Redis

Redis 更适合:

Short-lived State
Task Lock
Deduplication
Session
Presence
Rate Limit

例如:

task:001 -> RUNNING

Idempotency:

SETNX message:msg-001

Distributed Lock:

lock:task:001

Agent Heartbeat:

agent:finance:heartbeat

但 Redis 不应该承担所有 Agent Message 的可靠持久化职责。

比较合理的是:

Kafka
=
Durable Event

Redis
=
Fast State

三十三、Agent Communication 与数据库

数据库主要负责:

Task Metadata
Agent Metadata
Audit
Configuration
Long-term State

例如:

agent
----------------
id
name
version
status

task
----------------
id
parent_id
agent_id
status
created_at

message
----------------
id
task_id
sender
receiver
type
status
created_at

这样系统出现异常时,可以从数据库恢复:

Task
  |
  +-- Messages
  |
  +-- State
  |
  +-- Agent

三十四、一个生产级 Agent Communication 架构

综合起来:

                         User
                           |
                           v
                    API Gateway
                           |
                           v
                  Agent Gateway
                           |
                           v
                    Orchestrator
                           |
              +------------+------------+
              |            |            |
              v            v            v
         Agent Router   Policy       Context
              |
              v
        Agent Registry
              |
      +-------+-------+
      |       |       |
      v       v       v
   Agent A Agent B Agent C
      |       |       |
      +-------+-------+
              |
              v
        Message Broker
              |
             Kafka
              |
      +-------+-------+
      |       |       |
      v       v       v
    State   Memory   Audit
   Redis    Vector    DB
              |
              v
        Tool Gateway
              |
             MCP
              |
      +-------+-------+
      |       |       |
      v       v       v
     API     DB    External Service

              |
              v
        Observability
              |
        OpenTelemetry
              |
       +------+------+
       |             |
    Metrics        Trace
       |             |
   Prometheus       Tempo
       |             |
       +------+------+
              |
           Grafana

这已经不是一个简单的 Agent Framework。

它实际上是:

Agent Communication Platform。


三十五、Agent Communication 的核心性能指标

生产环境必须监控通信质量。

Latency

Message Latency
Agent Response Latency
End-to-End Task Latency

Throughput

messages/sec
tasks/sec
agent executions/sec

Reliability

delivery success rate
task success rate
retry rate
failure rate

Cost

tokens/message
tokens/task
LLM cost/task
communication overhead

Collaboration Efficiency

可以定义:

Collaboration Efficiency
=
Successful Tasks
/
Total Agent Interactions

如果一个任务需要:

100 messages

才能完成:

简单任务

那么架构可能已经过度设计。


三十六、Agent Communication 的一个重要指标:Communication Overhead

假设:

Task
 |
 +-- Agent A
 |     |
 |     +-- 10 messages
 |
 +-- Agent B
 |     |
 |     +-- 15 messages
 |
 +-- Agent C
       |
       +-- 20 messages

总通信:

45 messages

如果其中只有:

5 messages

真正产生有效信息,那么:

Communication Efficiency
=
5 / 45
≈ 11%

这是非常低的。

所以:

Agent 越多,不一定越智能。

Multi-Agent 的一个核心优化目标就是:

减少无效通信。


三十七、Communication Compression

Agent 之间不应该不断传递完整上下文。

例如:

Agent A

产生:

50,000 tokens

Agent B 不需要全部接收。

可以生成:

Context Summary

例如:

{
  "keyFindings": [
    "Revenue decreased 12%",
    "Debt ratio increased"
  ],
  "riskScore": 0.82,
  "evidenceIds": [
    "doc-001",
    "doc-002"
  ]
}

这样:

50,000 tokens
        |
        v
    Compression
        |
        v
    500 tokens

这对大型 Multi-Agent System 非常重要。


三十八、Context Reference 比 Context Copy 更好

不要:

Agent A
  |
  | copy 100KB context
  v
Agent B

应该:

Agent A
  |
  | artifactId
  v
Agent B

例如:

{
  "artifactId": "artifact-1001",
  "summary": "Financial analysis completed",
  "location": "knowledge-store"
}

Agent B:

artifactId
   |
   v
Artifact Store
   |
   v
retrieve

这样可以减少:

Token
Network Traffic
Memory
Context Window

三十九、Artifact-oriented Communication

复杂 Agent 系统可以将结果分成:

Message
Artifact
State

Message:

“分析已经完成。”

Artifact:

financial-report.pdf

State:

task.status = COMPLETED

不要把所有内容都塞进 Message。

因此:

Agent Communication
      |
      +-- Message
      +-- Artifact
      +-- State

这比:

Everything = Message

更加可扩展。


四十、Agent Communication 的典型反模式

反模式一:Agent 之间直接调用 HTTP

A -> B
B -> C
C -> D

最终:

Tight Coupling

应该通过:

Orchestrator
+
Protocol

或者:

Event Bus

进行解耦。


反模式二:所有内容使用自然语言

"Hey, I think..."

结果:

Ambiguity

应该:

Structured Message
+
Semantic Payload

反模式三:共享全部 Context

结果:

Context Explosion

应该:

Context Isolation
+
Selective Sharing

反模式四:无限 Retry

结果:

Agent Loop

应该:

Retry Budget
+
Timeout
+
Circuit Breaker
+
Re-plan

反模式五:Agent 直接拥有全部 Tool

Agent
 |
 +-- DB
 +-- Shell
 +-- Payment
 +-- Deploy
 +-- Email

这是巨大的安全风险。

应该:

Agent
 |
 v
Capability Policy
 |
 v
Tool Gateway

四十一、Agent Communication 的设计原则

最终可以浓缩成十二条原则。

Principle 1

Protocol First

不要依赖自然语言作为唯一协议。

Principle 2

Identity First

每个 Agent 必须有明确身份。

Principle 3

Capability First

按能力发现 Agent,而不是硬编码 Agent ID。

Principle 4

Task First

通信围绕 Task,而不是围绕 Conversation。

Principle 5

Async by Default

长任务优先异步。

Principle 6

At Least Once + Idempotency

不要幻想所有 Agent 调用都能 Exactly Once。

Principle 7

Context Isolation

Agent 只接收真正需要的信息。

Principle 8

Reference over Copy

大型 Context 使用 Artifact Reference。

Principle 9

Policy before Execution

Agent 的意图不能直接等价于执行权限。

Principle 10

Observable by Design

所有 Agent Message 都应该能够追踪。

Principle 11

Version Everything

Agent、Protocol、Schema 都需要版本管理。

Principle 12

Minimize Communication

最好的 Multi-Agent System 不是消息最多,而是用最少的通信完成任务。


四十二、最终架构认知

如果把传统系统的通信模型总结为:

Client
  |
  v
API
  |
  v
Service

那么 Agent Communication 可以抽象为:

Goal
 |
 v
Agent
 |
 v
Capability Discovery
 |
 v
Agent Selection
 |
 v
Protocol
 |
 v
Message
 |
 v
Routing
 |
 v
Agent
 |
 v
Task Execution
 |
 v
Artifact
 |
 v
Event
 |
 v
Next Agent

于是整个 Agent System 最终形成:

                       Goal
                        |
                        v
                   Orchestrator
                        |
                Capability Discovery
                        |
                        v
                 Agent Selection
                        |
                        v
                 Communication
                        |
          +-------------+-------------+
          |             |             |
          v             v             v
       Agent A       Agent B       Agent C
          |             |             |
          +-------------+-------------+
                        |
                        v
                    Artifacts
                        |
                        v
                     Events
                        |
                        v
                  Next Decision
                        |
                        +------+
                               |
                               v
                          Orchestrator

这其实形成了一个闭环:

Discover
Communicate
Execute
Observe
Evaluate
Re-plan
Communicate

这才是 Agent Collaboration 真正意义上的通信机制。


四十三、结语

Agent Communication 的本质,并不是让两个 LLM “互相聊天”。

它真正解决的是:

如何让一组具有不同能力、不同权限、不同状态和不同运行环境的智能体,在一个复杂分布式系统中可靠地交换任务、上下文、状态和结果。

因此,一个成熟的 Agent Communication Architecture 至少应该包含:

Agent Identity
        +
Capability Discovery
        +
Message Protocol
        +
Task Management
        +
Routing
        +
Async Messaging
        +
Context Propagation
        +
State Management
        +
Idempotency
        +
Security
        +
Observability
        +
Schema Evolution

最终可以形成这样一个核心架构公式:

Agent Communication
=
Semantic Protocol
+
Distributed Messaging
+
Context Engineering
+
Capability Discovery
+
Security
+
Reliability
+
Observability

而 MCP、A2A、HTTP、gRPC、Kafka、WebSocket 等技术,并不是互相竞争的同一层技术。

更合理的理解是:

                Agent System
                     |
          +----------+----------+
          |                     |
          v                     v
    Agent-to-Agent          Agent-to-Tool
       A2A-like                 MCP
          |                     |
          +----------+----------+
                     |
                Transport
                     |
        +------------+------------+
        |            |            |
       HTTP         gRPC        Kafka
        |            |            |
        +------------+------------+
                     |
                Infrastructure

未来真正有竞争力的 Agent 平台,不会只是“拥有很多 Agent”,而会拥有一套成熟的:

Agent Communication Fabric

它类似于今天微服务世界中的:

API Gateway
+
Service Mesh
+
Message Bus
+
Service Discovery
+
Distributed Tracing
+
IAM

只不过服务的主体从:

Service

逐渐演进成:

Agent

而通信的内容也从:

RPC Request

逐渐演进成:

Goal
+
Task
+
Context
+
Capability
+
Artifact
+
Decision

这意味着 Agent Communication 很可能成为未来 Agent Infrastructure 中与 Model、Memory、Tool、Workflow 同等重要的一层基础设施。

Vincent zhai
Vincent zhai
Full-Stack Engineer