乐于分享
好东西不私藏

深入理解 OpenClaw 的 ACP 协议:从概念到实战

深入理解 OpenClaw 的 ACP 协议:从概念到实战
在 AI 编程工具百花齐放的今天,如何把不同的工具整合到一起,让它们协同工作,成为了开发者们关心的话题。OpenClaw 作为一个开源的 AI Agent 网关框架,通过 ACP 协议实现了与外部编码工具的深度融合。本文将深入浅出地讲解 ACP 协议的核心概念,以及如何在 OpenClaw 中使用它。

## 一、OpenClaw 是什么

OpenClaw 是一个开源的 AI Agent 网关框架。简单来说,它就像是一个"指挥中心",可以连接各种 AI 模型和工具,让你通过聊天软件(如 Discord、Telegram、飞书)与 AI 进行交互。
OpenClaw 的核心架构分为两部分:
  • Body(网关):负责接收消息和执行工具
  • Brain(智能体):负责 AI 推理
这种分离式设计让 OpenClaw 具有很高的灵活性。比如,你可以把网关跑在树莓派上控制家电,而负责推理的 AI 跑在配备 4090 显卡的高性能工作站上。

## 二、什么是 ACP(Agent Communication Protocol)

ACP 的全称是 Agent Communication Protocol,即"代理通信协议"。

### 协议是什么?

在理解 ACP 之前,我们需要先理解什么是"协议"。协议就像是人与人之间的语言约定。比如两个人都说中文,就能互相理解;如果一个是中文一个是法语,就无法沟通。
计算机系统中的协议也是类似的道理。当两个系统需要通信时,它们必须遵循相同的协议,才能正确地交换信息。

### ACP 的定义

ACP 是 OpenClaw 设计的一套标准化通信协议,专门用于 OpenClaw 与外部专业编码工具之间的通信。
可以把 ACP 理解为:
  • 一套"语言规范":规定了 OpenClaw 和外部工具之间如何对话
  • 一套"消息格式":规定了消息应该怎么组织、怎么发送
  • 一套"行为约定":规定了什么时候该做什么、如何响应

### 为什么需要 ACP?

想象一下这个场景:
你想让 AI 帮你写代码。你熟悉的 AI 助手(OpenClaw)可以帮你处理日常事务,但写代码这种专业任务,你希望交给更专业的工具——比如 Codex 或 Claude Code。
问题是:OpenClaw 和 Codex 是两个完全不同的系统,它们怎么沟通呢?
这就是 ACP 的作用:
  • 它让 OpenClaw 能够"指挥"外部编码工具
  • 它让外部工具能够"汇报"执行结果
  • 它确保双方的通信是有序、可靠的

### ACP 的核心功能

  1. 任务派发:OpenClaw 将编码任务发送给外部工具
  2. 结果回收:外部工具将执行结果返回给 OpenClaw
  3. 状态同步:实时同步任务执行状态
  4. 会话管理:维持与外部工具的通信会话

## 三、什么是 ACPx

理解了 ACP 之后,我们再来看 ACPx。

### ACP 与 ACPx 的关系

这里有一个容易混淆的概念,需要特别注意:
  • ACP 是一套"协议规范"(类似于 HTTP、TCP/IP 这样的标准)
  • ACPx 是这套协议的"具体实现"
打个比方:
  • ACP 就像是"普通话标准"——规定了什么样的发音是正确的
  • ACPx 就像是"一个会说普通话的人"——真正实现了这个标准

### ACPx 的全称和含义

ACPx 的全称是 Agent Control Protocol eXtended(代理控制协议扩展)。
它是 OpenClaw 官方提供的 ACP 协议的后端实现。也就是说,OpenClaw 通过 ACPx 这个组件,才能真正地使用 ACP 协议与外部工具通信。

### ACPx 的核心功能

  1. 启动与调度:启动外部 AI Agent(如 Codex、Claude Code)
  2. 监控管理:监控外部 Agent 的运行状态
  3. 持久会话(Persistent Session):保持与外部工具的长期连接

### 为什么叫"扩展"(eXtended)?

ACPx 在 ACP 协议的基础上,增加了一些扩展功能:
  • 持久会话管理
  • 异步任务调度
  • 多工具协同
  • 线程绑定
