背景:
我组织了一组Agent,模拟一家软件公司开发一个新的系统,最多有47个Agent。
一般我只跟CEO沟通,让他组织其他Agent进行开发。
问题:
在OpenClaw的主机上,我还安装了Claude Code,并配置了不同的API Key。我从token消耗看,大部分开发都任务都在OpenClaw里面进行,虽然有coding agent,但基本没有使用claude。
关键是OpenClaw开发的时候不仅token消耗大,而且效果还不够好,遇到技术问题,我还得手动开启Claude Code,让CC帮我解决问题。
解决方案:让OpenClaw能主动/自动调用Claude Code。
ACP和ACPX的基础概念
ACP:Agent Client Protocol
官方介绍是:The Agent Client Protocol (ACP) standardizes communication between code editors (interactive programs for viewing and editing source code) and coding agents (programs that use generative AI to autonomously modify code).
翻译过来:Agent 客户端协议(ACP)标准化了代码编辑器(用于查看和编辑源代码的交互式程序)与编码代理(使用生成式 AI 自主修改代码的程序)之间的通信。
当我们用Claude Code的命令行工具时,感觉不到ACP。但当我们用VS Code或IDEA时,由这些IDE调用Claude Code时,应该就有ACP的影子(具体实现可以不管)。
其他一切客户端,比如OpenClaw的聊天界面,想与Claude Code交互时,也可以用到ACP协议。这就引出ACPX。
ACPX:
ACPX(AgentClientProtocolX)是一个无头CLI客户端,通过结构化协议实现AI助手间的协作通信,支持OpenClaw与ClaudeCode等代理间的标准化、双向任务委派、会话共享与并行工作流。这是官方的说法,可能有点绕。
当你全部看完这篇文章,并完成操作支后,就会感觉,通过ACPX,可以直接调用Claude,就像调用其他的智能体一样。你通过聊天界面,不是在跟OpenClaw的某个智能体聊天,而是直接与Claude聊天,让Claude Code操作你的电脑,帮你做任何事。这间接实现了通过飞书控制Claude Code操作电脑。
总结来说:ACPX 是 ACP 的具体实现。
在OpenClaw中的安装步骤
acpx包括2个工具,一个是acpx插件(openclaw的集成层),一个时acpx的npm包(实际功能实现层)。两个都装了,OpenClaw 才能无缝使用 acpx 的 ACP(Agent Client Protocol)功能。
安装OpenClaw的acpx插件
openclaw plugins install @openclaw/acpx
# 安装到这个目录中~/.npm-global/lib/node_modules/openclaw/dist/extensions/acpx/
# 使用openclaw plugins list 可以查看到插件信息
安装好插件后,还需要做配置,建议如下:
"plugins": {
"allow": [
"acpx"
],
"entries": {
"acpx": {
"enabled": true,
"config": {
"command": "acpx",
"permissionMode": "approve-all" # 如果不这样,Claude code会获取不到权限,导致什么页干不了
}
}
}
},
"acp": {
"enabled": true,
"backend": "acpx",
"defaultAgent": "claude",
"allowedAgents": [ # 根据自己情况配置
"claude",
"codex",
"cursor",
"gemini",
"pi"
]
},
安装acpx,参考的时acpx的github
# 安装到 ~/.npm-global/lib/node_modules/acpx
npm install -g acpx@latest
# 安装 claude 的skill,这条命令在~/.claude下面安装acpx的skill
npx acpx@latest --skill install acpx
ACP使用指引
ACPX无法在OpenClaw的网页版聊天窗口中使用,要在飞书中使用。
所以我在飞书的机器人聊天窗口输入如下命令,建立一个持久保持的会话。此时我的这个机器人,就直连上OpenClaw所在机器的Claude Code上了。所有我们之前交流的信息,CC都不知道。除非明确传递给了Claude Code。
开启会话
/acp spawn claude --mode persistent --thread auto
效果:

在飞书中输入/acp status,会得到如下反馈:
session: agent:claude:acp:cee86339-9f98-4269-9fec-477a3a5bca6d
backend: acpx
agent: claude
acpx session id: f8d9115f-3e61-4ea1-a552-a54898378698
acpx record id: f8d9115f-3e61-4ea1-a552-a54898378698
sessionMode: persistent
state: idle
runtimeOptions: cwd=/home/band/.openclaw/workspace
capabilities: session/set_config_option, session/set_mode, session/status
lastActivityAt: 2026-04-05T14:59:26.563Z
runtime: status=dead acpxRecordId=f8d9115f-3e61-4ea1-a552-a54898378698 acpxSessionId=f8d9115f-3e61-4ea1-a552-a54898378698 pid=30446
runtimeDetails: {"action":"status_snapshot","status":"dead","pid":30446,"summary":"queue owner unavailable","model":"default","availableModels":["default","sonnet[1m]","opus[1m]","haiku"],"acpxRecordId":"f8d9115f-3e61-4ea1-a552-a54898378698","acpxSessionId":"f8d9115f-3e61-4ea1-a552-a54898378698"}
在网页聊天窗口,能找到和Claude Code对应的会话,但是在飞书上发的消息,这里都看不到。在这个会话中,发消息,也是发给Claude Code,Claude Code也能处理。但是问题就是飞书渠道和网页渠道都收不到彼此的消息,只有Claude Code都能收到。
关闭会话
# 在飞书窗口发送
/acp close
# 收到回复
✅ Closed ACP session agent:claude:acp:cee86339-9f98-4269-9fec-477a3a5bca6d. Removed 1 binding.
之后在飞书聊天,又是跟原来的OpenClaw Agent了。
参考信息:
ACP:https://github.com/agentclientprotocol/
OpenClaw官网关于apc-agents的说明:https://docs.openclaw.ai/tools/acp-agents
acpx github地址:https://github.com/openclaw/acpx