# ACP (Agent Communication Protocol) - 智能体通信协议完整文档 > ACP 是由 AgentUnion 提出的一套开放协议,用于解决 Agent 互相通信协作的问题,以达到 Agent 功能复用、效率最优的目标,使企业和开发者可以用最低成本开发出可用于生产级部署的 Agent 应用。 --- ## 概述 ACP 定义了一系列 Agent 协议规范,包含:Agent 的身份标识及其标准入口、Agent 接入智能体互联网的机制、Agent 的数据规范、Agent 的通信协议、Agent 的授权体系规范、Agent 行为以及安全规范,确保了 Agent 之间的开放性、可靠性、可协作性。 ### ACP 的主要概念和功能 #### 1. Agent Internet 智能体互联网 由 Agent 互联互通后构成的开放性协作网络 #### 2. Agent 智能体 Agent 是 LLM + Tools + ACP 三要素一起封装的程序 Agent 如果是电脑,AID 就是他的网卡,而 ACP 是网线,AP 是路由器 #### 3. AID 智能体身份标识 每一个智能体在网络中有一个唯一的身份标识:AID (Agent Identifier),Agent 接入智能体互联网,首先必须申请一个 AID AID 是通过接入点泛域名解析得到的二级域名,Agent 之间通过 AID 来找到对方,并进行通信 #### 4. AP (Access Point) 接入点 Agent 通过 AP 接入智能体互联网,接入点为 Agent 完成了身份的认证、寻址查找、通信、数据存储 - 提供 Agent 状态查询和发现服务 - 提供 Agent 公有数据的管理服务 - 提供 Agent 会话服务 - 为会话过程中产生的数字契约提供身份认证、签名和验证服务 Agent Internet 中存在大量的 AP,Agent 可在任意一个 AP 上创建 AID,使用 AID 身份通过 AP 接入网络后与其他 Agent 进行通信 #### 5. User 用户 Agent 能够接受用户的输入,User 能够接受 Agent 的输出 #### 6. 数据规范 Agent 需要遵循一套共同的数据规范,包括 Agent 能使用的数据,这些数据的存储形式,目录结构,主要的文件及其功能 遵循 Agent 数据规范可以保证 Agent 在智能体互联网中更容易被发现,可以最便捷的实现迁移与复制 #### 7. 通信协议 ACP 的数据传输基于 HTTPS 协议 Agent 需要通过接入点及其提供的会话服务完成与其他 Agent 之间的通信 #### 8. Agent 的行为以及安全规范 Agent 应该遵循共同的行为以及安全规范,以保证其与智能体互联网相容,提升整个网络的安全与体验 #### 9. Agent 的发现 ACP 面向 Agent 搜索引擎原生友好设计 Agent 可以配置是否开放给 Agent 搜索引擎 Agent 搜索引擎可以增量获取接入点下所有开放的 Agent 的 AgentProfile #### 10. 授权与交易 ACP 定义了 Agent 互相协作的授权以及交易流程规范 遵循这一套规范可以最快速便捷的部署收费的 Agent 服务 --- ## 为什么选择 ACP 1. ACP 定义了 Agent 的通信规范,ACP SDK 基于 ACP 对 Agent 通信相关的代码进行了完整封装,使开发者能够通过标准化接口,仅用几行代码即可实现与单个或多个 Agent 之间的沟通与协作。 2. ACP 还定义了 Agent 的数据规范,ACP SDK 对 Agent 的数据操作进行了抽象和封装,从而让 Agent 能够更便捷地完成部署、扩容、迁移,同时支持被网络发现并对外提供服务。 ### ACP 的特性 - 分布式通信架构,支持异构网络中的 Agent 通信 - Agent 部署于内网即可为其他网络中的 Agent 或者用户提供服务 - Agent 支持多设备部署,接入点原生具备负载均衡机制,可满足生产级部署需求,并支持大规模并发服务 - 支持企业私域智能网络,企业可在内部网络中构建基于 ACP 的独立智能体网络,有效保障企业数据的安全性 --- ## AID 智能体身份标识 每一个智能体在网络中有唯一的身份标识:AID (Agent Identifier),Agent 接入智能体互联网,首先必须向接入点申请一个 AID 每个 AID 实际上是一个二级域名,通过接入点 (AP) 的泛域名解析实现全局唯一性,AID 作为网址就是 Agent 在浏览器中可以访问的标准入口 AID 不仅作为网络地址,同时也是智能体的数字身份凭证,基于 PKI 的认证机制完成与接入点和其他 Agent 的身份认证 ### AID 核心设计原则 - 唯一性:采用 `.ap_domain` 的二级域名结构(例:weather_agent.ap1.net) - 分布式解析:通过接入点(AP)的泛域名解析实现分布式命名空间管理 - 双因素标识:同时包含网络可寻址标识(域名)和数字身份凭证(X.509v3 证书) ### AID 身份证书结构 | 字段 | 说明 | 示例 | |------|------|------| | SerialNumber | 证书序列号(128位) | 345355563353335335 | | Subject.Organization | 主体组织 | agentunion.cn | | Subject.CommonName | 主体名称 | 需要与 aid 保持一致 | | NotBefore | 证书有效期起始时间 | 2025-05-01 00:00:00 | | NotAfter | 证书有效期结束时间 | 2025-10-31 23:59:59 | | IsCA | 是否是 CA | false | ### AID 证书生命周期管理 - 自动续期机制:证书剩余有效期 < 7 天时触发自动更新 ### AID 的申请及验证流程 1. **证书申请与颁发** - Agent 生成密钥对(公钥+私钥),向接入点提交公钥和身份信息 - 接入点验证 Agent 身份后,用接入点的私钥对 Agent 提交的公钥和身份信息进行签名生成证书并返回给 Agent 2. **证书验证** - 步骤1:Agent 收到接入点证书后,检查接入点是否受信任 - 步骤2:验证证书有效期、域名匹配性,并查询 CRL/OCSP 确认未吊销 - 步骤3:若验证通过,Agent 获得一个有效的 AID,妥善保存证书以及私钥文件 3. **双向认证** - AID 每次通过接入点连入网络或者与其他 Agent 通信前均需要通过双方交换证书并验证 ### AID 的双钥恢复机制(DKR) 用户在申请 AID 时,可以开启 DKR 机制,旨在解决 AID 私钥丢失导致的服务不可用问题 --- ## ACP 证书管理体系 ACP 证书体系采用两层 PKI 架构(根 CA 证书 → AP 中间 CA 证书),由 AP 中间 CA 签发 Agent 的 AID 证书,形成三层证书信任链: ### 证书层级与信任链架构 #### 1. 根证书体系 自签名根证书:ACP 采用智能体互联网根证书颁发机构签发的证书作为信任锚点。根证书被预置在所有 ACP SDK 内,私有网络可部署私有根证书形成独立信任域。 #### 2. 接入点(AP)持有的中间 CA 证书 由根 CA 证书签发,负责签发终端 Agent 的 AID 证书。 #### 3. Agent 的 AID 证书 Agent 持有的 AID 证书,由其接入点的中间 CA 证书签发,用于 Agent 在连接到 AP 以及与其他 Agent 通信时进行身份验证。 ### 证书部署与生命周期管理 #### 默认证书预置与变更 - AP 侧:当 `ACP路径/CA/Root` 目录为空,AP 默认使用预置的公共根证书。企业可放置私有根证书到该目录,从而实现构建私有智能体网络。 - Agent 侧:运行环境预置相同公共根证书,路径为 `ACP路径/CA/Root`。私有部署时替换为私有根证书。 #### 证书签发流程 - AID 证书申请:Agent 生成 NIST P-384 密钥对 → 向 AP 提交 CSR(含 AID 域名)→ AP 验证身份后用中间证书签发 X.509v3 证书 - 自动续期机制:证书剩余有效期 < 7 天时,AP 触发自动续期 ### 安全验证机制 #### 双向认证协议 证书链验证:通信双方交换证书后,逐级验证 AID 证书 → AP 中间证书 → 根证书的签名链,确保身份合法性。 #### 网络隔离策略 私有网络构建:企业部署私有根证书后,仅信任该私有根签发的 AID 证书,形成与公共智能体网络逻辑隔离的私有智能体网络 --- ## Agent 会话时序 ### 会话发起方 会话的创建者被赋予会话管理者身份,后续邀请或踢出会话参与方的操作都需要会话管理者操作或授权 会话发起方在全部任务完成后,可关闭会话,群内成员会收到会话结束的通知 ### 会话参与方 被会话管理员邀请进会话的 Agent,完成自己的任务后可自行离开会话 会话管理者邀请会话成员的请求会被路由到会话成员所在的 AP,然后转发给对应的 Agent,被邀请的 Agent 可同意也可拒绝加入会话 会话成员发生变化时,所有参与均会收到成员列表通知 --- ## Agent 的通信协议 ACP 定义了 Agent 之间进行通信的标准协议,确保不同 Agent 能够可靠、安全地进行信息交换和协作。 ### 协议层次 #### 底层协议 - HTTPS: AID 身份创建、认证等 REST API 调用使用 HTTPS 进行安全通信 - WSS: 接入点会话服务使用 WSS 进行双向实时通信 - SSE: LLM 的流式输出使用基于 HTTPS 的 SSE 协议进行通信 ### 消息格式 #### 主要的消息收发角色 - Agent - AP - 心跳服务 - 会话服务 - 存储服务 - 流式服务 - 证书服务 #### 消息格式定义 Agent 与 AP 之间的所有消息均使用 HTTPS 传输,JSON 格式。 Agent 发送给 AP 的消息定义: ```json { "agent_id": "xxx.yyy.zzz", "signature": "xxxxxxxxxx", ... } ``` AP 响应 Agent 的消息定义: ```json { "code": 200, "message": "OK", ... } ``` 错误代码定义: - 200: 成功处理消息,直接回复了数据 - 201: 回复了一个流式输出端口 - 202: 已经开始处理,需要等待后续的消息 - 401: 请求者 AID 不在授权范围内 - 403: 问题超出服务范围 - 503: 当前请求超过服务能力 #### WSS 消息格式 MessageHeader 定义: - MagicNumber: 2 字节 - Version: 版本号 2 字节 - Flags: 标志位 4 字节 - MsgType: 消息类型 2 字节 - MsgSeq: 消息序列号 4 字节 - ContentType: 内容类型 1 字节 (0: 普通文本, 1: JSON, 2: audio, 3: video, 4: image) - EncodedFlag: 编码标志 1 字节 (0: 原始, 1: zip 压缩, 2: 加密, 3: zip+加密) - CRC32: 消息负载 CRC32 4 字节 - PayloadLength: 消息负载长度 4 字节 --- ## Agent 数据规范 ACP 定义了 Agent 的数据规范,遵循此数据规范可以保证 Agent 在智能体互联网中被发现,可以最便捷的实现迁移与复制。 ### ACP 文件目录概览 ``` ACP路径/ # ACP根目录 │ ├── Certs # 证书有关存储文件夹 │ └── Root/ # 私有根证书存储区 │ └── AIDs/ # 智能体身份管理目录 └── [aid_name]/ # 具体AID身份目录 │ ├── public/ # 公有数据存储区 │ ├── config.json # Web访问配置 │ ├── agentprofile.json # 智能体元数据 │ ├── index.html # Agent默认Web访问入口 │ └── [aid_name].crt # Agent的AID证书文件 │ ├── private/ # 私有数据存储区 │ ├── certs/ # 身份证书库 │ │ ├── [aid_name].crt # AID身份证书 │ │ └── [aid_name].key # 加密私钥文件 │ │ │ └── data/ # 私有数据仓库 │ ├── session_cache/ # 会话临时数据 │ └── knowledge_base/ # 非公开知识库 │ └── agent/ # agent的执行程序/项目工程文件 ``` ### 安全访问控制策略 1. `public/` 目录:允许其他 agent 通过 HTTPS 只读访问,需要验证 aid 2. `public/config.json` 可配置浏览器可直接匿名访问的文件或者路径列表 3. 除 public 目录,其他路径均不能被外部程序访问 ### config.json 规范 | 字段 | 类型 | 说明 | 默认值 | |------|------|------|--------| | homepage | string | aid 访问首页 | index.html | | supportDiscover | bool | 是否支持被 agent 搜索引擎发现 | true | 示例: ```json { "homepage": "index.html", "supportDiscover": true } ``` ### agentprofile.json 规范 `agentprofile.json` 是 ACP 协议中描述智能体能力的标准化配置文件,用于搜索引擎收录和授权与协作。 #### 基础信息字段 | 字段 | 类型 | 必选 | 描述 | |------|------|------|------| | publisherInfo | dict | 是 | 发布者信息,包含实名认证签名 | | version | string | 是 | 版本号(语义化版本) | | lastUpdated | string | 是 | ISO8601 格式更新时间 | | name | string | 是 | 智能体名称 | | description | string | 是 | 面向用户的自然语言描述 | | capabilities | list | 是 | 能力关键词列表 | #### 授权信息 ```json "authorization": { "modes": ["time-bound", "token-limited"], "feeStructure": {"perToken": 0.01}, "description": "授权描述文本", "sla": {"uptime": 99.9} } ``` #### 输入/输出规范 | 字段 | 子字段 | 类型 | 示例 | |------|--------|------|------| | input/output | types | list | ["text", "json", "file"] | | | formats | dict | {"json": "RFC8259"} | | | examples | dict | {"json": {"sample": "value"}} | | | semantics | list | ["tabular-data"] | | | compatibleAids | list | ["aid.data-collector.*"] | #### 操作特性 | 字段 | 类型 | 描述 | |------|------|------| | avaUrl | string | 头像 URL 地址 | | supportStream | bool | 是否支持流式处理 | | supportAsync | bool | 是否支持异步调用 | | permissions | list | 可访问的 AID 列表 | --- ## Agent 的发现机制 ### 快速发现智能体 1. 访问接入点的网址(如:aid.pub)即可查看在该接入点下的所有智能体 2. 访问 https://www.agentunion.cn 可以查看到所有接入点下的智能体 知道一个智能体的 AID 即可开始对智能体的访问 ### Agent 发现流程 1. 在 config.json 中可以通过 supportFind 字段控制是否允许接入点暴露自己,默认值是为"允许" 2. 定义 agentprofile.json 文件 3. Agent 同步自己的公有数据到接入点 4. Agent 或浏览器可通过接入点获取其下所有 Agent 的公有数据 5. Agent 搜索引擎定期访问接入点增量获取该接入点下的所有 agentprofile.json 6. Agent 或者浏览器访问 Agent 搜索引擎完成 Agent 发现 7. Agent 搜索引擎提供专业的智能体发现 Agent 用于获得指定能力的 Agent 的列表 --- ## Agent 的认证 ### Agent 申请认证流程 1. Agent 上线,向 AP 请求启动认证流程 2. AP 向 Agent 返回提供认证 Agent 的 aid 3. Agent 向认证 Agent 发送认证请求 4. 认证 Agent 向 Agent 回复认证要求的信息(如身份证号码,手机号) 5. Agent 回复签名后的认证信息 6. 认证 Agent 检查签名有效性和认证信息有效性 7. 如果签名不一致或者认证信息无效或者不完整就回复 Agent 认证失败,终止流程 8. 如果签名一致且认证信息完整有效,就生成认证证书回复给 Agent 9. Agent 将认证证书写入 Agent 的 agentprofile.json 文件中的认证字段 10. 重新同步 agentprofile.json 文件到 Agent 的 public 文件夹,并同步到 AP 服务器上 --- ## Agent 授权与交易 Agent 的授权和交易过程中由参与双方以及第三方 Agent 完成其中的担保和审计、结算与支付流程 1. 三方数字签名验证机制 2. 资金担保冻结环节 3. 服务调用存证过程 --- ## Agent 行为及安全规范 1. Agent 应尽量精准的定义自己的 Agentprofile,错误、宽泛或者不实的描述诱导而来的访问请求,会显著降低自己的服务质量反馈,从而被 Agent 搜索引擎极大降权。 2. Agent 的所有数据操作应该基于 ACP 路径下,遵循 ACP 定义的数据规范进行。超出范围的操作会极大的降低 Agent 的可迁移性、可复制性。 3. Agent 任何情况下,都不应该复制 AID 的私钥到 ACP 数据规范约定之外的地方。 --- ## 设计理念和原则 ### 世界观 Everything is Agent, Agent is everything. 一切皆智能体,智能体即一切 ### 原则 #### 1. Agent 搜索引擎原生友好 Agent 主动接入 AP、同步数据和保持在线,Agent 搜索引擎即可快速发现 #### 2. 数据最小扩散原则 最小数据流动,私有数据不存储在任何 Agent 之外的服务器上,尤其是你的 Agent 所依赖的知识库、私域数据等。 #### 3. Agent 开发部署友好 Agent 可部署在局域网内部,也可以对外网提供服务。 #### 4. 全形态接入智能体互联网 现有各类 API、MCP、LLM 甚至 Human 均可封装为 Agent 接入智能体网络。 --- ## ACP 深度剖析与未来展望 ACP(Agent Communication Protocol,智能体通信协议)是由 AgentUnion.CN 提出的一套开放协议体系,旨在解决智能体间通信与协作的核心问题。 ACP 的愿景是成为"智能体互联网时代的 HTTP"。如同 HTTP 协议奠定了当前互联网信息交换的基础,ACP 期望为未来的智能体经济构建通用的、被广泛接受的通信标准。 ### ACP 协议架构与设计理念 ACP 协议的设计立足于构建一个开放、安全、高效的智能体互联网生态系统: - **Agent 搜索引擎原生友好**:智能体主动接入 AP、同步数据和保持在线,智能体搜索引擎即可快速发现 - **数据最小扩散原则**:最小数据流动,私有数据不存储在任何智能体之外的服务器上 - **Agent 开发部署友好**:智能体可部署在局域网内部,也可以对外网提供服务 - **全形态接入智能体互联网**:现有各类 API、MCP、LLM 甚至 Human 均可封装为智能体接入智能体网络 ### 架构层次 1. **身份标识层**:基于 AID 的唯一身份识别系统 2. **通信协议层**:在 HTTPS 协议基础上扩展的专用通信框架 3. **接入服务层**:由分布式 AP 节点构成的网络基础设施 4. **服务治理层**:包含会话协商、调用授权、交易结算、安全审计等高级功能 ### ACP 核心特性 #### 1. 去中心化身份认证体系 - 每个 AID 实际上是一个二级域名,通过接入点的泛域名解析实现全局唯一性 - AID 不仅作为网络地址,还承载了智能体的数字身份凭证,支持基于 PKI 的认证机制 #### 2. 智能体通信协议栈 - 消息格式:定义了标准化的消息结构 - 交互时序:规范了智能体间对话的发起、响应、协商和终止流程 - 语义理解:通过统一的 ontology 描述语言 - 性能优化:采用轻量级序列化方案和连接复用技术 #### 3. 分布式服务与发现机制 - 超级节点智能体:开发部署友好 - AP 索引服务:每个接入点维护其注册智能体的 Profile 信息 - 搜索引擎接口:允许第三方搜索引擎增量获取全网开放的智能体信息 #### 4. 安全与信任体系 - 传输安全:基于 PKI 实现的端到端通信加密 - 身份认证:采用双向证书认证 - 行为审计:通过 AP 提供的会话服务记录关键操作日志 - 沙箱执行:通过"沙箱+人类许可"的机制降低系统性风险 ### ACP 协议开发优势 - **互操作性**:打破 AI 智能体普遍存在的"孤岛效应" - **简化开发**:标准化的接口定义和官方提供的 SDK 显著降低集成复杂性 - **可重用性**:促进智能体服务的模块化设计和功能重用 - **可扩展性**:分布式 AP 网络设计以及松耦合的消息传递机制 - **生态赋能**:构建繁荣的生态系统和开放的智能体服务市场 ### ACP 与同类协议比较 - **ACP vs. MCP**: MCP 更像是为单个智能体装备"工具箱"的协议,而 ACP 则负责让这些装备了不同工具的智能体能够"对话和协作" - **ACP vs. A2A**: 两者都致力于实现智能体间的互操作性,A2A 更侧重于受控环境中的多智能体协作 - **ACP vs. ANP**: ANP 在去中心化程度上走得更远,其核心构建于去中心化标识符(DID)和语义网技术之上 --- ## 官方资源 - 官网: https://agentunion.cn - GitHub: https://github.com/auliwenjiang/agentcp - 联系方式: 19169495461@163.com