这些扩展功能让 ACPx 比基础的 ACP 协议更加强大和实用。

## 四、什么是 Codex

在理解了三者关系之后,我们再来看 Codex。
Codex 是 OpenAI 推出的代码生成模型(基于 GPT-4)。它可以通过命令行工具(CLI)调用,专门用于代码生成、修复、重构等任务。
在 OpenClaw 的生态中,Codex 是作为一个"外部 Agent"存在的。也就是说:
  • OpenClaw 是"指挥中心"
  • ACP 是"通信语言"
  • ACPx 是"翻译官"
  • Codex 是"执行者"

## 五、四者之间的关系

让我们用一个完整的流程来理解它们的关系:
  1. 你在聊天软件中对 OpenClaw 说:"帮我写一个登录功能"
  2. OpenClaw 判断这是一个编程任务,决定调用 Codex
  3. OpenClaw 通过 ACP 协议(规范)组织消息
  4. ACPx(实现)将消息转换为 Codex 能理解的格式,并发送给 Codex
  5. Codex 执行任务,生成代码
  6. Codex 将结果返回给 ACPx
  7. ACPx 通过 ACP 协议将结果传递给 OpenClaw
  8. OpenClaw 将结果展示给你
在这个流程中:
  • ACP 始终是一套"规范",不是实体
  • ACPx 是 OpenClaw 的一个组件/插件,负责实现 ACP 协议
  • Codex 是独立的第三方工具,通过 ACP 协议与 OpenClaw 协作

## 六、如何在 OpenClaw 中使用 ACP

现在我们已经理解了概念,来看看具体的配置步骤。

### 步骤 1:安装 ACPx 插件

ACPx 是 OpenClaw 的插件,需要先安装:
openclaw plugins install acpx
安装后验证:
openclaw plugins list | grep acpx
如果看到类似 "ACPX Runtime │ acpx │ loaded" 的输出,说明安装成功。

### 步骤 2:配置 ACP

编辑 OpenClaw 的配置文件 ~/.openclaw/openclaw.json:
{
"acp": {
"enabled": true,
"backend": "acpx",
"defaultAgent": "codex",
"allowedAgents": ["codex", "claude"]
}
}
配置说明:
  • enabled: 启用 ACP 功能
  • backend: 使用 acpx 作为 ACP 的实现
  • defaultAgent: 默认调用的外部工具
  • allowedAgents: 允许使用的外部工具列表

### 步骤 3:配置外部工具

创建 ~/.acpx/config.json,告诉 ACPx 如何找到 Codex:
{
"agents": {
"codex": {
"command": "codex",
"working_dir": "~/projects"
}
}
}

### 步骤 4:使用

配置完成后,你就可以通过 OpenClaw 调用 Codex 了:
方式一:自然语言
"用 Codex 实现一个用户登录功能"
方式二:命令
/acp spawn codex --task "修复这个 bug"

## 七、ACP vs Sub-Agent:如何选择

OpenClaw 提供了两种调用外部工具的方式,需要区分清楚:
| 特性 | Sub-Agent | ACP(通过 ACPx) |
|------|-----------|------------------|
| 本质 | OpenClaw 内部的子进程 | 外部独立工具 |
| 会话 | 短,任务结束即清理 | 长,可持久保持 |
| 适用 | 轻量任务 | 复杂编码项目 |
| 命令 | /subagents | /acp |
选择建议:
- 简单任务用 Sub-Agent
- 复杂编程任务用 ACP/ACPx + Codex

## 八、总结

本文我们讲解了:
  1. OpenClaw 是 AI Agent 网关框架
  2. ACP 是一套通信协议(规范)
  3. ACPx 是 ACP 协议的具体实现(组件)
  4. Codex 是外部编码工具
  5. 四者通过 ACP 协议协同工作
关键点:
  • ACP 是"规范",不是实体
  • ACPx 是 OpenClaw 的组件,实现了 ACP 规范
  • Codex 是独立工具,通过 ACP 协议与 OpenClaw 通信
理解了这个架构,你就能灵活运用 OpenClaw 的各种功能,让 AI 真正成为你的编程助手。