Skip to content

ACP Agent Communication Protocol 详解

前置知识:本章节面向具备 TypeScript/Node.js 基础、了解智能体架构的开发者。
目标读者:需要构建多智能体系统、实现智能体间通信与协作的开发者。
维护状态:本文档基于 OpenClaw v2026.4+ 编写,ACP 是较新的协议仍在演进中。


1. ACP 概述

1.1 什么是 ACP

ACP (Agent Communication Protocol) 是 OpenClaw 内部的多智能体通信协议,设计用于:

  • 多智能体间通信:多个 OpenClaw 智能体之间的消息路由
  • 会话映射:跨智能体的会话状态同步
  • 持久化绑定:建立智能体之间的稳定通信链路
  • 访问策略控制:细粒度的权限管理

1.2 ACP 与其他协议的关系

协议层级用途
ACP应用层多智能体之间的消息传递和协作
MCP工具层AI 模型与外部工具/服务的标准化交互
WebSocket传输层实时双向通信
HTTP传输层RESTful API 调用

2. ACP 源码结构

2.1 核心文件

文件职责
acp/server.tsACP 服务端,处理连接和管理
acp/client.tsACP 客户端,发起请求
acp/session.ts会话生命周期管理
acp/session-mapper.ts会话 ID 映射和路由
acp/translator.ts消息格式翻译
acp/policy.ts访问策略引擎
acp/persistent-bindings.ts持久化绑定存储

2.2 架构图


3. ACP 工作流程

3.1 消息路由流程

3.2 会话映射流程


4. 实际使用场景

4.1 场景一:专家会诊模式

当用户提出复杂问题时,主智能体可以将子任务分发给专业领域的智能体:

配置示例

json5
{
  agents: {
    defaults: {
      model: { primary: "anthropic/claude-sonnet-4-5" }
    },
    agents: {
      "coding-agent": {
        workspace: "~/.openclaw/workspaces/coding",
        model: { primary: "anthropic/claude-opus-4-6" }
      },
      "security-agent": {
        workspace: "~/.openclaw/workspaces/security",
        model: { primary: "anthropic/claude-opus-4-6" }
      }
    }
  },
  acp: {
    // 专家智能体配置
    agents: {
      "coding-agent": {
        endpoint: "http://localhost:18789"
      },
      "security-agent": {
        endpoint: "http://localhost:18790"
      }
    }
  }
}

4.2 场景二:流水线处理

多智能体组成处理流水线,每个智能体负责特定阶段:

4.3 场景三:多通道协调

不同通道的智能体协同工作:


5. 会话映射

5.1 会话映射类型

类型说明使用场景
session-mapper会话 ID 到目标的映射消息路由
persistent-bindings持久化绑定关系长期协作关系
policy访问控制策略权限管理

5.2 会话键格式

# 标准 ACP 会话
acp:<agent-id>:<session-id>

# 跨 Agent 会话
acp:<agent-a>:<session-x>@<agent-b>

# 带通道信息的会话
acp:<agent-id>:<channel>:<peer-id>

5.3 会话映射配置

json5
{
  acp: {
    sessionMapping: {
      // 启用会话映射
      enabled: true,
      
      // 映射存储方式
      store: "memory", // 或 "file", "redis"
      
      // 映射过期时间
      ttl: "24h"
    }
  }
}

6. 策略引擎

6.1 策略类型

6.2 策略配置

json5
{
  acp: {
    policy: {
      // 默认策略
      default: "prompt",
      
      // 按操作类型配置策略
      operations: {
        // 高风险操作:拒绝
        "exec:*": "deny",
        "file:write:*": "deny",
        
        // 中风险操作:询问
        "browser:*": "prompt",
        
        // 低风险操作:允许
        "session:read": "allow",
        "memory:search": "allow"
      },
      
      // 按调用者配置
      callers: {
        "untrusted-agent": {
          default: "deny",
          exceptions: ["memory:read", "session:read"]
        }
      }
    }
  }
}

7. 持久化绑定

7.1 绑定类型

类型说明生命周期
lifecycle绑定到智能体生命周期智能体运行期间
resolve动态解析的绑定每次请求时解析
persistent持久化存储的绑定跨会话持久化

7.2 绑定管理

7.3 绑定配置

json5
{
  acp: {
    persistentBindings: {
      enabled: true,
      
      // 绑定存储
      store: {
        type: "file",      // 或 "memory", "redis"
        path: "~/.openclaw/acp-bindings.json"
      },
      
      // 绑定类型
      types: {
        "lifecycle": {
          autoCleanup: true   // 智能体结束时自动清理
        },
        "persistent": {
          autoCleanup: false   // 需要手动清理
        }
      }
    }
  }
}

8. 消息翻译器

8.1 翻译器功能

功能说明
prompt-prefix为跨智能体消息添加上下文前缀
session-rate-limit跨智能体消息的速率限制
stop-reason翻译停止原因
tool-result工具结果的格式转换

8.2 翻译流程


9. 安全配置

9.1 安全机制

9.2 安全配置

json5
{
  acp: {
    security: {
      // 认证方式
      auth: {
        type: "token",          // token / mTLS / none
        token: "${ACP_AUTH_TOKEN}"
      },
      
      // 加密传输
      encryption: true,
      
      // 审计日志
      audit: {
        enabled: true,
        destination: "~/.openclaw/logs/acp-audit.jsonl"
      },
      
      // 速率限制
      rateLimit: {
        enabled: true,
        maxRequests: 100,
        windowMs: 60000
      }
    }
  }
}

10. 多 Agent 通信拓扑图

10.1 星型拓扑(推荐)

中心 Agent 协调所有通信:

10.2 网状拓扑

智能体之间直接通信:

10.3 分层拓扑

分层级的智能体结构:


11. 调试 ACP

11.1 查看 ACP 状态

bash
# 查看 ACP 连接
openclaw acp status

# 查看会话映射
openclaw acp sessions list

# 查看策略
openclaw acp policy list

# 查看绑定
openclaw acp bindings list

11.2 常见问题

问题原因解决方案
消息路由失败会话不存在创建会话映射 openclaw acp session create
策略拒绝权限不足更新策略配置 openclaw acp policy set
连接超时网络问题或目标 Agent 宕机检查网络配置,确认目标 Agent 正在运行
绑定丢失存储后端不可用检查存储配置,尝试重建绑定

12. 延伸阅读